From f00ec26efde9d37a0afb967f357668a6c85661b9 Mon Sep 17 00:00:00 2001 From: Oliver Date: Mon, 25 Oct 2021 13:09:06 +1100 Subject: [PATCH 001/129] Create SalesOrderShipment model --- .../migrations/0053_salesordershipment.py | 29 +++++++++ InvenTree/order/models.py | 62 +++++++++++++++++++ 2 files changed, 91 insertions(+) create mode 100644 InvenTree/order/migrations/0053_salesordershipment.py diff --git a/InvenTree/order/migrations/0053_salesordershipment.py b/InvenTree/order/migrations/0053_salesordershipment.py new file mode 100644 index 0000000000..c981e9c4c3 --- /dev/null +++ b/InvenTree/order/migrations/0053_salesordershipment.py @@ -0,0 +1,29 @@ +# Generated by Django 3.2.5 on 2021-10-25 02:08 + +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion +import markdownx.models + + +class Migration(migrations.Migration): + + dependencies = [ + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ('order', '0052_auto_20211014_0631'), + ] + + operations = [ + migrations.CreateModel( + name='SalesOrderShipment', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('status', models.PositiveIntegerField(choices=[(10, 'Pending'), (20, 'Shipped'), (40, 'Cancelled'), (50, 'Lost'), (60, 'Returned')], default=10, help_text='Shipment status', verbose_name='Status')), + ('shipment_date', models.DateField(blank=True, help_text='Date of shipment', null=True, verbose_name='Shipment Date')), + ('reference', models.CharField(blank=True, help_text='Shipment reference', max_length=100, verbose_name='Reference')), + ('notes', markdownx.models.MarkdownxField(blank=True, help_text='Shipment notes', verbose_name='Notes')), + ('checked_by', models.ForeignKey(blank=True, help_text='User who checked this shipment', null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL, verbose_name='Checked By')), + ('order', models.ForeignKey(help_text='Sales Order', on_delete=django.db.models.deletion.CASCADE, related_name='shipments', to='order.salesorder', verbose_name='Order')), + ], + ), + ] diff --git a/InvenTree/order/models.py b/InvenTree/order/models.py index 0c45e3746a..be75cf9821 100644 --- a/InvenTree/order/models.py +++ b/InvenTree/order/models.py @@ -903,6 +903,68 @@ class SalesOrderLineItem(OrderLineItem): return self.allocated_quantity() > self.quantity +class SalesOrderShipment(models.Model): + """ + The SalesOrderShipment model represents a physical shipment made against a SalesOrder. + + - Points to a single SalesOrder object + - Multiple SalesOrderAllocation objects point to a particular SalesOrderShipment + - When a given SalesOrderShipment is "shipped", stock items are removed from stock + + Attributes: + order: SalesOrder reference + status: Status of this shipment (see SalesOrderStatus) + shipment_date: Date this shipment was "shipped" (or null) + checked_by: User reference field indicating who checked this order + reference: Custom reference text for this shipment (e.g. consignment number?) + notes: Custom notes field for this shipment + """ + + order = models.ForeignKey( + SalesOrder, + on_delete=models.CASCADE, + blank=False, null=False, + related_name='shipments', + verbose_name=_('Order'), + help_text=_('Sales Order'), + ) + + status = models.PositiveIntegerField( + default=SalesOrderStatus.PENDING, + choices=SalesOrderStatus.items(), + verbose_name=_('Status'), + help_text=_('Shipment status'), + ) + + shipment_date = models.DateField( + null=True, blank=True, + verbose_name=_('Shipment Date'), + help_text=_('Date of shipment'), + ) + + checked_by = models.ForeignKey( + User, + on_delete=models.SET_NULL, + blank=True, null=True, + verbose_name=_('Checked By'), + help_text=_('User who checked this shipment'), + related_name='+', + ) + + reference = models.CharField( + max_length=100, + blank=True, + verbose_name=('Reference'), + help_text=_('Shipment reference'), + ) + + notes = MarkdownxField( + blank=True, + verbose_name=_('Notes'), + help_text=_('Shipment notes'), + ) + + class SalesOrderAllocation(models.Model): """ This model is used to 'allocate' stock items to a SalesOrder. From 2f7e0974b7e8643e5d508f06f3e5e049f537f081 Mon Sep 17 00:00:00 2001 From: Oliver Date: Mon, 25 Oct 2021 17:42:56 +1100 Subject: [PATCH 002/129] Add 'shipment' foreign-key field to SalesOrderAllocation model --- .../0054_salesorderallocation_shipment.py | 19 +++++++++++++++++++ InvenTree/order/models.py | 14 ++++++++++++++ InvenTree/users/models.py | 3 ++- 3 files changed, 35 insertions(+), 1 deletion(-) create mode 100644 InvenTree/order/migrations/0054_salesorderallocation_shipment.py diff --git a/InvenTree/order/migrations/0054_salesorderallocation_shipment.py b/InvenTree/order/migrations/0054_salesorderallocation_shipment.py new file mode 100644 index 0000000000..cfb74dd859 --- /dev/null +++ b/InvenTree/order/migrations/0054_salesorderallocation_shipment.py @@ -0,0 +1,19 @@ +# Generated by Django 3.2.5 on 2021-10-25 06:42 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('order', '0053_salesordershipment'), + ] + + operations = [ + migrations.AddField( + model_name='salesorderallocation', + name='shipment', + field=models.ForeignKey(blank=True, help_text='Sales order shipment reference', null=True, on_delete=django.db.models.deletion.CASCADE, to='order.salesordershipment', verbose_name='Shipment'), + ), + ] diff --git a/InvenTree/order/models.py b/InvenTree/order/models.py index be75cf9821..0566ec9312 100644 --- a/InvenTree/order/models.py +++ b/InvenTree/order/models.py @@ -973,6 +973,7 @@ class SalesOrderAllocation(models.Model): Attributes: line: SalesOrderLineItem reference + shipment: SalesOrderShipment reference item: StockItem reference quantity: Quantity to take from the StockItem @@ -1028,6 +1029,11 @@ class SalesOrderAllocation(models.Model): if self.item.serial and not self.quantity == 1: errors['quantity'] = _('Quantity must be 1 for serialized stock item') + + + # TODO: Ensure that the "shipment" points to the same "order"! + + if len(errors) > 0: raise ValidationError(errors) @@ -1037,6 +1043,14 @@ class SalesOrderAllocation(models.Model): verbose_name=_('Line'), related_name='allocations') + shipment = models.ForeignKey( + SalesOrderShipment, + on_delete=models.CASCADE, + null=True, blank=True, + verbose_name=_('Shipment'), + help_text=_('Sales order shipment reference'), + ) + item = models.ForeignKey( 'stock.StockItem', on_delete=models.CASCADE, diff --git a/InvenTree/users/models.py b/InvenTree/users/models.py index d31f2a9905..88052fd40d 100644 --- a/InvenTree/users/models.py +++ b/InvenTree/users/models.py @@ -132,9 +132,10 @@ class RuleSet(models.Model): 'sales_order': [ 'company_company', 'order_salesorder', + 'order_salesorderallocation', 'order_salesorderattachment', 'order_salesorderlineitem', - 'order_salesorderallocation', + 'order_salesordershipment', ] } From ce5b47460a79c132235b4d9a722dac24095f4d47 Mon Sep 17 00:00:00 2001 From: Oliver Date: Mon, 25 Oct 2021 22:35:27 +1100 Subject: [PATCH 003/129] Added data migration for existing SalesOrder instances - If a SalesOrder is "PENDING" or there are allocations available, a shipment is created --- .../migrations/0053_salesordershipment.py | 1 - .../migrations/0055_auto_20211025_0645.py | 89 +++++++++++++++++++ InvenTree/order/models.py | 7 -- InvenTree/order/test_migrations.py | 47 ++++++++++ InvenTree/templates/js/translated/order.js | 1 + 5 files changed, 137 insertions(+), 8 deletions(-) create mode 100644 InvenTree/order/migrations/0055_auto_20211025_0645.py diff --git a/InvenTree/order/migrations/0053_salesordershipment.py b/InvenTree/order/migrations/0053_salesordershipment.py index c981e9c4c3..e20a95e3f8 100644 --- a/InvenTree/order/migrations/0053_salesordershipment.py +++ b/InvenTree/order/migrations/0053_salesordershipment.py @@ -18,7 +18,6 @@ class Migration(migrations.Migration): name='SalesOrderShipment', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('status', models.PositiveIntegerField(choices=[(10, 'Pending'), (20, 'Shipped'), (40, 'Cancelled'), (50, 'Lost'), (60, 'Returned')], default=10, help_text='Shipment status', verbose_name='Status')), ('shipment_date', models.DateField(blank=True, help_text='Date of shipment', null=True, verbose_name='Shipment Date')), ('reference', models.CharField(blank=True, help_text='Shipment reference', max_length=100, verbose_name='Reference')), ('notes', markdownx.models.MarkdownxField(blank=True, help_text='Shipment notes', verbose_name='Notes')), diff --git a/InvenTree/order/migrations/0055_auto_20211025_0645.py b/InvenTree/order/migrations/0055_auto_20211025_0645.py new file mode 100644 index 0000000000..13ea184cfe --- /dev/null +++ b/InvenTree/order/migrations/0055_auto_20211025_0645.py @@ -0,0 +1,89 @@ +# Generated by Django 3.2.5 on 2021-10-25 06:45 + +from django.db import migrations + + +from InvenTree.status_codes import SalesOrderStatus + + +def add_shipment(apps, schema_editor): + """ + Create a SalesOrderShipment for each existing SalesOrder instance. + + Any "allocations" are marked against that shipment. + + For each existing SalesOrder instance, we create a default SalesOrderShipment, + and associate each SalesOrderAllocation with this shipment + """ + + Allocation = apps.get_model('order', 'salesorderallocation') + SalesOrder = apps.get_model('order', 'salesorder') + Shipment = apps.get_model('order', 'salesordershipment') + + n = 0 + + for order in SalesOrder.objects.all(): + + """ + We only create an automatic shipment for "PENDING" orders, + as SalesOrderAllocations were historically deleted for "SHIPPED" or "CANCELLED" orders + """ + + allocations = Allocation.objects.filter( + line__order=order + ) + + if allocations.count() == 0 and order.status != SalesOrderStatus.PENDING: + continue + + # Create a new Shipment instance against this order + shipment = Shipment.objects.create( + order=order, + ) + + shipment.save() + + # Iterate through each allocation associated with this order + for allocation in allocations: + allocation.shipment = shipment + allocation.save() + + n += 1 + + if n > 0: + print(f"\nCreated SalesOrderShipment for {n} SalesOrder instances") + + +def reverse_add_shipment(apps, schema_editor): + """ + Reverse the migration, delete and SalesOrderShipment instances + """ + + Allocation = apps.get_model('order', 'salesorderallocation') + + # First, ensure that all SalesOrderAllocation objects point to a null shipment + for allocation in Allocation.objects.exclude(shipment=None): + allocation.shipment = None + allocation.save() + + SOS = apps.get_model('order', 'salesordershipment') + + n = SOS.objects.count() + + print(f"Deleting {n} SalesOrderShipment instances") + + SOS.objects.all().delete() + + +class Migration(migrations.Migration): + + dependencies = [ + ('order', '0054_salesorderallocation_shipment'), + ] + + operations = [ + migrations.RunPython( + add_shipment, + reverse_code=reverse_add_shipment, + ) + ] diff --git a/InvenTree/order/models.py b/InvenTree/order/models.py index 0566ec9312..dcb63430a3 100644 --- a/InvenTree/order/models.py +++ b/InvenTree/order/models.py @@ -929,13 +929,6 @@ class SalesOrderShipment(models.Model): help_text=_('Sales Order'), ) - status = models.PositiveIntegerField( - default=SalesOrderStatus.PENDING, - choices=SalesOrderStatus.items(), - verbose_name=_('Status'), - help_text=_('Shipment status'), - ) - shipment_date = models.DateField( null=True, blank=True, verbose_name=_('Shipment Date'), diff --git a/InvenTree/order/test_migrations.py b/InvenTree/order/test_migrations.py index b7db1f1b70..6e4d6668d3 100644 --- a/InvenTree/order/test_migrations.py +++ b/InvenTree/order/test_migrations.py @@ -5,6 +5,7 @@ Unit tests for the 'order' model data migrations from django_test_migrations.contrib.unittest_case import MigratorTestCase from InvenTree import helpers +from InvenTree.status_codes import SalesOrderStatus class TestForwardMigrations(MigratorTestCase): @@ -57,3 +58,49 @@ class TestForwardMigrations(MigratorTestCase): # The integer reference field must have been correctly updated self.assertEqual(order.reference_int, ii) + + +class TestShipmentMigration(MigratorTestCase): + """ + Test data migration for the "SalesOrderShipment" model + """ + + migrate_from = ('order', '0051_auto_20211014_0623') + migrate_to = ('order', '0055_auto_20211025_0645') + + def prepare(self): + """ + Create an initial SalesOrder + """ + + Company = self.old_state.apps.get_model('company', 'company') + + customer = Company.objects.create( + name='My customer', + description='A customer we sell stuff too', + is_customer=True + ) + + SalesOrder = self.old_state.apps.get_model('order', 'salesorder') + + for ii in range(5): + order = SalesOrder.objects.create( + reference=f'SO{ii}', + customer=customer, + description='A sales order for stuffs', + status=SalesOrderStatus.PENDING, + ) + + order.save() + + def test_shipment_creation(self): + """ + Check that a SalesOrderShipment has been created + """ + + SalesOrder = self.new_state.apps.get_model('order', 'salesorder') + Shipment = self.new_state.apps.get_model('order', 'salesordershipment') + + # Check that the correct number of Shipments have been created + self.assertEqual(SalesOrder.objects.count(), 5) + self.assertEqual(Shipment.objects.count(), 5) diff --git a/InvenTree/templates/js/translated/order.js b/InvenTree/templates/js/translated/order.js index 75f71e3c4c..e55371703c 100644 --- a/InvenTree/templates/js/translated/order.js +++ b/InvenTree/templates/js/translated/order.js @@ -1681,6 +1681,7 @@ function loadSalesOrderLineItemTable(table, options={}) { location_detail: true, in_stock: true, part: line_item.part, + include_variants: false, exclude_so_allocation: options.order, }, auto_fill: true, From d31f2be95564c8e83e1e7e771ca8f244d0fe6b34 Mon Sep 17 00:00:00 2001 From: Oliver Date: Mon, 25 Oct 2021 22:47:41 +1100 Subject: [PATCH 004/129] Make "shipment" field required for a SalesOrderAllocation - Deleting a "Shipment" will delete any "Allocation" objects which reference it - Improve existing data migration for new shipment model --- ...056_alter_salesorderallocation_shipment.py | 19 ++++++++++++++ InvenTree/order/models.py | 1 - InvenTree/order/test_migrations.py | 25 ++++++++++++++++--- 3 files changed, 41 insertions(+), 4 deletions(-) create mode 100644 InvenTree/order/migrations/0056_alter_salesorderallocation_shipment.py diff --git a/InvenTree/order/migrations/0056_alter_salesorderallocation_shipment.py b/InvenTree/order/migrations/0056_alter_salesorderallocation_shipment.py new file mode 100644 index 0000000000..7a2c255be3 --- /dev/null +++ b/InvenTree/order/migrations/0056_alter_salesorderallocation_shipment.py @@ -0,0 +1,19 @@ +# Generated by Django 3.2.5 on 2021-10-25 11:40 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('order', '0055_auto_20211025_0645'), + ] + + operations = [ + migrations.AlterField( + model_name='salesorderallocation', + name='shipment', + field=models.ForeignKey(help_text='Sales order shipment reference', on_delete=django.db.models.deletion.CASCADE, to='order.salesordershipment', verbose_name='Shipment'), + ), + ] diff --git a/InvenTree/order/models.py b/InvenTree/order/models.py index dcb63430a3..7277897488 100644 --- a/InvenTree/order/models.py +++ b/InvenTree/order/models.py @@ -1039,7 +1039,6 @@ class SalesOrderAllocation(models.Model): shipment = models.ForeignKey( SalesOrderShipment, on_delete=models.CASCADE, - null=True, blank=True, verbose_name=_('Shipment'), help_text=_('Sales order shipment reference'), ) diff --git a/InvenTree/order/test_migrations.py b/InvenTree/order/test_migrations.py index 6e4d6668d3..d62449613e 100644 --- a/InvenTree/order/test_migrations.py +++ b/InvenTree/order/test_migrations.py @@ -27,10 +27,12 @@ class TestForwardMigrations(MigratorTestCase): supplier = Company.objects.create( name='Supplier A', description='A great supplier!', - is_supplier=True + is_supplier=True, + is_customer=True, ) PurchaseOrder = self.old_state.apps.get_model('order', 'purchaseorder') + SalesOrder = self.old_state.apps.get_model('order', 'salesorder') # Create some orders for ii in range(10): @@ -45,19 +47,32 @@ class TestForwardMigrations(MigratorTestCase): with self.assertRaises(AttributeError): print(order.reference_int) + sales_order = SalesOrder.objects.create( + customer=supplier, + reference=f"{ii}-xyz", + description="A test sales order", + ) + + # Initially, the 'reference_int' field is unavailable + with self.assertRaises(AttributeError): + print(sales_order.reference_int) + def test_ref_field(self): """ Test that the 'reference_int' field has been created and is filled out correctly """ PurchaseOrder = self.new_state.apps.get_model('order', 'purchaseorder') + SalesOrder = self.new_state.apps.get_model('order', 'salesorder') for ii in range(10): - order = PurchaseOrder.objects.get(reference=f"{ii}-abcde") + po = PurchaseOrder.objects.get(reference=f"{ii}-abcde") + so = SalesOrder.objects.get(reference=f"{ii}-xyz") # The integer reference field must have been correctly updated - self.assertEqual(order.reference_int, ii) + self.assertEqual(po.reference_int, ii) + self.assertEqual(so.reference_int, ii) class TestShipmentMigration(MigratorTestCase): @@ -93,6 +108,10 @@ class TestShipmentMigration(MigratorTestCase): order.save() + # The "shipment" model does not exist yet + with self.assertRaises(LookupError): + self.old_state.apps.get_model('order', 'salesordershipment') + def test_shipment_creation(self): """ Check that a SalesOrderShipment has been created From 9fcc55d71df48a78002b8cacea5ecc30cc541440 Mon Sep 17 00:00:00 2001 From: Oliver Date: Mon, 25 Oct 2021 22:50:10 +1100 Subject: [PATCH 005/129] Admin page for new model --- InvenTree/order/admin.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/InvenTree/order/admin.py b/InvenTree/order/admin.py index 25b0922291..ed9bc74201 100644 --- a/InvenTree/order/admin.py +++ b/InvenTree/order/admin.py @@ -10,7 +10,7 @@ from import_export.fields import Field from .models import PurchaseOrder, PurchaseOrderLineItem from .models import SalesOrder, SalesOrderLineItem -from .models import SalesOrderAllocation +from .models import SalesOrderShipment, SalesOrderAllocation class PurchaseOrderLineItemInlineAdmin(admin.StackedInline): @@ -124,6 +124,15 @@ class SalesOrderLineItemAdmin(ImportExportModelAdmin): ) +class SalesOrderShipmentAdmin(ImportExportModelAdmin): + + list_display = [ + 'order', + 'shipment_date', + 'reference', + ] + + class SalesOrderAllocationAdmin(ImportExportModelAdmin): list_display = ( @@ -139,4 +148,5 @@ admin.site.register(PurchaseOrderLineItem, PurchaseOrderLineItemAdmin) admin.site.register(SalesOrder, SalesOrderAdmin) admin.site.register(SalesOrderLineItem, SalesOrderLineItemAdmin) +admin.site.register(SalesOrderShipment, SalesOrderShipmentAdmin) admin.site.register(SalesOrderAllocation, SalesOrderAllocationAdmin) From e9e4d135416e554bffea39d0997d8540087e5773 Mon Sep 17 00:00:00 2001 From: Oliver Date: Mon, 25 Oct 2021 23:34:58 +1100 Subject: [PATCH 006/129] Add list and detail API endpoints for SalesOrderShipment - Filter by order - Filter by "shipped" status - SalesOrderShipment serializer includes information on items allocated to that shipment --- InvenTree/order/api.py | 60 ++++++++++++++++++- ...056_alter_salesorderallocation_shipment.py | 2 +- InvenTree/order/models.py | 1 + InvenTree/order/serializers.py | 23 ++++++- 4 files changed, 82 insertions(+), 4 deletions(-) diff --git a/InvenTree/order/api.py b/InvenTree/order/api.py index f4ebff4dfb..80708c9922 100644 --- a/InvenTree/order/api.py +++ b/InvenTree/order/api.py @@ -26,10 +26,11 @@ from .models import PurchaseOrder, PurchaseOrderLineItem from .models import PurchaseOrderAttachment from .serializers import POSerializer, POLineItemSerializer, POAttachmentSerializer -from .models import SalesOrder, SalesOrderLineItem, SalesOrderAllocation +from .models import SalesOrder, SalesOrderLineItem, SalesOrderShipment, SalesOrderAllocation from .models import SalesOrderAttachment + from .serializers import SalesOrderSerializer, SOLineItemSerializer, SOAttachmentSerializer -from .serializers import SalesOrderAllocationSerializer +from .serializers import SalesOrderShipmentSerializer, SalesOrderAllocationSerializer from .serializers import POReceiveSerializer @@ -700,6 +701,54 @@ class SOAllocationList(generics.ListCreateAPIView): ] +class SOShipmentFilter(rest_filters.FilterSet): + """ + Custom filterset for the SOShipmentList endpoint + """ + + shipped = rest_filters.BooleanFilter(label='shipped', method='filter_shipped') + + def filter_shipped(self, queryset, name, value): + + value = str2bool(value) + + if value: + queryset = queryset.exclude(shipment_date=None) + else: + queryset = queryset.filter(shipment_date=None) + + return queryset + + class Meta: + model = SalesOrderShipment + fields = [ + 'order', + ] + + +class SOShipmentList(generics.ListCreateAPIView): + """ + API list endpoint for SalesOrderShipment model + """ + + queryset = SalesOrderShipment.objects.all() + serializer_class = SalesOrderShipmentSerializer + filterset_class = SOShipmentFilter + + filter_backends = [ + rest_filters.DjangoFilterBackend, + ] + + +class SOShipmentDetail(generics.RetrieveUpdateAPIView): + """ + API detail endpooint for SalesOrderShipment model + """ + + queryset = SalesOrderShipment.objects.all() + serializer_class = SalesOrderShipmentSerializer + + class POAttachmentList(generics.ListCreateAPIView, AttachmentMixin): """ API endpoint for listing (and creating) a PurchaseOrderAttachment (file upload) @@ -760,6 +809,13 @@ order_api_urls = [ url(r'^.*$', SOAttachmentList.as_view(), name='api-so-attachment-list'), ])), + url(r'^shipment/', include([ + url(r'^(?P\d)+/', include([ + url(r'^.*$', SOShipmentDetail.as_view(), name='api-so-shipment-detail'), + ])), + url(r'^.*$', SOShipmentList.as_view(), name='api-so-shipment-list'), + ])), + url(r'^(?P\d+)/$', SODetail.as_view(), name='api-so-detail'), url(r'^.*$', SOList.as_view(), name='api-so-list'), ])), diff --git a/InvenTree/order/migrations/0056_alter_salesorderallocation_shipment.py b/InvenTree/order/migrations/0056_alter_salesorderallocation_shipment.py index 7a2c255be3..340a8d4ab5 100644 --- a/InvenTree/order/migrations/0056_alter_salesorderallocation_shipment.py +++ b/InvenTree/order/migrations/0056_alter_salesorderallocation_shipment.py @@ -14,6 +14,6 @@ class Migration(migrations.Migration): migrations.AlterField( model_name='salesorderallocation', name='shipment', - field=models.ForeignKey(help_text='Sales order shipment reference', on_delete=django.db.models.deletion.CASCADE, to='order.salesordershipment', verbose_name='Shipment'), + field=models.ForeignKey(help_text='Sales order shipment reference', on_delete=django.db.models.deletion.CASCADE, related_name='allocations', to='order.salesordershipment', verbose_name='Shipment'), ), ] diff --git a/InvenTree/order/models.py b/InvenTree/order/models.py index 7277897488..c6ff6dc5bd 100644 --- a/InvenTree/order/models.py +++ b/InvenTree/order/models.py @@ -1039,6 +1039,7 @@ class SalesOrderAllocation(models.Model): shipment = models.ForeignKey( SalesOrderShipment, on_delete=models.CASCADE, + related_name='allocations', verbose_name=_('Shipment'), help_text=_('Sales order shipment reference'), ) diff --git a/InvenTree/order/serializers.py b/InvenTree/order/serializers.py index 40cd2def58..70bef86ae4 100644 --- a/InvenTree/order/serializers.py +++ b/InvenTree/order/serializers.py @@ -34,7 +34,7 @@ from stock.serializers import LocationBriefSerializer, StockItemSerializer, Loca from .models import PurchaseOrder, PurchaseOrderLineItem from .models import PurchaseOrderAttachment, SalesOrderAttachment from .models import SalesOrder, SalesOrderLineItem -from .models import SalesOrderAllocation +from .models import SalesOrderShipment, SalesOrderAllocation from common.settings import currency_code_mappings @@ -590,6 +590,27 @@ class SOLineItemSerializer(InvenTreeModelSerializer): ] +class SalesOrderShipmentSerializer(InvenTreeModelSerializer): + """ + Serializer for the SalesOrderShipment class + """ + + allocations = SalesOrderAllocationSerializer(many=True, read_only=True, location_detail=True) + + class Meta: + model = SalesOrderShipment + + fields = [ + 'pk', + 'order', + 'allocations', + 'shipment_date', + 'checked_by', + 'reference', + 'notes', + ] + + class SOAttachmentSerializer(InvenTreeAttachmentSerializer): """ Serializers for the SalesOrderAttachment model From e7c25126a48a893d7ac363924bf94d9bd2405994 Mon Sep 17 00:00:00 2001 From: Oliver Date: Tue, 26 Oct 2021 00:17:17 +1100 Subject: [PATCH 007/129] Construct table of "shipments" --- InvenTree/order/api.py | 2 +- .../migrations/0055_auto_20211025_0645.py | 3 + .../templates/order/sales_order_detail.html | 43 ++++++ .../order/templates/order/so_navbar.html | 7 + InvenTree/templates/js/translated/order.js | 122 +++++++++++++++++- 5 files changed, 170 insertions(+), 7 deletions(-) diff --git a/InvenTree/order/api.py b/InvenTree/order/api.py index 80708c9922..954295ef8e 100644 --- a/InvenTree/order/api.py +++ b/InvenTree/order/api.py @@ -810,7 +810,7 @@ order_api_urls = [ ])), url(r'^shipment/', include([ - url(r'^(?P\d)+/', include([ + url(r'^(?P\d+)/', include([ url(r'^.*$', SOShipmentDetail.as_view(), name='api-so-shipment-detail'), ])), url(r'^.*$', SOShipmentList.as_view(), name='api-so-shipment-list'), diff --git a/InvenTree/order/migrations/0055_auto_20211025_0645.py b/InvenTree/order/migrations/0055_auto_20211025_0645.py index 13ea184cfe..d45e92aead 100644 --- a/InvenTree/order/migrations/0055_auto_20211025_0645.py +++ b/InvenTree/order/migrations/0055_auto_20211025_0645.py @@ -41,6 +41,9 @@ def add_shipment(apps, schema_editor): order=order, ) + if order.status == SalesOrderStatus.SHIPPED: + shipment.shipment_date = order.shipment_date + shipment.save() # Iterate through each allocation associated with this order diff --git a/InvenTree/order/templates/order/sales_order_detail.html b/InvenTree/order/templates/order/sales_order_detail.html index cddba74cd6..87b6d80acf 100644 --- a/InvenTree/order/templates/order/sales_order_detail.html +++ b/InvenTree/order/templates/order/sales_order_detail.html @@ -33,6 +33,32 @@ +
+ {% if order.is_pending %} +
+

{% trans "Pending Shipments" %}

+
+
+ {% if roles.sales_order.change %} +
+
+ +
+
+ {% endif %} +
+
+ {% endif %} +
+

{% trans "Completed Shipments" %}

+
+
+
+
+
+

{% trans "Build Orders" %}

@@ -79,6 +105,23 @@ {% block js_ready %} {{ block.super }} + // Callback when the "shipments" panel is first loaded + onPanelLoad('order-shipments', function() { + + {% if order.is_pending %} + loadSalesOrderShipmentTable('#pending-shipments-table', { + order: {{ order.pk }}, + shipped: false, + }); + {% endif %} + + loadSalesOrderShipmentTable('#completed-shipments-table', { + order: {{ order.pk }}, + shipped: true, + }); + + }); + $('#edit-notes').click(function() { constructForm('{% url "api-so-detail" order.pk %}', { fields: { diff --git a/InvenTree/order/templates/order/so_navbar.html b/InvenTree/order/templates/order/so_navbar.html index 710976ed3f..814df0fca6 100644 --- a/InvenTree/order/templates/order/so_navbar.html +++ b/InvenTree/order/templates/order/so_navbar.html @@ -16,6 +16,13 @@ +
  • + + + {% trans "Shipments" %} + +
  • +
  • diff --git a/InvenTree/templates/js/translated/order.js b/InvenTree/templates/js/translated/order.js index e55371703c..6e69eb6a02 100644 --- a/InvenTree/templates/js/translated/order.js +++ b/InvenTree/templates/js/translated/order.js @@ -26,6 +26,7 @@ loadPurchaseOrderTable, loadSalesOrderAllocationTable, loadSalesOrderLineItemTable, + loadSalesOrderShipmentTable, loadSalesOrderTable, newPurchaseOrderFromOrderWizard, newSupplierPartFromOrderWizard, @@ -1100,6 +1101,117 @@ function loadSalesOrderTable(table, options) { } +/* + * Load a table displaying Shipment information against a particular order + */ +function loadSalesOrderShipmentTable(table, options={}) { + + options.table = table; + + options.params = options.params || {}; + + // Filter by order + options.params.order = options.order; + + // Filter by "shipped" status + options.params.shipped = options.shipped || false; + + var filters = loadTableFilters('salesordershipment'); + + for (var key in options.params) { + filters[key] = options.params[key]; + } + + var todo = "Setup filter list for this table"; + + function makeShipmentActions(row) { + // Construct "actions" for the given shipment row + var pk = row.pk; + + var html = `
    `; + + html += makeIconButton('fa-edit icon-blue', 'button-shipment-edit', pk, '{% trans "Edit shipment" %}'); + + html += `
    `; + + return html; + + } + + function setupShipmentCallbacks() { + // Setup action button callbacks + + $(table).find('.button-shipment-edit').click(function() { + var pk = $(this).attr('pk'); + + constructForm(`/api/order/so/shipment/${pk}/`, { + fields: { + reference: {}, + }, + title: '{% trans "Edit Shipment" %}', + onSuccess: function() { + $(table).bootstrapTable('refresh'); + } + }); + }); + } + + $(table).inventreeTable({ + url: '{% url "api-so-shipment-list" %}', + queryParams: filters, + original: options.params, + name: options.name || 'salesordershipment', + search: false, + paginationVAlign: 'bottom', + showColumns: true, + detailView: true, + detailViewByClick: false, + detailFilter: function(index, row) { + return row.allocations.length > 0; + }, + detailFormatter: function(index, row, element) { + return showAllocationSubTable(index, row, element, options); + }, + onPostBody: setupShipmentCallbacks, + formatNoMatches: function() { + return '{% trans "No matching shipments found" %}'; + }, + columns: [ + { + visible: false, + checkbox: true, + switchable: false, + }, + { + field: 'reference', + title: '{% trans "Reference" %}', + switchable: false, + }, + { + field: 'shipment_date', + title: '{% trans "Shipment Date" %}', + visible: options.shipped, + switchable: false, + }, + { + field: 'notes', + title: '{% trans "Notes" %}', + visible: false, + // TODO: Implement 'notes' field + }, + { + title: '', + switchable: false, + formatter: function(value, row) { + return makeShipmentActions(row); + } + } + ], + }); +} + + + function loadSalesOrderAllocationTable(table, options={}) { /** * Load a table with SalesOrderAllocation items @@ -1123,7 +1235,7 @@ function loadSalesOrderAllocationTable(table, options={}) { $(table).inventreeTable({ url: '{% url "api-so-allocation-list" %}', queryParams: filters, - name: 'salesorderallocation', + name: options.name || 'salesorderallocation', groupBy: false, search: false, paginationVAlign: 'bottom', @@ -1198,16 +1310,14 @@ function showAllocationSubTable(index, row, element, options) { // Construct a sub-table element var html = `
    - -
    +
    `; element.html(html); var table = $(`#allocation-table-${row.pk}`); - // Is the parent SalesOrder pending? - var pending = options.status == {{ SalesOrderStatus.PENDING }}; + var shipped = options.shipped; function setupCallbacks() { // Add callbacks for 'edit' buttons @@ -1300,7 +1410,7 @@ function showAllocationSubTable(index, row, element, options) { var html = `
    `; var pk = row.pk; - if (pending) { + if (!shipped) { html += makeIconButton('fa-edit icon-blue', 'button-allocation-edit', pk, '{% trans "Edit stock allocation" %}'); html += makeIconButton('fa-trash-alt icon-red', 'button-allocation-delete', pk, '{% trans "Delete stock allocation" %}'); } From c90c224ed2c0a040e3b8608583751e4db0bb7dc9 Mon Sep 17 00:00:00 2001 From: Oliver Date: Tue, 26 Oct 2021 22:13:55 +1100 Subject: [PATCH 008/129] Update "reference" field for shipment model - Must be unique - Auto-incrementing default value - Updated migrations --- .../migrations/0053_salesordershipment.py | 5 +- InvenTree/order/models.py | 76 +++++++++---------- 2 files changed, 38 insertions(+), 43 deletions(-) diff --git a/InvenTree/order/migrations/0053_salesordershipment.py b/InvenTree/order/migrations/0053_salesordershipment.py index e20a95e3f8..b137e2dea8 100644 --- a/InvenTree/order/migrations/0053_salesordershipment.py +++ b/InvenTree/order/migrations/0053_salesordershipment.py @@ -3,6 +3,9 @@ from django.conf import settings from django.db import migrations, models import django.db.models.deletion + +import order.models + import markdownx.models @@ -19,7 +22,7 @@ class Migration(migrations.Migration): fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('shipment_date', models.DateField(blank=True, help_text='Date of shipment', null=True, verbose_name='Shipment Date')), - ('reference', models.CharField(blank=True, help_text='Shipment reference', max_length=100, verbose_name='Reference')), + ('reference', models.CharField(default=order.models.get_next_shipment_number, unique=True, help_text='Shipment reference', max_length=100, verbose_name='Reference')), ('notes', markdownx.models.MarkdownxField(blank=True, help_text='Shipment notes', verbose_name='Notes')), ('checked_by', models.ForeignKey(blank=True, help_text='User who checked this shipment', null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL, verbose_name='Checked By')), ('order', models.ForeignKey(help_text='Sales Order', on_delete=django.db.models.deletion.CASCADE, related_name='shipments', to='order.salesorder', verbose_name='Order')), diff --git a/InvenTree/order/models.py b/InvenTree/order/models.py index c6ff6dc5bd..b0b0d82221 100644 --- a/InvenTree/order/models.py +++ b/InvenTree/order/models.py @@ -37,7 +37,7 @@ def get_next_po_number(): """ if PurchaseOrder.objects.count() == 0: - return + return "001" order = PurchaseOrder.objects.exclude(reference=None).last() @@ -66,7 +66,7 @@ def get_next_so_number(): """ if SalesOrder.objects.count() == 0: - return + return "001" order = SalesOrder.objects.exclude(reference=None).last() @@ -107,45 +107,6 @@ class Order(ReferenceIndexingMixin): responsible: User (or group) responsible for managing the order """ - @classmethod - def getNextOrderNumber(cls): - """ - Try to predict the next order-number - """ - - if cls.objects.count() == 0: - return None - - # We will assume that the latest pk has the highest PO number - order = cls.objects.last() - ref = order.reference - - if not ref: - return None - - tries = set() - - tries.add(ref) - - while 1: - new_ref = increment(ref) - - print("Reference:", new_ref) - - if new_ref in tries: - # We are in a looping situation - simply return the original one - return ref - - # Check that the new ref does not exist in the database - if cls.objects.filter(reference=new_ref).exists(): - tries.add(new_ref) - new_ref = increment(new_ref) - - else: - break - - return new_ref - def save(self, *args, **kwargs): self.rebuild_reference_field() @@ -903,6 +864,35 @@ class SalesOrderLineItem(OrderLineItem): return self.allocated_quantity() > self.quantity +def get_next_shipment_number(): + """ + Returns the next available SalesOrderShipment reference number" + """ + + if SalesOrderShipment.objects.count() == 0: + return "001" + + shipment = SalesOrderShipment.objects.exclude(reference=None).last() + + attempts = set([shipment.reference]) + + reference = shipment.reference + + while 1: + reference = increment(reference) + + if reference in attempts: + # Escape infinite recursion + return reference + + if SalesOrderShipment.objects.filter(reference=reference).exists(): + attempts.add(reference) + else: + break + + return reference + + class SalesOrderShipment(models.Model): """ The SalesOrderShipment model represents a physical shipment made against a SalesOrder. @@ -946,9 +936,11 @@ class SalesOrderShipment(models.Model): reference = models.CharField( max_length=100, - blank=True, + blank=False, + unique=True, verbose_name=('Reference'), help_text=_('Shipment reference'), + default=get_next_shipment_number, ) notes = MarkdownxField( From 87154c0240d87e8ffe9d15ce8e96600f16665334 Mon Sep 17 00:00:00 2001 From: Oliver Date: Tue, 26 Oct 2021 22:17:31 +1100 Subject: [PATCH 009/129] Bump API version --- InvenTree/InvenTree/version.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/InvenTree/InvenTree/version.py b/InvenTree/InvenTree/version.py index 48539713f2..28c623ba4a 100644 --- a/InvenTree/InvenTree/version.py +++ b/InvenTree/InvenTree/version.py @@ -12,11 +12,15 @@ import common.models INVENTREE_SW_VERSION = "0.6.0 dev" # InvenTree API version -INVENTREE_API_VERSION = 16 +INVENTREE_API_VERSION = 17 """ Increment this API version number whenever there is a significant change to the API that any clients need to know about +v17 -> 2021-10-26 + - Adds support for multiple "Shipments" against a SalesOrder + - Refactors process for stock allocation against a SalesOrder + v16 -> 2021-10-17 - Adds API endpoint for completing build order outputs From dd5eeb7c61049b8991cb9388f7d55b82ff3ffe03 Mon Sep 17 00:00:00 2001 From: Oliver Date: Tue, 26 Oct 2021 22:46:30 +1100 Subject: [PATCH 010/129] Add breadcrumbs to purchase order and sales order pages --- InvenTree/order/templates/order/order_base.html | 11 +++++++++++ InvenTree/order/templates/order/sales_order_base.html | 11 +++++++++++ 2 files changed, 22 insertions(+) diff --git a/InvenTree/order/templates/order/order_base.html b/InvenTree/order/templates/order/order_base.html index ca7e70c4e3..d8fa4aafab 100644 --- a/InvenTree/order/templates/order/order_base.html +++ b/InvenTree/order/templates/order/order_base.html @@ -9,6 +9,17 @@ {% inventree_title %} | {% trans "Purchase Order" %} {% endblock %} +{% block pre_content %} + +{% endblock %} + {% block thumbnail %} + +
    +{% endblock %} + {% block below_thumbnail %}
    {% if order.status == SalesOrderStatus.PENDING and not order.is_fully_allocated %} From bff9f0828a7f33b76a50e32464ee24b99a80ffea Mon Sep 17 00:00:00 2001 From: Oliver Date: Tue, 26 Oct 2021 23:51:36 +1100 Subject: [PATCH 011/129] Adds API endpoint to allocate stock items against a SalesOrder - SalesOrderAllocations are no longer created manually - API endpoint performs data validation - Multiple line items can be allocated at once - Adds unit testing for new API endpoint --- InvenTree/build/serializers.py | 2 +- InvenTree/order/api.py | 154 +++++++++++++---------- InvenTree/order/models.py | 24 +++- InvenTree/order/serializers.py | 203 ++++++++++++++++++++++++++---- InvenTree/order/test_api.py | 163 +++++++++++++++++++++--- InvenTree/part/fixtures/part.yaml | 4 + 6 files changed, 437 insertions(+), 113 deletions(-) diff --git a/InvenTree/build/serializers.py b/InvenTree/build/serializers.py index a18f58fb76..29257341b2 100644 --- a/InvenTree/build/serializers.py +++ b/InvenTree/build/serializers.py @@ -422,7 +422,7 @@ class BuildAllocationSerializer(serializers.Serializer): Validation """ - super().validate(data) + data = super().validate(data) items = data.get('items', []) diff --git a/InvenTree/order/api.py b/InvenTree/order/api.py index 954295ef8e..037224a855 100644 --- a/InvenTree/order/api.py +++ b/InvenTree/order/api.py @@ -13,25 +13,17 @@ from rest_framework import generics from rest_framework import filters, status from rest_framework.response import Response +from company.models import SupplierPart from InvenTree.filters import InvenTreeOrderingFilter from InvenTree.helpers import str2bool from InvenTree.api import AttachmentMixin from InvenTree.status_codes import PurchaseOrderStatus, SalesOrderStatus +import order.models as models +import order.serializers as serializers + from part.models import Part -from company.models import SupplierPart - -from .models import PurchaseOrder, PurchaseOrderLineItem -from .models import PurchaseOrderAttachment -from .serializers import POSerializer, POLineItemSerializer, POAttachmentSerializer - -from .models import SalesOrder, SalesOrderLineItem, SalesOrderShipment, SalesOrderAllocation -from .models import SalesOrderAttachment - -from .serializers import SalesOrderSerializer, SOLineItemSerializer, SOAttachmentSerializer -from .serializers import SalesOrderShipmentSerializer, SalesOrderAllocationSerializer -from .serializers import POReceiveSerializer class POList(generics.ListCreateAPIView): @@ -41,8 +33,8 @@ class POList(generics.ListCreateAPIView): - POST: Create a new PurchaseOrder object """ - queryset = PurchaseOrder.objects.all() - serializer_class = POSerializer + queryset = models.PurchaseOrder.objects.all() + serializer_class = serializers.POSerializer def create(self, request, *args, **kwargs): """ @@ -79,7 +71,7 @@ class POList(generics.ListCreateAPIView): 'lines', ) - queryset = POSerializer.annotate_queryset(queryset) + queryset = serializers.POSerializer.annotate_queryset(queryset) return queryset @@ -108,9 +100,9 @@ class POList(generics.ListCreateAPIView): overdue = str2bool(overdue) if overdue: - queryset = queryset.filter(PurchaseOrder.OVERDUE_FILTER) + queryset = queryset.filter(models.PurchaseOrder.OVERDUE_FILTER) else: - queryset = queryset.exclude(PurchaseOrder.OVERDUE_FILTER) + queryset = queryset.exclude(models.PurchaseOrder.OVERDUE_FILTER) # Special filtering for 'status' field status = params.get('status', None) @@ -144,7 +136,7 @@ class POList(generics.ListCreateAPIView): max_date = params.get('max_date', None) if min_date is not None and max_date is not None: - queryset = PurchaseOrder.filterByDate(queryset, min_date, max_date) + queryset = models.PurchaseOrder.filterByDate(queryset, min_date, max_date) return queryset @@ -184,8 +176,8 @@ class POList(generics.ListCreateAPIView): class PODetail(generics.RetrieveUpdateDestroyAPIView): """ API endpoint for detail view of a PurchaseOrder object """ - queryset = PurchaseOrder.objects.all() - serializer_class = POSerializer + queryset = models.PurchaseOrder.objects.all() + serializer_class = serializers.POSerializer def get_serializer(self, *args, **kwargs): @@ -208,7 +200,7 @@ class PODetail(generics.RetrieveUpdateDestroyAPIView): 'lines', ) - queryset = POSerializer.annotate_queryset(queryset) + queryset = serializers.POSerializer.annotate_queryset(queryset) return queryset @@ -226,9 +218,9 @@ class POReceive(generics.CreateAPIView): - A global location can also be specified """ - queryset = PurchaseOrderLineItem.objects.none() + queryset = models.PurchaseOrderLineItem.objects.none() - serializer_class = POReceiveSerializer + serializer_class = serializers.POReceiveSerializer def get_serializer_context(self): @@ -236,7 +228,7 @@ class POReceive(generics.CreateAPIView): # Pass the purchase order through to the serializer for validation try: - context['order'] = PurchaseOrder.objects.get(pk=self.kwargs.get('pk', None)) + context['order'] = models.PurchaseOrder.objects.get(pk=self.kwargs.get('pk', None)) except: pass @@ -251,7 +243,7 @@ class POLineItemFilter(rest_filters.FilterSet): """ class Meta: - model = PurchaseOrderLineItem + model = models.PurchaseOrderLineItem fields = [ 'order', 'part' @@ -285,15 +277,15 @@ class POLineItemList(generics.ListCreateAPIView): - POST: Create a new PurchaseOrderLineItem object """ - queryset = PurchaseOrderLineItem.objects.all() - serializer_class = POLineItemSerializer + queryset = models.PurchaseOrderLineItem.objects.all() + serializer_class = serializers.POLineItemSerializer filterset_class = POLineItemFilter def get_queryset(self, *args, **kwargs): queryset = super().get_queryset(*args, **kwargs) - queryset = POLineItemSerializer.annotate_queryset(queryset) + queryset = serializers.POLineItemSerializer.annotate_queryset(queryset) return queryset @@ -350,14 +342,14 @@ class POLineItemDetail(generics.RetrieveUpdateDestroyAPIView): Detail API endpoint for PurchaseOrderLineItem object """ - queryset = PurchaseOrderLineItem.objects.all() - serializer_class = POLineItemSerializer + queryset = models.PurchaseOrderLineItem.objects.all() + serializer_class = serializers.POLineItemSerializer def get_queryset(self): queryset = super().get_queryset() - queryset = POLineItemSerializer.annotate_queryset(queryset) + queryset = serializers.POLineItemSerializer.annotate_queryset(queryset) return queryset @@ -367,8 +359,8 @@ class SOAttachmentList(generics.ListCreateAPIView, AttachmentMixin): API endpoint for listing (and creating) a SalesOrderAttachment (file upload) """ - queryset = SalesOrderAttachment.objects.all() - serializer_class = SOAttachmentSerializer + queryset = models.SalesOrderAttachment.objects.all() + serializer_class = serializers.SOAttachmentSerializer filter_backends = [ rest_filters.DjangoFilterBackend, @@ -384,8 +376,8 @@ class SOAttachmentDetail(generics.RetrieveUpdateDestroyAPIView, AttachmentMixin) Detail endpoint for SalesOrderAttachment """ - queryset = SalesOrderAttachment.objects.all() - serializer_class = SOAttachmentSerializer + queryset = models.SalesOrderAttachment.objects.all() + serializer_class = serializers.SOAttachmentSerializer class SOList(generics.ListCreateAPIView): @@ -396,8 +388,8 @@ class SOList(generics.ListCreateAPIView): - POST: Create a new SalesOrder """ - queryset = SalesOrder.objects.all() - serializer_class = SalesOrderSerializer + queryset = models.SalesOrder.objects.all() + serializer_class = serializers.SalesOrderSerializer def create(self, request, *args, **kwargs): """ @@ -434,7 +426,7 @@ class SOList(generics.ListCreateAPIView): 'lines' ) - queryset = SalesOrderSerializer.annotate_queryset(queryset) + queryset = serializers.SalesOrderSerializer.annotate_queryset(queryset) return queryset @@ -454,9 +446,9 @@ class SOList(generics.ListCreateAPIView): outstanding = str2bool(outstanding) if outstanding: - queryset = queryset.filter(status__in=SalesOrderStatus.OPEN) + queryset = queryset.filter(status__in=models.SalesOrderStatus.OPEN) else: - queryset = queryset.exclude(status__in=SalesOrderStatus.OPEN) + queryset = queryset.exclude(status__in=models.SalesOrderStatus.OPEN) # Filter by 'overdue' status overdue = params.get('overdue', None) @@ -465,9 +457,9 @@ class SOList(generics.ListCreateAPIView): overdue = str2bool(overdue) if overdue: - queryset = queryset.filter(SalesOrder.OVERDUE_FILTER) + queryset = queryset.filter(models.SalesOrder.OVERDUE_FILTER) else: - queryset = queryset.exclude(SalesOrder.OVERDUE_FILTER) + queryset = queryset.exclude(models.SalesOrder.OVERDUE_FILTER) status = params.get('status', None) @@ -490,7 +482,7 @@ class SOList(generics.ListCreateAPIView): max_date = params.get('max_date', None) if min_date is not None and max_date is not None: - queryset = SalesOrder.filterByDate(queryset, min_date, max_date) + queryset = models.SalesOrder.filterByDate(queryset, min_date, max_date) return queryset @@ -534,8 +526,8 @@ class SODetail(generics.RetrieveUpdateDestroyAPIView): API endpoint for detail view of a SalesOrder object. """ - queryset = SalesOrder.objects.all() - serializer_class = SalesOrderSerializer + queryset = models.SalesOrder.objects.all() + serializer_class = serializers.SalesOrderSerializer def get_serializer(self, *args, **kwargs): @@ -554,7 +546,7 @@ class SODetail(generics.RetrieveUpdateDestroyAPIView): queryset = queryset.prefetch_related('customer', 'lines') - queryset = SalesOrderSerializer.annotate_queryset(queryset) + queryset = serializers.SalesOrderSerializer.annotate_queryset(queryset) return queryset @@ -564,8 +556,8 @@ class SOLineItemList(generics.ListCreateAPIView): API endpoint for accessing a list of SalesOrderLineItem objects. """ - queryset = SalesOrderLineItem.objects.all() - serializer_class = SOLineItemSerializer + queryset = models.SalesOrderLineItem.objects.all() + serializer_class = serializers.SOLineItemSerializer def get_serializer(self, *args, **kwargs): @@ -624,8 +616,34 @@ class SOLineItemList(generics.ListCreateAPIView): class SOLineItemDetail(generics.RetrieveUpdateDestroyAPIView): """ API endpoint for detail view of a SalesOrderLineItem object """ - queryset = SalesOrderLineItem.objects.all() - serializer_class = SOLineItemSerializer + queryset = models.SalesOrderLineItem.objects.all() + serializer_class = serializers.SOLineItemSerializer + + +class SalesOrderAllocate(generics.CreateAPIView): + """ + API endpoint to allocate stock items against a SalesOrder + + - The SalesOrder is specified in the URL + - See the SOShipmentAllocationSerializer class + """ + + queryset = models.SalesOrder.objects.none() + serializer_class = serializers.SOShipmentAllocationSerializer + + def get_serializer_context(self): + + ctx = super().get_serializer_context() + + # Pass through the SalesOrder object to the serializer + try: + ctx['order'] = models.SalesOrder.objects.get(pk=self.kwargs.get('pk', None)) + except: + pass + + ctx['request'] = self.request + + return ctx class SOAllocationDetail(generics.RetrieveUpdateDestroyAPIView): @@ -633,17 +651,17 @@ class SOAllocationDetail(generics.RetrieveUpdateDestroyAPIView): API endpoint for detali view of a SalesOrderAllocation object """ - queryset = SalesOrderAllocation.objects.all() - serializer_class = SalesOrderAllocationSerializer + queryset = models.SalesOrderAllocation.objects.all() + serializer_class = serializers.SalesOrderAllocationSerializer -class SOAllocationList(generics.ListCreateAPIView): +class SOAllocationList(generics.ListAPIView): """ API endpoint for listing SalesOrderAllocation objects """ - queryset = SalesOrderAllocation.objects.all() - serializer_class = SalesOrderAllocationSerializer + queryset = models.SalesOrderAllocation.objects.all() + serializer_class = serializers.SalesOrderAllocationSerializer def get_serializer(self, *args, **kwargs): @@ -720,7 +738,7 @@ class SOShipmentFilter(rest_filters.FilterSet): return queryset class Meta: - model = SalesOrderShipment + model = models.SalesOrderShipment fields = [ 'order', ] @@ -731,8 +749,8 @@ class SOShipmentList(generics.ListCreateAPIView): API list endpoint for SalesOrderShipment model """ - queryset = SalesOrderShipment.objects.all() - serializer_class = SalesOrderShipmentSerializer + queryset = models.SalesOrderShipment.objects.all() + serializer_class = serializers.SalesOrderShipmentSerializer filterset_class = SOShipmentFilter filter_backends = [ @@ -745,8 +763,8 @@ class SOShipmentDetail(generics.RetrieveUpdateAPIView): API detail endpooint for SalesOrderShipment model """ - queryset = SalesOrderShipment.objects.all() - serializer_class = SalesOrderShipmentSerializer + queryset = models.SalesOrderShipment.objects.all() + serializer_class = serializers.SalesOrderShipmentSerializer class POAttachmentList(generics.ListCreateAPIView, AttachmentMixin): @@ -754,8 +772,8 @@ class POAttachmentList(generics.ListCreateAPIView, AttachmentMixin): API endpoint for listing (and creating) a PurchaseOrderAttachment (file upload) """ - queryset = PurchaseOrderAttachment.objects.all() - serializer_class = POAttachmentSerializer + queryset = models.PurchaseOrderAttachment.objects.all() + serializer_class = serializers.POAttachmentSerializer filter_backends = [ rest_filters.DjangoFilterBackend, @@ -771,8 +789,8 @@ class POAttachmentDetail(generics.RetrieveUpdateDestroyAPIView, AttachmentMixin) Detail endpoint for a PurchaseOrderAttachment """ - queryset = PurchaseOrderAttachment.objects.all() - serializer_class = POAttachmentSerializer + queryset = models.PurchaseOrderAttachment.objects.all() + serializer_class = serializers.POAttachmentSerializer order_api_urls = [ @@ -816,7 +834,13 @@ order_api_urls = [ url(r'^.*$', SOShipmentList.as_view(), name='api-so-shipment-list'), ])), - url(r'^(?P\d+)/$', SODetail.as_view(), name='api-so-detail'), + # Sales order detail view + url(r'^(?P\d+)/', include([ + url(r'^allocate/', SalesOrderAllocate.as_view(), name='api-so-allocate'), + url(r'^.*$', SODetail.as_view(), name='api-so-detail'), + ])), + + # Sales order list view url(r'^.*$', SOList.as_view(), name='api-so-list'), ])), diff --git a/InvenTree/order/models.py b/InvenTree/order/models.py index b0b0d82221..05eabe3788 100644 --- a/InvenTree/order/models.py +++ b/InvenTree/order/models.py @@ -567,6 +567,16 @@ class SalesOrder(Order): def is_pending(self): return self.status == SalesOrderStatus.PENDING + @property + def stock_allocations(self): + """ + Return a queryset containing all allocations for this order + """ + + return SalesOrderAllocation.objects.filter( + line__in=[line.pk for line in self.lines.all()] + ) + def is_fully_allocated(self): """ Return True if all line items are fully allocated """ @@ -910,6 +920,10 @@ class SalesOrderShipment(models.Model): notes: Custom notes field for this shipment """ + @staticmethod + def get_api_url(): + return reverse('api-so-shipment-list') + order = models.ForeignKey( SalesOrder, on_delete=models.CASCADE, @@ -1014,10 +1028,9 @@ class SalesOrderAllocation(models.Model): if self.item.serial and not self.quantity == 1: errors['quantity'] = _('Quantity must be 1 for serialized stock item') - - - # TODO: Ensure that the "shipment" points to the same "order"! - + if self.line.order != self.shipment.order: + errors['line'] = _('Sales order does not match shipment') + errors['shipment'] = _('Shipment does not match sales order') if len(errors) > 0: raise ValidationError(errors) @@ -1026,7 +1039,8 @@ class SalesOrderAllocation(models.Model): SalesOrderLineItem, on_delete=models.CASCADE, verbose_name=_('Line'), - related_name='allocations') + related_name='allocations' + ) shipment = models.ForeignKey( SalesOrderShipment, diff --git a/InvenTree/order/serializers.py b/InvenTree/order/serializers.py index 70bef86ae4..34032d758b 100644 --- a/InvenTree/order/serializers.py +++ b/InvenTree/order/serializers.py @@ -17,30 +17,29 @@ from rest_framework.serializers import ValidationError from sql_util.utils import SubqueryCount +from common.settings import currency_code_mappings + +from company.serializers import CompanyBriefSerializer, SupplierPartSerializer + +from InvenTree.helpers import normalize from InvenTree.serializers import InvenTreeModelSerializer from InvenTree.serializers import InvenTreeAttachmentSerializer from InvenTree.serializers import InvenTreeMoneySerializer from InvenTree.serializers import InvenTreeAttachmentSerializerField - from InvenTree.status_codes import StockStatus -from company.serializers import CompanyBriefSerializer, SupplierPartSerializer +import order.models from part.serializers import PartBriefSerializer import stock.models -from stock.serializers import LocationBriefSerializer, StockItemSerializer, LocationSerializer - -from .models import PurchaseOrder, PurchaseOrderLineItem -from .models import PurchaseOrderAttachment, SalesOrderAttachment -from .models import SalesOrder, SalesOrderLineItem -from .models import SalesOrderShipment, SalesOrderAllocation - -from common.settings import currency_code_mappings +import stock.serializers class POSerializer(InvenTreeModelSerializer): - """ Serializer for a PurchaseOrder object """ + """ + Serializer for a PurchaseOrder object + """ def __init__(self, *args, **kwargs): @@ -67,7 +66,7 @@ class POSerializer(InvenTreeModelSerializer): queryset = queryset.annotate( overdue=Case( When( - PurchaseOrder.OVERDUE_FILTER, then=Value(True, output_field=BooleanField()), + order.models.PurchaseOrder.OVERDUE_FILTER, then=Value(True, output_field=BooleanField()), ), default=Value(False, output_field=BooleanField()) ) @@ -86,7 +85,7 @@ class POSerializer(InvenTreeModelSerializer): reference = serializers.CharField(required=True) class Meta: - model = PurchaseOrder + model = order.models.PurchaseOrder fields = [ 'pk', @@ -160,7 +159,7 @@ class POLineItemSerializer(InvenTreeModelSerializer): purchase_price_string = serializers.CharField(source='purchase_price', read_only=True) - destination_detail = LocationBriefSerializer(source='get_destination', read_only=True) + destination_detail = stock.serializers.LocationBriefSerializer(source='get_destination', read_only=True) purchase_price_currency = serializers.ChoiceField( choices=currency_code_mappings(), @@ -168,7 +167,7 @@ class POLineItemSerializer(InvenTreeModelSerializer): ) class Meta: - model = PurchaseOrderLineItem + model = order.models.PurchaseOrderLineItem fields = [ 'pk', @@ -195,7 +194,7 @@ class POLineItemReceiveSerializer(serializers.Serializer): """ line_item = serializers.PrimaryKeyRelatedField( - queryset=PurchaseOrderLineItem.objects.all(), + queryset=order.models.PurchaseOrderLineItem.objects.all(), many=False, allow_null=False, required=True, @@ -376,7 +375,7 @@ class POAttachmentSerializer(InvenTreeAttachmentSerializer): attachment = InvenTreeAttachmentSerializerField(required=True) class Meta: - model = PurchaseOrderAttachment + model = order.models.PurchaseOrderAttachment fields = [ 'pk', @@ -422,7 +421,7 @@ class SalesOrderSerializer(InvenTreeModelSerializer): queryset = queryset.annotate( overdue=Case( When( - SalesOrder.OVERDUE_FILTER, then=Value(True, output_field=BooleanField()), + order.models.SalesOrder.OVERDUE_FILTER, then=Value(True, output_field=BooleanField()), ), default=Value(False, output_field=BooleanField()) ) @@ -441,7 +440,7 @@ class SalesOrderSerializer(InvenTreeModelSerializer): reference = serializers.CharField(required=True) class Meta: - model = SalesOrder + model = order.models.SalesOrder fields = [ 'pk', @@ -484,8 +483,8 @@ class SalesOrderAllocationSerializer(InvenTreeModelSerializer): # Extra detail fields order_detail = SalesOrderSerializer(source='line.order', many=False, read_only=True) part_detail = PartBriefSerializer(source='item.part', many=False, read_only=True) - item_detail = StockItemSerializer(source='item', many=False, read_only=True) - location_detail = LocationSerializer(source='item.location', many=False, read_only=True) + item_detail = stock.serializers.StockItemSerializer(source='item', many=False, read_only=True) + location_detail = stock.serializers.LocationSerializer(source='item.location', many=False, read_only=True) def __init__(self, *args, **kwargs): @@ -509,7 +508,7 @@ class SalesOrderAllocationSerializer(InvenTreeModelSerializer): self.fields.pop('location_detail') class Meta: - model = SalesOrderAllocation + model = order.models.SalesOrderAllocation fields = [ 'pk', @@ -570,7 +569,7 @@ class SOLineItemSerializer(InvenTreeModelSerializer): ) class Meta: - model = SalesOrderLineItem + model = order.models.SalesOrderLineItem fields = [ 'pk', @@ -598,7 +597,7 @@ class SalesOrderShipmentSerializer(InvenTreeModelSerializer): allocations = SalesOrderAllocationSerializer(many=True, read_only=True, location_detail=True) class Meta: - model = SalesOrderShipment + model = order.models.SalesOrderShipment fields = [ 'pk', @@ -611,6 +610,160 @@ class SalesOrderShipmentSerializer(InvenTreeModelSerializer): ] +class SOShipmentAllocationItemSerializer(serializers.Serializer): + """ + A serializer for allocating a single stock-item against a SalesOrder shipment + """ + + class Meta: + fields = [ + 'line_item', + 'stock_item', + 'quantity', + ] + + line_item = serializers.PrimaryKeyRelatedField( + queryset=order.models.SalesOrderLineItem.objects.all(), + many=False, + allow_null=False, + required=True, + label=_('Stock Item'), + ) + + def validate_line_item(self, line_item): + + order = self.context['order'] + + # Ensure that the line item points to the correct order + if line_item.order != order: + raise ValidationError(_("Line item is not associated with this order")) + + return line_item + + stock_item = serializers.PrimaryKeyRelatedField( + queryset=stock.models.StockItem.objects.all(), + many=False, + allow_null=False, + required=True, + label=_('Stock Item'), + ) + + quantity = serializers.DecimalField( + max_digits=15, + decimal_places=5, + min_value=0, + required=True + ) + + def validate_quantity(self, quantity): + + if quantity <= 0: + raise ValidationError(_("Quantity must be positive")) + + return quantity + + def validate(self, data): + + super().validate(data) + + stock_item = data['stock_item'] + quantity = data['quantity'] + + if stock_item.serialized and quantity != 1: + raise ValidationError({ + 'quantity': _("Quantity must be 1 for serialized stock item"), + }) + + q = normalize(stock_item.unallocated_quantity()) + + if quantity > q: + raise ValidationError({ + 'quantity': _(f"Available quantity ({q}) exceeded") + }) + + return data + + +class SOShipmentAllocationSerializer(serializers.Serializer): + """ + DRF serializer for allocation of stock items against a sales order / shipment + """ + + class Meta: + fields = [ + 'items', + 'shipment', + ] + + items = SOShipmentAllocationItemSerializer(many=True) + + shipment = serializers.PrimaryKeyRelatedField( + queryset=order.models.SalesOrderShipment.objects.all(), + many=False, + allow_null=False, + required=True, + label=_('Shipment'), + ) + + def validate_shipment(self, shipment): + """ + Run validation against the provided shipment instance + """ + + order = self.context['order'] + + if shipment.shipment_date is not None: + raise ValidationError(_("Shipment has already been shipped")) + + if shipment.order != order: + raise ValidationError(_("Shipment is not associated with this order")) + + return shipment + + def validate(self, data): + """ + Serializer validation + """ + + data = super().validate(data) + + # Extract SalesOrder from serializer context + # order = self.context['order'] + + items = data.get('items', []) + + if len(items) == 0: + raise ValidationError(_('Allocation items must be provided')) + + return data + + def save(self): + """ + Perform the allocation of items against this order + """ + + data = self.validated_data + + items = data['items'] + shipment = data['shipment'] + + with transaction.atomic(): + for entry in items: + + # Create a new SalesOrderAllocation + order.models.SalesOrderAllocation.objects.create( + line=entry.get('line_item'), + item=entry.get('stock_item'), + quantity=entry.get('quantity'), + shipment=shipment, + ) + + try: + pass + except (ValidationError, DjangoValidationError) as exc: + raise ValidationError(detail=serializers.as_serializer_error(exc)) + + class SOAttachmentSerializer(InvenTreeAttachmentSerializer): """ Serializers for the SalesOrderAttachment model @@ -619,7 +772,7 @@ class SOAttachmentSerializer(InvenTreeAttachmentSerializer): attachment = InvenTreeAttachmentSerializerField(required=True) class Meta: - model = SalesOrderAttachment + model = order.models.SalesOrderAttachment fields = [ 'pk', diff --git a/InvenTree/order/test_api.py b/InvenTree/order/test_api.py index 899fa9a6fc..0f29e5bd16 100644 --- a/InvenTree/order/test_api.py +++ b/InvenTree/order/test_api.py @@ -11,9 +11,10 @@ from django.urls import reverse from InvenTree.api_tester import InvenTreeAPITestCase from InvenTree.status_codes import PurchaseOrderStatus +from part.models import Part from stock.models import StockItem -from .models import PurchaseOrder, PurchaseOrderLineItem, SalesOrder +import order.models as models class OrderTest(InvenTreeAPITestCase): @@ -85,7 +86,7 @@ class PurchaseOrderTest(OrderTest): self.filter({'overdue': True}, 0) self.filter({'overdue': False}, 7) - order = PurchaseOrder.objects.get(pk=1) + order = models.PurchaseOrder.objects.get(pk=1) order.target_date = datetime.now().date() - timedelta(days=10) order.save() @@ -118,7 +119,7 @@ class PurchaseOrderTest(OrderTest): Test that we can create / edit and delete a PurchaseOrder via the API """ - n = PurchaseOrder.objects.count() + n = models.PurchaseOrder.objects.count() url = reverse('api-po-list') @@ -135,7 +136,7 @@ class PurchaseOrderTest(OrderTest): ) # And no new PurchaseOrder objects should have been created - self.assertEqual(PurchaseOrder.objects.count(), n) + self.assertEqual(models.PurchaseOrder.objects.count(), n) # Ok, now let's give this user the correct permission self.assignRole('purchase_order.add') @@ -152,7 +153,7 @@ class PurchaseOrderTest(OrderTest): expected_code=201 ) - self.assertEqual(PurchaseOrder.objects.count(), n + 1) + self.assertEqual(models.PurchaseOrder.objects.count(), n + 1) pk = response.data['pk'] @@ -167,7 +168,7 @@ class PurchaseOrderTest(OrderTest): expected_code=400 ) - self.assertEqual(PurchaseOrder.objects.count(), n + 1) + self.assertEqual(models.PurchaseOrder.objects.count(), n + 1) url = reverse('api-po-detail', kwargs={'pk': pk}) @@ -198,7 +199,7 @@ class PurchaseOrderTest(OrderTest): response = self.delete(url, expected_code=204) # Number of PurchaseOrder objects should have decreased - self.assertEqual(PurchaseOrder.objects.count(), n) + self.assertEqual(models.PurchaseOrder.objects.count(), n) # And if we try to access the detail view again, it has gone response = self.get(url, expected_code=404) @@ -237,7 +238,7 @@ class PurchaseOrderReceiveTest(OrderTest): self.n = StockItem.objects.count() # Mark the order as "placed" so we can receive line items - order = PurchaseOrder.objects.get(pk=1) + order = models.PurchaseOrder.objects.get(pk=1) order.status = PurchaseOrderStatus.PLACED order.save() @@ -409,8 +410,8 @@ class PurchaseOrderReceiveTest(OrderTest): Test receipt of valid data """ - line_1 = PurchaseOrderLineItem.objects.get(pk=1) - line_2 = PurchaseOrderLineItem.objects.get(pk=2) + line_1 = models.PurchaseOrderLineItem.objects.get(pk=1) + line_2 = models.PurchaseOrderLineItem.objects.get(pk=2) self.assertEqual(StockItem.objects.filter(supplier_part=line_1.part).count(), 0) self.assertEqual(StockItem.objects.filter(supplier_part=line_2.part).count(), 0) @@ -437,7 +438,7 @@ class PurchaseOrderReceiveTest(OrderTest): # Before posting "valid" data, we will mark the purchase order as "pending" # In this case we do expect an error! - order = PurchaseOrder.objects.get(pk=1) + order = models.PurchaseOrder.objects.get(pk=1) order.status = PurchaseOrderStatus.PENDING order.save() @@ -463,8 +464,8 @@ class PurchaseOrderReceiveTest(OrderTest): # There should be two newly created stock items self.assertEqual(self.n + 2, StockItem.objects.count()) - line_1 = PurchaseOrderLineItem.objects.get(pk=1) - line_2 = PurchaseOrderLineItem.objects.get(pk=2) + line_1 = models.PurchaseOrderLineItem.objects.get(pk=1) + line_2 = models.PurchaseOrderLineItem.objects.get(pk=2) self.assertEqual(line_1.received, 50) self.assertEqual(line_2.received, 250) @@ -519,7 +520,7 @@ class SalesOrderTest(OrderTest): self.filter({'overdue': False}, 5) for pk in [1, 2]: - order = SalesOrder.objects.get(pk=pk) + order = models.SalesOrder.objects.get(pk=pk) order.target_date = datetime.now().date() - timedelta(days=10) order.save() @@ -547,7 +548,7 @@ class SalesOrderTest(OrderTest): Test that we can create / edit and delete a SalesOrder via the API """ - n = SalesOrder.objects.count() + n = models.SalesOrder.objects.count() url = reverse('api-so-list') @@ -577,7 +578,7 @@ class SalesOrderTest(OrderTest): ) # Check that the new order has been created - self.assertEqual(SalesOrder.objects.count(), n + 1) + self.assertEqual(models.SalesOrder.objects.count(), n + 1) # Grab the PK for the newly created SalesOrder pk = response.data['pk'] @@ -620,7 +621,7 @@ class SalesOrderTest(OrderTest): response = self.delete(url, expected_code=204) # Check that the number of sales orders has decreased - self.assertEqual(SalesOrder.objects.count(), n) + self.assertEqual(models.SalesOrder.objects.count(), n) # And the resource should no longer be available response = self.get(url, expected_code=404) @@ -641,3 +642,131 @@ class SalesOrderTest(OrderTest): }, expected_code=201 ) + + +class SalesOrderAllocateTest(OrderTest): + """ + Unit tests for allocating stock items against a SalesOrder + """ + + def setUp(self): + super().setUp() + + self.assignRole('sales_order.add') + + self.url = reverse('api-so-allocate', kwargs={'pk': 1}) + + self.order = models.SalesOrder.objects.get(pk=1) + + # Create some line items for this purchase order + parts = Part.objects.filter(salable=True) + + for part in parts: + + # Create a new line item + models.SalesOrderLineItem.objects.create( + order=self.order, + part=part, + quantity=5, + ) + + # Ensure we have stock! + StockItem.objects.create( + part=part, + quantity=100, + ) + + # Create a new shipment against this SalesOrder + self.shipment = models.SalesOrderShipment.objects.create( + order=self.order, + ) + + def test_invalid(self): + """ + Test POST with invalid data + """ + + # No data + response = self.post(self.url, {}, expected_code=400) + + self.assertIn('This field is required', str(response.data['items'])) + self.assertIn('This field is required', str(response.data['shipment'])) + + # Test with a single line items + line = self.order.lines.first() + part = line.part + + # Valid stock_item, but quantity is invalid + data = { + 'items': [{ + "line_item": line.pk, + "stock_item": part.stock_items.last().pk, + "quantity": 0, + }], + } + + response = self.post(self.url, data, expected_code=400) + + self.assertIn('Quantity must be positive', str(response.data['items'])) + + # Valid stock item, too much quantity + data['items'][0]['quantity'] = 250 + + response = self.post(self.url, data, expected_code=400) + + self.assertIn('Available quantity (100) exceeded', str(response.data['items'])) + + # Valid stock item, valid quantity + data['items'][0]['quantity'] = 50 + + # Invalid shipment! + data['shipment'] = 9999 + + response = self.post(self.url, data, expected_code=400) + + self.assertIn('does not exist', str(response.data['shipment'])) + + # Valid shipment, but points to the wrong order + shipment = models.SalesOrderShipment.objects.create( + order=models.SalesOrder.objects.get(pk=2), + ) + + data['shipment'] = shipment.pk + + response = self.post(self.url, data, expected_code=400) + + self.assertIn('Shipment is not associated with this order', str(response.data['shipment'])) + + def test_allocate(self): + """ + Test the the allocation endpoint acts as expected, + when provided with valid data! + """ + + # First, check that there are no line items allocated against this SalesOrder + self.assertEqual(self.order.stock_allocations.count(), 0) + + data = { + "items": [], + "shipment": self.shipment.pk, + } + + for line in self.order.lines.all(): + stock_item = line.part.stock_items.last() + + # Fully-allocate each line + data['items'].append({ + "line_item": line.pk, + "stock_item": stock_item.pk, + "quantity": 5 + }) + + self.post(self.url, data, expected_code=201) + + # There should have been 1 stock item allocated against each line item + n_lines = self.order.lines.count() + + self.assertEqual(self.order.stock_allocations.count(), n_lines) + + for line in self.order.lines.all(): + self.assertEqual(line.allocations.count(), 1) diff --git a/InvenTree/part/fixtures/part.yaml b/InvenTree/part/fixtures/part.yaml index 3c24690efc..77e808fd7f 100644 --- a/InvenTree/part/fixtures/part.yaml +++ b/InvenTree/part/fixtures/part.yaml @@ -69,6 +69,7 @@ name: 'Widget' description: 'A watchamacallit' category: 7 + salable: true assembly: true trackable: true tree_id: 0 @@ -83,6 +84,7 @@ name: 'Orphan' description: 'A part without a category' category: null + salable: true tree_id: 0 level: 0 lft: 0 @@ -95,6 +97,7 @@ name: 'Bob' description: 'Can we build it?' assembly: true + salable: true purchaseable: false category: 7 active: False @@ -113,6 +116,7 @@ description: 'A chair' is_template: True trackable: true + salable: true category: 7 tree_id: 1 level: 0 From 7252b299f70334a113fc93a0daebc994cb67b276 Mon Sep 17 00:00:00 2001 From: Oliver Date: Wed, 27 Oct 2021 00:41:12 +1100 Subject: [PATCH 012/129] Add modal API form to allocate stock items against a SalesOrder - Added model renderer for SalesOrderShipment - Some refactorin' --- InvenTree/order/serializers.py | 3 + InvenTree/templates/js/translated/build.js | 20 +- InvenTree/templates/js/translated/forms.js | 3 + .../js/translated/model_renderers.js | 17 + InvenTree/templates/js/translated/order.js | 315 ++++++++++++++++++ 5 files changed, 348 insertions(+), 10 deletions(-) diff --git a/InvenTree/order/serializers.py b/InvenTree/order/serializers.py index 34032d758b..c872e558a0 100644 --- a/InvenTree/order/serializers.py +++ b/InvenTree/order/serializers.py @@ -596,12 +596,15 @@ class SalesOrderShipmentSerializer(InvenTreeModelSerializer): allocations = SalesOrderAllocationSerializer(many=True, read_only=True, location_detail=True) + order_detail = SalesOrderSerializer(source='order', read_only=True, many=False) + class Meta: model = order.models.SalesOrderShipment fields = [ 'pk', 'order', + 'order_detail', 'allocations', 'shipment_date', 'checked_by', diff --git a/InvenTree/templates/js/translated/build.js b/InvenTree/templates/js/translated/build.js index b6c98fc49e..92cdea7452 100644 --- a/InvenTree/templates/js/translated/build.js +++ b/InvenTree/templates/js/translated/build.js @@ -1216,7 +1216,7 @@ function loadBuildOutputAllocationTable(buildInfo, output, options={}) { * * options: * - output: ID / PK of the associated build output (or null for untracked items) - * - source_location: ID / PK of the top-level StockLocation to take parts from (or null) + * - source_location: ID / PK of the top-level StockLocation to source stock from (or null) */ function allocateStockToBuild(build_id, part_id, bom_items, options={}) { @@ -1329,7 +1329,7 @@ function allocateStockToBuild(build_id, part_id, bom_items, options={}) { var html = ``; - // Render a "take from" input + // Render a "source location" input html += constructField( 'take_from', { @@ -1387,6 +1387,13 @@ function allocateStockToBuild(build_id, part_id, bom_items, options={}) { options, ); + // Add callback to "clear" button for take_from field + addClearCallback( + 'take_from', + take_from_field, + options, + ); + // Initialize stock item fields bom_items.forEach(function(bom_item) { initializeRelatedField( @@ -1446,14 +1453,7 @@ function allocateStockToBuild(build_id, part_id, bom_items, options={}) { ); }); - // Add callback to "clear" button for take_from field - addClearCallback( - 'take_from', - take_from_field, - options, - ); - - // Add button callbacks + // Add remove-row button callbacks $(options.modal).find('.button-row-remove').click(function() { var pk = $(this).attr('pk'); diff --git a/InvenTree/templates/js/translated/forms.js b/InvenTree/templates/js/translated/forms.js index db2c8e46cc..2818b00534 100644 --- a/InvenTree/templates/js/translated/forms.js +++ b/InvenTree/templates/js/translated/forms.js @@ -1576,6 +1576,9 @@ function renderModelData(name, model, data, parameters, options) { case 'salesorder': renderer = renderSalesOrder; break; + case 'salesordershipment': + renderer = renderSalesOrderShipment; + break; case 'manufacturerpart': renderer = renderManufacturerPart; break; diff --git a/InvenTree/templates/js/translated/model_renderers.js b/InvenTree/templates/js/translated/model_renderers.js index bf3628d656..b2495e207f 100644 --- a/InvenTree/templates/js/translated/model_renderers.js +++ b/InvenTree/templates/js/translated/model_renderers.js @@ -241,6 +241,23 @@ function renderSalesOrder(name, data, parameters, options) { } +// Renderer for "SalesOrderShipment" model +// eslint-disable-next-line no-unused-vars +function renderSalesOrderShipment(name, data, parameters, options) { + + var so_prefix = global_settings.SALESORDER_REFERENCE_PREFIX; + + var html = ` + ${so_prefix}${data.order_detail.reference} - {% trans "Shipment" %} ${data.reference} + + {% trans "Shipment ID" %}: ${data.pk} + + `; + + return html; +} + + // Renderer for "PartCategory" model // eslint-disable-next-line no-unused-vars function renderPartCategory(name, data, parameters, options) { diff --git a/InvenTree/templates/js/translated/order.js b/InvenTree/templates/js/translated/order.js index 6e69eb6a02..b02c757df4 100644 --- a/InvenTree/templates/js/translated/order.js +++ b/InvenTree/templates/js/translated/order.js @@ -19,6 +19,7 @@ */ /* exported + allocateStockToSalesOrder, createSalesOrder, editPurchaseOrderLineItem, exportOrder, @@ -1211,6 +1212,306 @@ function loadSalesOrderShipmentTable(table, options={}) { } +/** + * Allocate stock items against a SalesOrder + * + * arguments: + * - order_id: The ID / PK value for the SalesOrder + * - lines: A list of SalesOrderLineItem objects to be allocated + * + * options: + * - source_location: ID / PK of the top-level StockLocation to source stock from (or null) + */ +function allocateStockToSalesOrder(order_id, line_items, options={}) { + + function renderLineItemRow(line_item, quantity) { + // Function to render a single line_item row + + var pk = line_item.pk; + + var part = line_item.part_detail; + + var thumb = thumbnailImage(part.thumbnail || part.image); + + var delete_button = `
    `; + + delete_button += makeIconButton( + 'fa-times icon-red', + 'button-row-remove', + pk, + '{% trans "Remove row" %}', + ); + + delete_button += '
    '; + + var quantity_input = constructField( + `items_quantity_${pk}`, + { + type: 'decimal', + min_value: 0, + value: quantity || 0, + title: '{% trans "Specify stock allocation quantity" %}', + required: true, + }, + { + hideLabels: true, + } + ); + + var stock_input = constructField( + `items_stock_item_${pk}`, + { + type: 'related field', + required: 'true', + }, + { + hideLabels: true, + } + ); + + var html = ` + + + ${thumb} ${part.full_name} + + + ${stock_input} + + + ${quantity_input} + + + + + {% trans "Part" %} + {% trans "Stock Item" %} + {% trans "Quantity" %} + + + + ${table_entries} + + `; + + constructForm(`/api/order/so/${order_id}/allocate/`, { + method: 'POST', + fields: { + shipment: { + filters: { + order: order_id, + shipped: false, + }, + value: options.shipment || null, + auto_fill: true, + } + }, + preFormContent: html, + confirm: true, + confirmMessage: '{% trans "Confirm stock allocation" %}', + title: '{% trans "Allocate Stock Items to Sales Order" %}', + afterRender: function(fields, opts) { + + // Initialize source location field + var take_from_field = { + name: 'take_from', + model: 'stocklocation', + api_url: '{% url "api-location-list" %}', + required: false, + type: 'related field', + value: options.source_location || null, + noResults: function(query) { + return '{% trans "No matching stock locations" %}'; + }, + }; + + initializeRelatedField( + take_from_field, + null, + opts + ); + + // Add callback to "clear" button for take_from field + addClearCallback( + 'take_from', + take_from_field, + opts, + ); + + // Initialize fields for each line item + line_items.forEach(function(line_item) { + var pk = line_item.pk; + + initializeRelatedField( + { + name: `items_stock_item_${pk}`, + api_url: '{% url "api-stock-list" %}', + filters: { + part: line_item.part, + in_stock: true, + part_detail: true, + location_detail: true, + }, + model: 'stockitem', + required: true, + render_part_detail: true, + render_location_detail: true, + auto_fill: true, + onSelect: function(data, field, opts) { + // Adjust the 'quantity' field based on availability + + var todo = "actually do this"; + }, + adjustFilters: function(filters) { + // Restrict query to the selected location + var location = getFormFieldValue( + 'take_from', + {}, + { + modal: opts.modal, + } + ); + + filters.location = location; + filters.cascade = true; + + return filters; + }, + noResults: function(query) { + return '{% trans "No matching stock items" %}'; + } + }, + null, + opts + ); + }); + + // Add remove-row button callbacks + $(opts.modal).find('.button-row-remove').click(function() { + var pk = $(this).attr('pk'); + + $(opts.modal).find(`#allocation_row_${pk}`).remove(); + }); + }, + onSubmit: function(fields, opts) { + // Extract data elements from the form + var data = { + items: [], + shipment: getFormFieldValue( + 'shipment', + {}, + opts + ) + }; + + var item_pk_values = []; + + line_items.forEach(function(item) { + + var pk = item.pk; + + var quantity = getFormFieldValue( + `items_quantity_${pk}`, + {}, + opts + ); + + var stock_item = getFormFieldValue( + `items_stock_item_${pk}`, + {}, + opts + ); + + if (quantity != null) { + data.items.push({ + line_item: pk, + stock_item: stock_item, + quantity: quantity, + }); + + item_pk_values.push(pk); + } + }); + + // Provide nested values + opts.nested = { + 'items': item_pk_values + }; + + inventreePut( + opts.url, + data, + { + method: 'POST', + success: function(response) { + $(opts.modal).modal('hide'); + + if (options.success) { + options.success(response); + } + }, + error: function(xhr) { + switch (xhr.status) { + case 400: + handleFormErrors(xhr.responseJSON, fields, opts); + break; + default: + $(opts.modal).modal('hide'); + showApiError(xhr); + break; + } + } + } + ); + }, + }); +} + function loadSalesOrderAllocationTable(table, options={}) { /** @@ -1772,6 +2073,20 @@ function loadSalesOrderLineItemTable(table, options={}) { var line_item = $(table).bootstrapTable('getRowByUniqueId', pk); + allocateStockToSalesOrder( + options.order, + [ + line_item + ], + { + success: function() { + $(table).bootstrapTable('refresh'); + } + } + ); + + return; + // Quantity remaining to be allocated var remaining = (line_item.quantity || 0) - (line_item.allocated || 0); From 4d0f905afcd04e48f55e0d1ca1499d315cdc0e59 Mon Sep 17 00:00:00 2001 From: Oliver Date: Wed, 27 Oct 2021 00:47:15 +1100 Subject: [PATCH 013/129] Auto-fill the "quantity" field for the salesorder allocation table --- InvenTree/templates/js/translated/order.js | 85 ++++++---------------- 1 file changed, 23 insertions(+), 62 deletions(-) diff --git a/InvenTree/templates/js/translated/order.js b/InvenTree/templates/js/translated/order.js index b02c757df4..9d6db122cc 100644 --- a/InvenTree/templates/js/translated/order.js +++ b/InvenTree/templates/js/translated/order.js @@ -1296,6 +1296,8 @@ function allocateStockToSalesOrder(order_id, line_items, options={}) { var todo = "auto-calculate remaining quantity"; + var todo = "see how it is done for the build order allocation system!"; + var remaining = 0; table_entries += renderLineItemRow(line_item, remaining); @@ -1405,7 +1407,22 @@ function allocateStockToSalesOrder(order_id, line_items, options={}) { onSelect: function(data, field, opts) { // Adjust the 'quantity' field based on availability - var todo = "actually do this"; + if (!('quantity' in data)) { + return; + } + + // Calculate the available quantity + var available = Math.max((data.quantity || 0) - (data.allocated || 0), 0); + + // Remaining quantity to be allocated? + var todo = "fix this calculation!"; + var remaining = opts.quantity || available; + + // Maximum amount that we need + var desired = Math.min(available, remaining); + + updateFieldValue(`items_quantity_${pk}`, desired, {}, opts); + }, adjustFilters: function(filters) { // Restrict query to the selected location @@ -1420,6 +1437,11 @@ function allocateStockToSalesOrder(order_id, line_items, options={}) { filters.location = location; filters.cascade = true; + // Exclude expired stock? + if (global_settings.STOCK_ENABLE_EXPIRY && !global_settings.STOCK_ALLOW_EXPIRED_SALE) { + fields.item.filters.expired = false; + } + return filters; }, noResults: function(query) { @@ -2084,67 +2106,6 @@ function loadSalesOrderLineItemTable(table, options={}) { } } ); - - return; - - // Quantity remaining to be allocated - var remaining = (line_item.quantity || 0) - (line_item.allocated || 0); - - if (remaining < 0) { - remaining = 0; - } - - var fields = { - // SalesOrderLineItem reference - line: { - hidden: true, - value: pk, - }, - item: { - filters: { - part_detail: true, - location_detail: true, - in_stock: true, - part: line_item.part, - include_variants: false, - exclude_so_allocation: options.order, - }, - auto_fill: true, - onSelect: function(data, field, opts) { - // Quantity available from this stock item - - if (!('quantity' in data)) { - return; - } - - // Calculate the available quantity - var available = Math.max((data.quantity || 0) - (data.allocated || 0), 0); - - // Maximum amount that we need - var desired = Math.min(available, remaining); - - updateFieldValue('quantity', desired, {}, opts); - } - }, - quantity: { - value: remaining, - }, - }; - - // Exclude expired stock? - if (global_settings.STOCK_ENABLE_EXPIRY && !global_settings.STOCK_ALLOW_EXPIRED_SALE) { - fields.item.filters.expired = false; - } - - constructForm( - `/api/order/so-allocation/`, - { - method: 'POST', - fields: fields, - title: '{% trans "Allocate Stock Item" %}', - onSuccess: reloadTable, - } - ); }); // Callback for creating a new build From 2eb93b5a499ea96772370d10593bf01ebbc67c35 Mon Sep 17 00:00:00 2001 From: Oliver Date: Wed, 27 Oct 2021 00:57:47 +1100 Subject: [PATCH 014/129] Add functionality to create a new sales order shipment - From the "New Shipment" button - As a secondary modal from the stock allocation dialgo --- InvenTree/order/models.py | 1 - .../templates/order/sales_order_detail.html | 10 +++++ InvenTree/templates/js/translated/order.js | 40 +++++++++++++++++++ 3 files changed, 50 insertions(+), 1 deletion(-) diff --git a/InvenTree/order/models.py b/InvenTree/order/models.py index 05eabe3788..89585e218f 100644 --- a/InvenTree/order/models.py +++ b/InvenTree/order/models.py @@ -913,7 +913,6 @@ class SalesOrderShipment(models.Model): Attributes: order: SalesOrder reference - status: Status of this shipment (see SalesOrderStatus) shipment_date: Date this shipment was "shipped" (or null) checked_by: User reference field indicating who checked this order reference: Custom reference text for this shipment (e.g. consignment number?) diff --git a/InvenTree/order/templates/order/sales_order_detail.html b/InvenTree/order/templates/order/sales_order_detail.html index 87b6d80acf..a70f932466 100644 --- a/InvenTree/order/templates/order/sales_order_detail.html +++ b/InvenTree/order/templates/order/sales_order_detail.html @@ -113,6 +113,16 @@ order: {{ order.pk }}, shipped: false, }); + + $('#new-shipment').click(function() { + createSalesOrderShipment({ + order: {{ order.pk }}, + onSuccess: function(data) { + $('#pending-shipments-table').bootstrapTable('refresh'); + } + }); + }); + {% endif %} loadSalesOrderShipmentTable('#completed-shipments-table', { diff --git a/InvenTree/templates/js/translated/order.js b/InvenTree/templates/js/translated/order.js index 9d6db122cc..1d53824c7f 100644 --- a/InvenTree/templates/js/translated/order.js +++ b/InvenTree/templates/js/translated/order.js @@ -35,6 +35,38 @@ removePurchaseOrderLineItem, */ + +function salesOrderShipmentFields(options={}) { + var fields = { + order: {}, + reference: {}, + }; + + // If order is specified, hide the order field + if (options.order) { + fields.order.value = options.order; + fields.order.hidden = true; + } + + return fields; +} + + +// Open a dialog to create a new sales order shipment +function createSalesOrderShipment(options={}) { + constructForm('{% url "api-so-shipment-list" %}', { + method: 'POST', + fields: salesOrderShipmentFields(options), + title: '{% trans "Create New Shipment" %}', + onSuccess: function(data) { + if (options.onSuccess) { + options.onSuccess(data); + } + } + }); +} + + // Create a new SalesOrder function createSalesOrder(options={}) { @@ -1351,6 +1383,14 @@ function allocateStockToSalesOrder(order_id, line_items, options={}) { }, value: options.shipment || null, auto_fill: true, + secondary: { + title: '{% trans "New Shipment" %}', + fields: function() { + return salesOrderShipmentFields({ + order: order_id + }); + } + } } }, preFormContent: html, From 96be11edd4fe57de6574d9b63d7b0d6c7503fbc4 Mon Sep 17 00:00:00 2001 From: Oliver Date: Wed, 27 Oct 2021 01:05:10 +1100 Subject: [PATCH 015/129] Add 'status' field to shipment table - Is not yet implemented in the db model --- InvenTree/templates/js/translated/order.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/InvenTree/templates/js/translated/order.js b/InvenTree/templates/js/translated/order.js index 1d53824c7f..ce31549df4 100644 --- a/InvenTree/templates/js/translated/order.js +++ b/InvenTree/templates/js/translated/order.js @@ -1220,6 +1220,10 @@ function loadSalesOrderShipmentTable(table, options={}) { title: '{% trans "Reference" %}', switchable: false, }, + { + field: 'status', + title: '{% trans "Status" %}', + }, { field: 'shipment_date', title: '{% trans "Shipment Date" %}', From f32dfb01a2902d0fe6d261906c02b8726ebc7cb3 Mon Sep 17 00:00:00 2001 From: Oliver Date: Wed, 27 Oct 2021 01:15:39 +1100 Subject: [PATCH 016/129] Add breadcrumbs for build order page --- InvenTree/build/templates/build/build_base.html | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/InvenTree/build/templates/build/build_base.html b/InvenTree/build/templates/build/build_base.html index 1731e00403..3a33a57cdb 100644 --- a/InvenTree/build/templates/build/build_base.html +++ b/InvenTree/build/templates/build/build_base.html @@ -9,6 +9,17 @@ {% inventree_title %} | {% trans "Build Order" %} - {{ build }} {% endblock %} +{% block pre_content %} + +{% endblock %} + {% block below_thumbnail %}
    From 361f4498df0cdd05810344841589a9c113b34977 Mon Sep 17 00:00:00 2001 From: Oliver Date: Sat, 30 Oct 2021 23:51:59 +1100 Subject: [PATCH 017/129] Fix broken tables removed by conflict --- .../templates/order/sales_order_detail.html | 56 +++++++++++++++++++ .../order/templates/order/so_navbar.html | 47 ---------------- .../order/templates/order/so_sidebar.html | 1 + 3 files changed, 57 insertions(+), 47 deletions(-) delete mode 100644 InvenTree/order/templates/order/so_navbar.html diff --git a/InvenTree/order/templates/order/sales_order_detail.html b/InvenTree/order/templates/order/sales_order_detail.html index 5d4db70a34..109811452a 100644 --- a/InvenTree/order/templates/order/sales_order_detail.html +++ b/InvenTree/order/templates/order/sales_order_detail.html @@ -38,6 +38,35 @@
    +
    + {% if order.is_pending %} +
    +
    +

    {% trans "Pending Shipments" %}

    + {% include "spacer.html" %} +
    + +
    +
    +
    +
    + {% if roles.sales_order.change %} +
    +
    + {% endif %} +
    +
    + {% endif %} +
    +

    {% trans "Completed Shipments" %}

    +
    +
    +
    +
    +
    +

    {% trans "Build Orders" %}

    @@ -90,6 +119,33 @@ {% block js_ready %} {{ block.super }} + // Callback when the "shipments" panel is first loaded + onPanelLoad('order-shipments', function() { + + {% if order.is_pending %} + loadSalesOrderShipmentTable('#pending-shipments-table', { + order: {{ order.pk }}, + shipped: false, + }); + + $('#new-shipment').click(function() { + createSalesOrderShipment({ + order: {{ order.pk }}, + onSuccess: function(data) { + $('#pending-shipments-table').bootstrapTable('refresh'); + } + }); + }); + + {% endif %} + + loadSalesOrderShipmentTable('#completed-shipments-table', { + order: {{ order.pk }}, + shipped: true, + }); + + }); + $('#edit-notes').click(function() { constructForm('{% url "api-so-detail" order.pk %}', { fields: { diff --git a/InvenTree/order/templates/order/so_navbar.html b/InvenTree/order/templates/order/so_navbar.html deleted file mode 100644 index 814df0fca6..0000000000 --- a/InvenTree/order/templates/order/so_navbar.html +++ /dev/null @@ -1,47 +0,0 @@ -{% load i18n %} -{% load static %} -{% load inventree_extras %} - - \ No newline at end of file diff --git a/InvenTree/order/templates/order/so_sidebar.html b/InvenTree/order/templates/order/so_sidebar.html index be924eb37b..6ee68949ee 100644 --- a/InvenTree/order/templates/order/so_sidebar.html +++ b/InvenTree/order/templates/order/so_sidebar.html @@ -3,6 +3,7 @@ {% load inventree_extras %} {% include "sidebar_item.html" with label='order-items' text="Line Items" icon="fa-list-ol" %} +{% include "sidebar_item.html" with label='order-shipments' text="Shipments" icon="fa-truck" %} {% include "sidebar_item.html" with label='order-builds' text="Build Orders" icon="fa-tools" %} {% include "sidebar_item.html" with label='order-attachments' text="Attachments" icon="fa-paperclip" %} {% include "sidebar_item.html" with label='order-notes' text="Notes" icon="fa-clipboard" %} From 2d9f7364fd768164edf765d3fe9ecb9bd07aacba Mon Sep 17 00:00:00 2001 From: Oliver Date: Wed, 17 Nov 2021 21:10:32 +1100 Subject: [PATCH 018/129] Fix action buttons for "company" page --- .../templates/company/company_base.html | 23 +++++++++++-------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/InvenTree/company/templates/company/company_base.html b/InvenTree/company/templates/company/company_base.html index b9cd650395..488ed2bc80 100644 --- a/InvenTree/company/templates/company/company_base.html +++ b/InvenTree/company/templates/company/company_base.html @@ -23,15 +23,20 @@ {% endif %} -{% if perms.company.change_company %} - -{% endif %} -{% if perms.company.delete_company %} - +{% if perms.company.change_company or perms.company.delete_company %} +
    + + +
    {% endif %} {% endblock %} From 1c8b134ede23146af502b80d3a2bb20049a08af4 Mon Sep 17 00:00:00 2001 From: Oliver Date: Wed, 17 Nov 2021 22:29:59 +1100 Subject: [PATCH 019/129] Add part category link to stock item detail page --- InvenTree/stock/templates/stock/item_base.html | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/InvenTree/stock/templates/stock/item_base.html b/InvenTree/stock/templates/stock/item_base.html index 0f8d81203a..ff117cd071 100644 --- a/InvenTree/stock/templates/stock/item_base.html +++ b/InvenTree/stock/templates/stock/item_base.html @@ -232,6 +232,15 @@ {% endif %} + {% if item.part.category %} + + + {% trans "Part Category" %} + + {{ item.part.category }} + + + {% endif %} {% if item.serialized %} From d3b9adc87a693e70263c02f883888ed89444b32b Mon Sep 17 00:00:00 2001 From: Oliver Date: Fri, 26 Nov 2021 10:50:43 +1100 Subject: [PATCH 020/129] Separate "completed shipments" onto its own tab --- InvenTree/order/templates/order/sales_order_detail.html | 7 +++++-- InvenTree/order/templates/order/so_sidebar.html | 8 ++++++-- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/InvenTree/order/templates/order/sales_order_detail.html b/InvenTree/order/templates/order/sales_order_detail.html index bc2c481eae..00314e8fe1 100644 --- a/InvenTree/order/templates/order/sales_order_detail.html +++ b/InvenTree/order/templates/order/sales_order_detail.html @@ -37,8 +37,8 @@
    +{% if order.is_pending %}
    - {% if order.is_pending %}

    {% trans "Pending Shipments" %}

    @@ -57,7 +57,10 @@ {% endif %}
    - {% endif %} +
    +{% endif %} + +

    {% trans "Completed Shipments" %}

    diff --git a/InvenTree/order/templates/order/so_sidebar.html b/InvenTree/order/templates/order/so_sidebar.html index c18c766e6c..c43e0537c5 100644 --- a/InvenTree/order/templates/order/so_sidebar.html +++ b/InvenTree/order/templates/order/so_sidebar.html @@ -4,8 +4,12 @@ {% trans "Line Items" as text %} {% include "sidebar_item.html" with label='order-items' text=text icon="fa-list-ol" %} -{% trans "Shipments" as text %} -{% include "sidebar_item.html" with label='order-shipments' text=text icon="fa-truck" %} +{% if order.is_pending %} +{% trans "Pending Shipments" as text %} +{% include "sidebar_item.html" with label='order-shipments' text=text icon="fa-truck-loading" %} +{% endif %} +{% trans "Completed Shipments" as text %} +{% include "sidebar_item.html" with label='order-shipments-complete' text=text icon="fa-truck" %} {% trans "Build Orders" as text %} {% include "sidebar_item.html" with label='order-builds' text=text icon="fa-tools" %} {% trans "Attachments" as text %} From 136fc67675d9d2210a0ae4cfa63cd3800d402c6d Mon Sep 17 00:00:00 2001 From: Oliver Date: Fri, 26 Nov 2021 11:25:11 +1100 Subject: [PATCH 021/129] Adds data toolbar --- InvenTree/order/templates/order/sales_order_detail.html | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/InvenTree/order/templates/order/sales_order_detail.html b/InvenTree/order/templates/order/sales_order_detail.html index 00314e8fe1..9b7dba7bc9 100644 --- a/InvenTree/order/templates/order/sales_order_detail.html +++ b/InvenTree/order/templates/order/sales_order_detail.html @@ -65,7 +65,9 @@

    {% trans "Completed Shipments" %}

    -
    +
    +
    +
    From 64d2674c04f4950eda6aee572f46190fa8d41373 Mon Sep 17 00:00:00 2001 From: Oliver Date: Fri, 26 Nov 2021 20:38:37 +1100 Subject: [PATCH 022/129] Add action menu (hide for now) --- InvenTree/order/templates/order/sales_order_detail.html | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/InvenTree/order/templates/order/sales_order_detail.html b/InvenTree/order/templates/order/sales_order_detail.html index 9b7dba7bc9..44521e809f 100644 --- a/InvenTree/order/templates/order/sales_order_detail.html +++ b/InvenTree/order/templates/order/sales_order_detail.html @@ -44,6 +44,14 @@

    {% trans "Pending Shipments" %}

    {% include "spacer.html" %}
    + {% if 0 %} + + + {% endif %} From d5e74896237e2327632c3bd6f0c66fa557f96260 Mon Sep 17 00:00:00 2001 From: Oliver Date: Fri, 26 Nov 2021 22:31:25 +1100 Subject: [PATCH 023/129] Table filters --- .../templates/order/sales_order_detail.html | 19 +++++++++++++++++-- InvenTree/templates/js/translated/order.js | 6 +++++- 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/InvenTree/order/templates/order/sales_order_detail.html b/InvenTree/order/templates/order/sales_order_detail.html index 44521e809f..67c4f951e4 100644 --- a/InvenTree/order/templates/order/sales_order_detail.html +++ b/InvenTree/order/templates/order/sales_order_detail.html @@ -61,6 +61,9 @@
    {% if roles.sales_order.change %}
    +
    + {% include "filter_list.html" with id="pending-shipments" %} +
    {% endif %}
    @@ -74,6 +77,9 @@
    +
    + {% include "filter_list.html" with id="completed-shipments" %} +
    @@ -84,7 +90,12 @@

    {% trans "Build Orders" %}

    -
    +
    +
    + {% include "filter_list.html" with id='build' %} +
    +
    +
  • @@ -138,6 +149,7 @@ loadSalesOrderShipmentTable('#pending-shipments-table', { order: {{ order.pk }}, shipped: false, + filter_target: '#filter-list-pending-shipments', }); $('#new-shipment').click(function() { @@ -151,11 +163,14 @@ {% endif %} + }); + + onPanelLoad('order-shipments-complete', function() { loadSalesOrderShipmentTable('#completed-shipments-table', { order: {{ order.pk }}, shipped: true, + filter_target: '#filter-list-completed-shipments', }); - }); $('#edit-notes').click(function() { diff --git a/InvenTree/templates/js/translated/order.js b/InvenTree/templates/js/translated/order.js index 5fe4754e4a..a403d68fed 100644 --- a/InvenTree/templates/js/translated/order.js +++ b/InvenTree/templates/js/translated/order.js @@ -1156,7 +1156,7 @@ function loadSalesOrderShipmentTable(table, options={}) { filters[key] = options.params[key]; } - var todo = "Setup filter list for this table"; + setupFilterList('salesordershipment', $(table), options.filter_target); function makeShipmentActions(row) { // Construct "actions" for the given shipment row @@ -1733,6 +1733,10 @@ function showAllocationSubTable(index, row, element, options) { data: row.allocations, showHeader: false, columns: [ + { + field: 'part', + title: '{% trans "Part" %}', + }, { field: 'allocated', title: '{% trans "Quantity" %}', From c943b320e6596aa8a9596f36cdab7aceae673afb Mon Sep 17 00:00:00 2001 From: Oliver Date: Fri, 26 Nov 2021 23:02:29 +1100 Subject: [PATCH 024/129] shipment table tweaks --- InvenTree/order/serializers.py | 2 +- InvenTree/templates/js/translated/order.js | 13 ++++++++++--- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/InvenTree/order/serializers.py b/InvenTree/order/serializers.py index 42e08fe9cb..f75d373d13 100644 --- a/InvenTree/order/serializers.py +++ b/InvenTree/order/serializers.py @@ -489,7 +489,7 @@ class SalesOrderAllocationSerializer(InvenTreeModelSerializer): def __init__(self, *args, **kwargs): order_detail = kwargs.pop('order_detail', False) - part_detail = kwargs.pop('part_detail', False) + part_detail = kwargs.pop('part_detail', True) item_detail = kwargs.pop('item_detail', False) location_detail = kwargs.pop('location_detail', False) diff --git a/InvenTree/templates/js/translated/order.js b/InvenTree/templates/js/translated/order.js index a403d68fed..6646abafee 100644 --- a/InvenTree/templates/js/translated/order.js +++ b/InvenTree/templates/js/translated/order.js @@ -1206,7 +1206,11 @@ function loadSalesOrderShipmentTable(table, options={}) { detailFormatter: function(index, row, element) { return showAllocationSubTable(index, row, element, options); }, - onPostBody: setupShipmentCallbacks, + onPostBody: function() { + setupShipmentCallbacks(); + + $(table).bootstrapTable('expandAllRows'); + }, formatNoMatches: function() { return '{% trans "No matching shipments found" %}'; }, @@ -1218,7 +1222,7 @@ function loadSalesOrderShipmentTable(table, options={}) { }, { field: 'reference', - title: '{% trans "Reference" %}', + title: '{% trans "Shipment" %}', switchable: false, }, { @@ -1734,8 +1738,11 @@ function showAllocationSubTable(index, row, element, options) { showHeader: false, columns: [ { - field: 'part', + field: 'part_detail', title: '{% trans "Part" %}', + formatter: function(part, row) { + return imageHoverIcon(part.thumbnail) + renderLink(part.full_name, `/part/${part.pk}/`); + } }, { field: 'allocated', From 8aed68a1d1b44877f217251a31207d54dc86c472 Mon Sep 17 00:00:00 2001 From: Oliver Date: Fri, 26 Nov 2021 23:20:27 +1100 Subject: [PATCH 025/129] Adds "shipped" field to SalesOrderLineItem - This is an internal tracker of quantity of items shipped - Updated by the database logic (not by the user) - Keeps track of how many items have been shipped against a lineitem - Does not matter if the actual stock items are later removed from the database --- .../0057_salesorderlineitem_shipped.py | 20 ++++++ .../migrations/0058_auto_20211126_1210.py | 62 +++++++++++++++++++ InvenTree/order/models.py | 9 +++ InvenTree/order/serializers.py | 3 + 4 files changed, 94 insertions(+) create mode 100644 InvenTree/order/migrations/0057_salesorderlineitem_shipped.py create mode 100644 InvenTree/order/migrations/0058_auto_20211126_1210.py diff --git a/InvenTree/order/migrations/0057_salesorderlineitem_shipped.py b/InvenTree/order/migrations/0057_salesorderlineitem_shipped.py new file mode 100644 index 0000000000..e11eb62cbb --- /dev/null +++ b/InvenTree/order/migrations/0057_salesorderlineitem_shipped.py @@ -0,0 +1,20 @@ +# Generated by Django 3.2.5 on 2021-11-26 12:06 + +import InvenTree.fields +import django.core.validators +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('order', '0056_alter_salesorderallocation_shipment'), + ] + + operations = [ + migrations.AddField( + model_name='salesorderlineitem', + name='shipped', + field=InvenTree.fields.RoundingDecimalField(decimal_places=5, default=0, help_text='Shipped quantity', max_digits=15, validators=[django.core.validators.MinValueValidator(0)], verbose_name='Shipped'), + ), + ] diff --git a/InvenTree/order/migrations/0058_auto_20211126_1210.py b/InvenTree/order/migrations/0058_auto_20211126_1210.py new file mode 100644 index 0000000000..2736416e66 --- /dev/null +++ b/InvenTree/order/migrations/0058_auto_20211126_1210.py @@ -0,0 +1,62 @@ +# Generated by Django 3.2.5 on 2021-11-26 12:10 + +from django.db import migrations + +from InvenTree.status_codes import SalesOrderStatus + + +def calculate_shipped_quantity(apps, schema_editor): + """ + In migration 0057 we added a new field 'shipped' to the SalesOrderLineItem model. + + This field is used to record the number of items shipped, + even if the actual stock items get deleted from the database. + + For existing orders in the database, we calculate this as follows: + + - If the order is "shipped" then we use the total quantity + - Otherwise, we use the "fulfilled" calculated quantity + + """ + + StockItem = apps.get_model('stock', 'stockitem') + SalesOrderLineItem = apps.get_model('order', 'salesorderlineitem') + + for item in SalesOrderLineItem.objects.all(): + + if item.order.status == SalesOrderStatus.SHIPPED: + item.shipped = item.quantity + else: + # Calculate total stock quantity of items allocated to this order? + items = StockItem.objects.filter( + sales_order=item.order, + part=item.part + ) + + q = sum([item.quantity for item in items]) + + item.shipped = q + + item.save() + + +def reverse_calculate_shipped_quantity(apps, schema_editor): + """ + Provided only for reverse migration compatibility. + This function does nothing. + """ + pass + + +class Migration(migrations.Migration): + + dependencies = [ + ('order', '0057_salesorderlineitem_shipped'), + ] + + operations = [ + migrations.RunPython( + calculate_shipped_quantity, + reverse_code=reverse_calculate_shipped_quantity + ) + ] diff --git a/InvenTree/order/models.py b/InvenTree/order/models.py index f87e337b35..73c507b38d 100644 --- a/InvenTree/order/models.py +++ b/InvenTree/order/models.py @@ -814,6 +814,7 @@ class SalesOrderLineItem(OrderLineItem): order: Link to the SalesOrder that this line item belongs to part: Link to a Part object (may be null) sale_price: The unit sale price for this OrderLineItem + shipped: The number of items which have actually shipped against this line item """ @staticmethod @@ -838,6 +839,14 @@ class SalesOrderLineItem(OrderLineItem): help_text=_('Unit sale price'), ) + shipped = RoundingDecimalField( + verbose_name=_('Shipped'), + help_text=_('Shipped quantity'), + default=0, + max_digits=15, decimal_places=5, + validators=[MinValueValidator(0)] + ) + class Meta: unique_together = [ ] diff --git a/InvenTree/order/serializers.py b/InvenTree/order/serializers.py index f75d373d13..6a139a32a9 100644 --- a/InvenTree/order/serializers.py +++ b/InvenTree/order/serializers.py @@ -555,6 +555,8 @@ class SOLineItemSerializer(InvenTreeModelSerializer): allocated = serializers.FloatField(source='allocated_quantity', read_only=True) fulfilled = serializers.FloatField(source='fulfilled_quantity', read_only=True) + shipped = InvenTreeDecimalField(read_only=True) + sale_price = InvenTreeMoneySerializer( allow_null=True ) @@ -584,6 +586,7 @@ class SOLineItemSerializer(InvenTreeModelSerializer): 'sale_price', 'sale_price_currency', 'sale_price_string', + 'shipped', ] From 0b997dc7848b5c1570ac6e0167276ab9724fa89c Mon Sep 17 00:00:00 2001 From: Oliver Date: Fri, 26 Nov 2021 23:30:34 +1100 Subject: [PATCH 026/129] Display both 'allocated' and 'fulfilled' quantity values in salesorder table --- InvenTree/order/serializers.py | 2 - InvenTree/templates/js/translated/order.js | 92 ++++++++++++++-------- 2 files changed, 59 insertions(+), 35 deletions(-) diff --git a/InvenTree/order/serializers.py b/InvenTree/order/serializers.py index 6a139a32a9..8cb1e8a699 100644 --- a/InvenTree/order/serializers.py +++ b/InvenTree/order/serializers.py @@ -553,7 +553,6 @@ class SOLineItemSerializer(InvenTreeModelSerializer): quantity = InvenTreeDecimalField() allocated = serializers.FloatField(source='allocated_quantity', read_only=True) - fulfilled = serializers.FloatField(source='fulfilled_quantity', read_only=True) shipped = InvenTreeDecimalField(read_only=True) @@ -576,7 +575,6 @@ class SOLineItemSerializer(InvenTreeModelSerializer): 'allocated', 'allocations', 'quantity', - 'fulfilled', 'reference', 'notes', 'order', diff --git a/InvenTree/templates/js/translated/order.js b/InvenTree/templates/js/translated/order.js index 6646abafee..5766b7216d 100644 --- a/InvenTree/templates/js/translated/order.js +++ b/InvenTree/templates/js/translated/order.js @@ -1918,7 +1918,7 @@ function loadSalesOrderLineItemTable(table, options={}) { */ { sortable: true, - sortName: 'part__name', + sortName: 'part_detail.name', field: 'part', title: '{% trans "Part" %}', switchable: false, @@ -2015,40 +2015,66 @@ function loadSalesOrderLineItemTable(table, options={}) { }, }, ); + + columns.push( + { + field: 'allocated', + title: '{% trans "Allocated" %}', + switchable: false, + sortable: true, + formatter: function(value, row, index, field) { + return makeProgressBar(row.allocated, row.quantity, { + id: `order-line-progress-${row.pk}`, + }); + }, + sorter: function(valA, valB, rowA, rowB) { + + var A = rowA.allocated; + var B = rowB.allocated; + + if (A == 0 && B == 0) { + return (rowA.quantity > rowB.quantity) ? 1 : -1; + } + + var progressA = parseFloat(A) / rowA.quantity; + var progressB = parseFloat(B) / rowB.quantity; + + return (progressA < progressB) ? 1 : -1; + } + }, + ); } - columns.push( - { - field: 'allocated', - title: pending ? '{% trans "Allocated" %}' : '{% trans "Fulfilled" %}', - switchable: false, - formatter: function(value, row, index, field) { + columns.push({ + field: 'shipped', + title: '{% trans "Shipped" %}', + switchable: false, + sortable: true, + formatter: function(value, row) { + return makeProgressBar(row.shipped, row.quantity, { + id: `order-line-shipped-${row.pk}` + }); + }, + sorter: function(valA, valB, rowA, rowB) { + var A = rowA.shipped; + var B = rowB.shipped; - var quantity = pending ? row.allocated : row.fulfilled; - return makeProgressBar(quantity, row.quantity, { - id: `order-line-progress-${row.pk}`, - }); - }, - sorter: function(valA, valB, rowA, rowB) { - - var A = pending ? rowA.allocated : rowA.fulfilled; - var B = pending ? rowB.allocated : rowB.fulfilled; - - if (A == 0 && B == 0) { - return (rowA.quantity > rowB.quantity) ? 1 : -1; - } - - var progressA = parseFloat(A) / rowA.quantity; - var progressB = parseFloat(B) / rowB.quantity; - - return (progressA < progressB) ? 1 : -1; + if (A == 0 && B == 0) { + return (rowA.quantity > rowB.quantity) ? 1 : -1; } - }, - { - field: 'notes', - title: '{% trans "Notes" %}', - }, - ); + + var progressA = parseFloat(A) / rowA.quantity; + var progressB = parseFloat(B) / rowB.quantity; + + return (progressA < progressB) ? 1 : -1; + } + }); + + columns.push( + { + field: 'notes', + title: '{% trans "Notes" %}', + }); if (pending) { columns.push({ @@ -2230,7 +2256,7 @@ function loadSalesOrderLineItemTable(table, options={}) { $(table).inventreeTable({ onPostBody: setupCallbacks, name: 'salesorderlineitems', - sidePagination: 'server', + sidePagination: 'client', formatNoMatches: function() { return '{% trans "No matching line items" %}'; }, @@ -2246,7 +2272,7 @@ function loadSalesOrderLineItemTable(table, options={}) { // Order is pending return row.allocated > 0; } else { - return row.fulfilled > 0; + return row.shipped > 0; } }, detailFormatter: function(index, row, element) { From c6b11b5e3865400b9b669839f964a60db81f116a Mon Sep 17 00:00:00 2001 From: Oliver Date: Mon, 29 Nov 2021 23:11:21 +1100 Subject: [PATCH 027/129] New logic for completing a SalesOrderShipment --- InvenTree/order/models.py | 52 ++++++++++++++++++++++++++++++--------- 1 file changed, 41 insertions(+), 11 deletions(-) diff --git a/InvenTree/order/models.py b/InvenTree/order/models.py index 866ecd967a..37092fd0e3 100644 --- a/InvenTree/order/models.py +++ b/InvenTree/order/models.py @@ -595,6 +595,14 @@ class SalesOrder(Order): return False + def is_completed(self): + """ + Check if this order is "shipped" (all line items delivered), + and mark it as "shipped" if so. + """ + + return all([line.is_completed() for line in self.lines.all()]) + @transaction.atomic def ship_order(self, user): """ Mark this order as 'shipped' """ @@ -786,13 +794,15 @@ class PurchaseOrderLineItem(OrderLineItem): ) def get_destination(self): - """Show where the line item is or should be placed""" - # NOTE: If a line item gets split when recieved, only an arbitrary - # stock items location will be reported as the location for the - # entire line. - for stock in stock_models.StockItem.objects.filter( - supplier_part=self.part, purchase_order=self.order - ): + """ + Show where the line item is or should be placed + + NOTE: If a line item gets split when recieved, only an arbitrary + stock items location will be reported as the location for the + entire line. + """ + + for stock in stock_models.StockItem.objects.filter(supplier_part=self.part, purchase_order=self.order): if stock.location: return stock.location if self.destination: @@ -882,6 +892,13 @@ class SalesOrderLineItem(OrderLineItem): """ Return True if this line item is over allocated """ return self.allocated_quantity() > self.quantity + def is_completed(self): + """ + Return True if this line item is completed (has been fully shipped) + """ + + return self.shipped >= self.quantity + def get_next_shipment_number(): """ @@ -980,7 +997,7 @@ class SalesOrderShipment(models.Model): ) @transaction.atomic - def complete_shipment(self): + def complete_shipment(self, user): """ Complete this particular shipment: @@ -989,16 +1006,25 @@ class SalesOrderShipment(models.Model): 3. Set the "shipment_date" to now """ + if self.shipment_date: + # Ignore, shipment has already been sent! + return + # Iterate through each stock item assigned to this shipment for allocation in self.allocations.all(): - pass - - + + # Mark the allocation as "complete" + allocation.complete_allocation(user) # Update the "shipment" date self.shipment_date = datetime.now() + self.shipped_by = user self.save() + # Finally, check if the order is fully shipped + if self.order.is_completed(): + self.order.status = SalesOrderStatus.SHIPPED + self.order.save() class SalesOrderAllocation(models.Model): @@ -1134,6 +1160,10 @@ class SalesOrderAllocation(models.Model): user=user ) + # Update the 'shipped' quantity + self.line.shipped += self.quantity + self.line.save() + # Update our own reference to the StockItem # (It may have changed if the stock was split) self.item = item From f3f3030b3773bcd9570c0e26a302cdd5630badd2 Mon Sep 17 00:00:00 2001 From: Oliver Date: Tue, 30 Nov 2021 00:02:03 +1100 Subject: [PATCH 028/129] Adds API endpoint to "ship" a sales order shipment --- InvenTree/order/api.py | 27 ++++++++++++++ InvenTree/order/models.py | 18 +++++++--- InvenTree/order/serializers.py | 41 +++++++++++++++++++++- InvenTree/templates/js/translated/order.js | 39 +++++++++++++++++--- InvenTree/templates/js/translated/stock.js | 3 ++ 5 files changed, 119 insertions(+), 9 deletions(-) diff --git a/InvenTree/order/api.py b/InvenTree/order/api.py index 2ee9a7694d..f4e10bff08 100644 --- a/InvenTree/order/api.py +++ b/InvenTree/order/api.py @@ -767,6 +767,32 @@ class SOShipmentDetail(generics.RetrieveUpdateAPIView): serializer_class = serializers.SalesOrderShipmentSerializer +class SOShipmentComplete(generics.CreateAPIView): + """ + API endpoint for completing (shipping) a SalesOrderShipment + """ + + queryset = models.SalesOrderShipment.objects.all() + serializer_class = serializers.SalesOrderShipmentCompleteSerializer + + def get_serializer_context(self): + """ + Pass the request object to the serializer + """ + + ctx = super().get_serializer_context() + ctx['request'] = self.request + + try: + ctx['shipment'] = models.SalesOrderShipment.objects.get( + pk=self.kwargs.get('pk', None) + ) + except: + pass + + return ctx + + class POAttachmentList(generics.ListCreateAPIView, AttachmentMixin): """ API endpoint for listing (and creating) a PurchaseOrderAttachment (file upload) @@ -829,6 +855,7 @@ order_api_urls = [ url(r'^shipment/', include([ url(r'^(?P\d+)/', include([ + url(r'^ship/$', SOShipmentComplete.as_view(), name='api-so-shipment-ship'), url(r'^.*$', SOShipmentDetail.as_view(), name='api-so-shipment-detail'), ])), url(r'^.*$', SOShipmentList.as_view(), name='api-so-shipment-list'), diff --git a/InvenTree/order/models.py b/InvenTree/order/models.py index 37092fd0e3..10b0a45f62 100644 --- a/InvenTree/order/models.py +++ b/InvenTree/order/models.py @@ -996,6 +996,15 @@ class SalesOrderShipment(models.Model): help_text=_('Shipment tracking information'), ) + def check_can_complete(self): + + if self.shipment_date: + # Shipment has already been sent! + raise ValidationError(_("Shipment has already been sent")) + + if self.allocations.count() == 0: + raise ValidationError(_("Shipment has no allocated stock items")) + @transaction.atomic def complete_shipment(self, user): """ @@ -1006,12 +1015,13 @@ class SalesOrderShipment(models.Model): 3. Set the "shipment_date" to now """ - if self.shipment_date: - # Ignore, shipment has already been sent! - return + # Check if the shipment can be completed (throw error if not) + self.check_can_complete() + + allocations = self.allocations.all() # Iterate through each stock item assigned to this shipment - for allocation in self.allocations.all(): + for allocation in allocations: # Mark the allocation as "complete" allocation.complete_allocation(user) diff --git a/InvenTree/order/serializers.py b/InvenTree/order/serializers.py index d2179d16b7..cffdbaec32 100644 --- a/InvenTree/order/serializers.py +++ b/InvenTree/order/serializers.py @@ -25,7 +25,6 @@ from InvenTree.helpers import normalize from InvenTree.serializers import InvenTreeModelSerializer from InvenTree.serializers import InvenTreeDecimalField from InvenTree.serializers import InvenTreeMoneySerializer -from InvenTree.serializers import InvenTreeAttachmentSerializerField from InvenTree.status_codes import StockStatus import order.models @@ -617,6 +616,46 @@ class SalesOrderShipmentSerializer(InvenTreeModelSerializer): ] +class SalesOrderShipmentCompleteSerializer(serializers.ModelSerializer): + """ + Serializer for completing (shipping) a SalesOrderShipment + """ + + class Meta: + model = order.models.SalesOrderShipment + + fields = [ + 'tracking_number', + ] + + def validate(self, data): + + data = super().validate(data) + + shipment = self.context.get('shipment', None) + + if not shipment: + raise ValidationError(_("No shipment details provided")) + + shipment.check_can_complete() + + return data + + def save(self): + + shipment = self.context.get('shipment', None) + + if not shipment: + return + + data = self.validated_data + + request = self.context['request'] + user = request.user + + shipment.complete_shipment(user) + + class SOShipmentAllocationItemSerializer(serializers.Serializer): """ A serializer for allocating a single stock-item against a SalesOrder shipment diff --git a/InvenTree/templates/js/translated/order.js b/InvenTree/templates/js/translated/order.js index 478bccc2a5..50d6b4444e 100644 --- a/InvenTree/templates/js/translated/order.js +++ b/InvenTree/templates/js/translated/order.js @@ -20,6 +20,7 @@ /* exported allocateStockToSalesOrder, + completeShipment, createSalesOrder, editPurchaseOrderLineItem, exportOrder, @@ -52,6 +53,26 @@ function salesOrderShipmentFields(options={}) { } +/* + * Complete a shipment + */ +function completeShipment(shipment_id) { + + constructForm(`/api/order/so/shipment/${shipment_id}/ship/`, { + method: 'POST', + title: '{% trans "Complete Shipment" %}', + fields: { + tracking_number: {}, + }, + confirm: true, + confirmMessage: '{% trans "Confirm Shipment" %}', + onSuccess: function(data) { + // TODO + } + }); +} + + // Open a dialog to create a new sales order shipment function createSalesOrderShipment(options={}) { constructForm('{% url "api-so-shipment-list" %}', { @@ -1183,6 +1204,8 @@ function loadSalesOrderShipmentTable(table, options={}) { html += makeIconButton('fa-edit icon-blue', 'button-shipment-edit', pk, '{% trans "Edit shipment" %}'); + html += makeIconButton('fa-truck icon-green', 'button-shipment-ship', pk, '{% trans "Complete shipment" %}'); + html += `
    `; return html; @@ -1205,6 +1228,12 @@ function loadSalesOrderShipmentTable(table, options={}) { } }); }); + + $(table).find('.button-shipment-ship').click(function() { + var pk = $(this).attr('pk'); + + completeShipment(pk); + }); } $(table).inventreeTable({ @@ -1505,7 +1534,7 @@ function allocateStockToSalesOrder(order_id, line_items, options={}) { // Exclude expired stock? if (global_settings.STOCK_ENABLE_EXPIRY && !global_settings.STOCK_ALLOW_EXPIRED_SALE) { - fields.item.filters.expired = false; + filters.expired = false; } return filters; @@ -1781,14 +1810,16 @@ function showAllocationSubTable(index, row, element, options) { title: '{% trans "Location" %}', formatter: function(value, row, index, field) { - // Location specified - if (row.location) { + if (shipped) { + return `{% trans "Shipped to customer" %}`; + } else if (row.location) { + // Location specified return renderLink( row.location_detail.pathstring || '{% trans "Location" %}', `/stock/location/${row.location}/` ); } else { - return `{% trans "Stock location not specified" %}`; + return `{% trans "Stock location not specified" %}`; } }, }, diff --git a/InvenTree/templates/js/translated/stock.js b/InvenTree/templates/js/translated/stock.js index 5e92299f03..35a3a307ce 100644 --- a/InvenTree/templates/js/translated/stock.js +++ b/InvenTree/templates/js/translated/stock.js @@ -94,6 +94,9 @@ function serializeStockItem(pk, options={}) { }); } + options.confirm = true; + options.confirmMessage = '{% trans "Confirm Stock Serialization" %}'; + constructForm(url, options); } From 3f9b280e1724791161306c5bd05e05bddb35fef3 Mon Sep 17 00:00:00 2001 From: Oliver Date: Tue, 30 Nov 2021 00:42:30 +1100 Subject: [PATCH 029/129] Allow shipment numbers to be non-unique for different sales orders - must be unique for a given sales order --- .../migrations/0053_salesordershipment.py | 2 +- .../migrations/0060_auto_20211129_1339.py | 22 ++++++ InvenTree/order/models.py | 42 +++-------- .../templates/order/sales_order_detail.html | 1 + InvenTree/order/test_sales_order.py | 10 ++- InvenTree/templates/js/translated/order.js | 75 +++++++++++++++---- 6 files changed, 100 insertions(+), 52 deletions(-) create mode 100644 InvenTree/order/migrations/0060_auto_20211129_1339.py diff --git a/InvenTree/order/migrations/0053_salesordershipment.py b/InvenTree/order/migrations/0053_salesordershipment.py index c2cc40f4db..f36895c5ee 100644 --- a/InvenTree/order/migrations/0053_salesordershipment.py +++ b/InvenTree/order/migrations/0053_salesordershipment.py @@ -22,7 +22,7 @@ class Migration(migrations.Migration): fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('shipment_date', models.DateField(blank=True, help_text='Date of shipment', null=True, verbose_name='Shipment Date')), - ('reference', models.CharField(default=order.models.get_next_shipment_number, unique=True, help_text='Shipment reference', max_length=100, verbose_name='Reference')), + ('reference', models.CharField(default='1', help_text='Shipment reference', max_length=100, verbose_name='Reference')), ('notes', markdownx.models.MarkdownxField(blank=True, help_text='Shipment notes', verbose_name='Notes')), ('checked_by', models.ForeignKey(blank=True, help_text='User who checked this shipment', null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL, verbose_name='Checked By')), ('order', models.ForeignKey(help_text='Sales Order', on_delete=django.db.models.deletion.CASCADE, related_name='shipments', to='order.salesorder', verbose_name='Order')), diff --git a/InvenTree/order/migrations/0060_auto_20211129_1339.py b/InvenTree/order/migrations/0060_auto_20211129_1339.py new file mode 100644 index 0000000000..2166ec45ad --- /dev/null +++ b/InvenTree/order/migrations/0060_auto_20211129_1339.py @@ -0,0 +1,22 @@ +# Generated by Django 3.2.5 on 2021-11-29 13:39 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('order', '0059_salesordershipment_tracking_number'), + ] + + operations = [ + migrations.AlterField( + model_name='salesordershipment', + name='reference', + field=models.CharField(default='1', help_text='Shipment number', max_length=100, verbose_name='Shipment'), + ), + migrations.AlterUniqueTogether( + name='salesordershipment', + unique_together={('order', 'reference')}, + ), + ] diff --git a/InvenTree/order/models.py b/InvenTree/order/models.py index 10b0a45f62..a7cadbf7a8 100644 --- a/InvenTree/order/models.py +++ b/InvenTree/order/models.py @@ -900,35 +900,6 @@ class SalesOrderLineItem(OrderLineItem): return self.shipped >= self.quantity -def get_next_shipment_number(): - """ - Returns the next available SalesOrderShipment reference number" - """ - - if SalesOrderShipment.objects.count() == 0: - return "001" - - shipment = SalesOrderShipment.objects.exclude(reference=None).last() - - attempts = set([shipment.reference]) - - reference = shipment.reference - - while 1: - reference = increment(reference) - - if reference in attempts: - # Escape infinite recursion - return reference - - if SalesOrderShipment.objects.filter(reference=reference).exists(): - attempts.add(reference) - else: - break - - return reference - - class SalesOrderShipment(models.Model): """ The SalesOrderShipment model represents a physical shipment made against a SalesOrder. @@ -945,6 +916,12 @@ class SalesOrderShipment(models.Model): notes: Custom notes field for this shipment """ + class Meta: + # Shipment reference must be unique for a given sales order + unique_together = [ + 'order', 'reference', + ] + @staticmethod def get_api_url(): return reverse('api-so-shipment-list') @@ -976,10 +953,9 @@ class SalesOrderShipment(models.Model): reference = models.CharField( max_length=100, blank=False, - unique=True, - verbose_name=('Reference'), - help_text=_('Shipment reference'), - default=get_next_shipment_number, + verbose_name=('Shipment'), + help_text=_('Shipment number'), + default='1', ) notes = MarkdownxField( diff --git a/InvenTree/order/templates/order/sales_order_detail.html b/InvenTree/order/templates/order/sales_order_detail.html index bb90f4386f..7977274155 100644 --- a/InvenTree/order/templates/order/sales_order_detail.html +++ b/InvenTree/order/templates/order/sales_order_detail.html @@ -155,6 +155,7 @@ $('#new-shipment').click(function() { createSalesOrderShipment({ order: {{ order.pk }}, + reference: '{{ order.reference }}', onSuccess: function(data) { $('#pending-shipments-table').bootstrapTable('refresh'); } diff --git a/InvenTree/order/test_sales_order.py b/InvenTree/order/test_sales_order.py index 8337ff4b57..76f9275dac 100644 --- a/InvenTree/order/test_sales_order.py +++ b/InvenTree/order/test_sales_order.py @@ -7,11 +7,15 @@ from django.core.exceptions import ValidationError from datetime import datetime, timedelta from company.models import Company -from stock.models import StockItem -from order.models import SalesOrder, SalesOrderLineItem, SalesOrderAllocation -from part.models import Part + from InvenTree import status_codes as status +from order.models import SalesOrder, SalesOrderLineItem, SalesOrderShipment, SalesOrderAllocation + +from part.models import Part + +from stock.models import StockItem + class SalesOrderTest(TestCase): """ diff --git a/InvenTree/templates/js/translated/order.js b/InvenTree/templates/js/translated/order.js index 50d6b4444e..6327ef81e9 100644 --- a/InvenTree/templates/js/translated/order.js +++ b/InvenTree/templates/js/translated/order.js @@ -75,16 +75,56 @@ function completeShipment(shipment_id) { // Open a dialog to create a new sales order shipment function createSalesOrderShipment(options={}) { - constructForm('{% url "api-so-shipment-list" %}', { - method: 'POST', - fields: salesOrderShipmentFields(options), - title: '{% trans "Create New Shipment" %}', - onSuccess: function(data) { - if (options.onSuccess) { - options.onSuccess(data); + + // Work out the next shipment number for the given order + inventreeGet( + '{% url "api-so-shipment-list" %}', + { + order: options.order, + }, + { + success: function(results) { + // "predict" the next reference number + var ref = results.length + 1; + + var found = false; + + while (!found) { + + var no_match = true; + + for (var ii = 0; ii < results.length; ii++) { + if (ref.toString() == results[ii].reference.toString()) { + no_match = false; + break; + } + } + + if (no_match) { + break; + } else { + ref++; + } + } + + var fields = salesOrderShipmentFields(options); + + fields.reference.value = ref; + fields.reference.prefix = global_settings.SALESORDER_REFERENCE_PREFIX + options.reference; + + constructForm('{% url "api-so-shipment-list" %}', { + method: 'POST', + fields: fields, + title: '{% trans "Create New Shipment" %}', + onSuccess: function(data) { + if (options.onSuccess) { + options.onSuccess(data); + } + } + }); } } - }); + ); } @@ -1271,15 +1311,20 @@ function loadSalesOrderShipmentTable(table, options={}) { title: '{% trans "Shipment" %}', switchable: false, }, - { - field: 'status', - title: '{% trans "Status" %}', - }, { field: 'shipment_date', title: '{% trans "Shipment Date" %}', - visible: options.shipped, - switchable: false, + formatter: function(value, row) { + if (value) { + return value; + } else { + return '{% trans "Not shipped" %}'; + } + } + }, + { + field: 'tracking_number', + title: '{% trans "Tracking" %}', }, { field: 'notes', @@ -1711,7 +1756,7 @@ function loadSalesOrderAllocationTable(table, options={}) { field: 'quantity', title: '{% trans "Quantity" %}', sortable: true, - } + }, ] }); } From 6963503d0237dc959aeee822f2504c4d3b628e95 Mon Sep 17 00:00:00 2001 From: Oliver Date: Tue, 30 Nov 2021 00:44:42 +1100 Subject: [PATCH 030/129] Delete old SalesOrderShip view --- InvenTree/order/forms.py | 11 ----- .../templates/order/sales_order_ship.html | 30 ------------- InvenTree/order/urls.py | 1 - InvenTree/order/views.py | 45 ++----------------- 4 files changed, 3 insertions(+), 84 deletions(-) delete mode 100644 InvenTree/order/templates/order/sales_order_ship.html diff --git a/InvenTree/order/forms.py b/InvenTree/order/forms.py index 6f0bc43c46..a5a3ddc0f1 100644 --- a/InvenTree/order/forms.py +++ b/InvenTree/order/forms.py @@ -65,17 +65,6 @@ class CancelSalesOrderForm(HelperForm): ] -class ShipSalesOrderForm(HelperForm): - - confirm = forms.BooleanField(required=True, label=_('Confirm'), help_text=_('Ship order')) - - class Meta: - model = SalesOrder - fields = [ - 'confirm', - ] - - class AllocateSerialsToSalesOrderForm(forms.Form): """ Form for assigning stock to a sales order, diff --git a/InvenTree/order/templates/order/sales_order_ship.html b/InvenTree/order/templates/order/sales_order_ship.html deleted file mode 100644 index 763d3fca57..0000000000 --- a/InvenTree/order/templates/order/sales_order_ship.html +++ /dev/null @@ -1,30 +0,0 @@ -{% extends "modal_form.html" %} - -{% load i18n %} - -{% block pre_form_content %} - -{% if not order.is_fully_allocated %} -
    -

    {% trans "Warning" %}

    - {% trans "This order has not been fully allocated. If the order is marked as shipped, it can no longer be adjusted." %} -
    - {% trans "Ensure that the order allocation is correct before shipping the order." %} -
    -{% endif %} - -{% if order.is_over_allocated %} -
    - {% trans "Some line items in this order have been over-allocated" %} -
    - {% trans "Ensure that this is correct before shipping the order." %} -
    -{% endif %} - -
    - {% trans "Sales Order" %} {{ order.reference }} - {{ order.customer.name }} -
    - {% trans "Shipping this order means that the order will no longer be editable." %} -
    - -{% endblock %} \ No newline at end of file diff --git a/InvenTree/order/urls.py b/InvenTree/order/urls.py index afc689cc23..8cf472e0ae 100644 --- a/InvenTree/order/urls.py +++ b/InvenTree/order/urls.py @@ -35,7 +35,6 @@ purchase_order_urls = [ sales_order_detail_urls = [ url(r'^cancel/', views.SalesOrderCancel.as_view(), name='so-cancel'), - url(r'^ship/', views.SalesOrderShip.as_view(), name='so-ship'), url(r'^export/', views.SalesOrderExport.as_view(), name='so-export'), url(r'^.*$', views.SalesOrderDetail.as_view(), name='so-detail'), diff --git a/InvenTree/order/views.py b/InvenTree/order/views.py index 8aea60f694..2c3e125dc0 100644 --- a/InvenTree/order/views.py +++ b/InvenTree/order/views.py @@ -213,48 +213,6 @@ class PurchaseOrderComplete(AjaxUpdateView): } -class SalesOrderShip(AjaxUpdateView): - """ View for 'shipping' a SalesOrder """ - form_class = order_forms.ShipSalesOrderForm - model = SalesOrder - context_object_name = 'order' - ajax_template_name = 'order/sales_order_ship.html' - ajax_form_title = _('Ship Order') - - def post(self, request, *args, **kwargs): - - self.request = request - - order = self.get_object() - self.object = order - - form = self.get_form() - - confirm = str2bool(request.POST.get('confirm', False)) - - valid = False - - if not confirm: - form.add_error('confirm', _('Confirm order shipment')) - else: - valid = True - - if valid: - if not order.ship_order(request.user): - form.add_error(None, _('Could not ship order')) - valid = False - - data = { - 'form_valid': valid, - } - - context = self.get_context_data() - - context['order'] = order - - return self.renderJsonResponse(request, form, data, context) - - class PurchaseOrderUpload(FileManagementFormView): ''' PurchaseOrder: Upload file, match to fields and parts (using multi-Step form) ''' @@ -834,6 +792,9 @@ class OrderParts(AjaxView): order.add_line_item(supplier_part, quantity, purchase_price=purchase_price) + +#### TODO: This class MUST be converted to the API forms! +#### TODO: We MUST select the shipment class SalesOrderAssignSerials(AjaxView, FormMixin): """ View for assigning stock items to a sales order, From bce69b7733fbc181fbfad474608ad5436f716172 Mon Sep 17 00:00:00 2001 From: Oliver Date: Tue, 30 Nov 2021 00:45:40 +1100 Subject: [PATCH 031/129] Removes ship_order function --- InvenTree/order/models.py | 26 -------------------------- 1 file changed, 26 deletions(-) diff --git a/InvenTree/order/models.py b/InvenTree/order/models.py index a7cadbf7a8..73f20e77ff 100644 --- a/InvenTree/order/models.py +++ b/InvenTree/order/models.py @@ -603,32 +603,6 @@ class SalesOrder(Order): return all([line.is_completed() for line in self.lines.all()]) - @transaction.atomic - def ship_order(self, user): - """ Mark this order as 'shipped' """ - - # The order can only be 'shipped' if the current status is PENDING - if not self.status == SalesOrderStatus.PENDING: - raise ValidationError({'status': _("SalesOrder cannot be shipped as it is not currently pending")}) - - # Complete the allocation for each allocated StockItem - for line in self.lines.all(): - for allocation in line.allocations.all(): - allocation.complete_allocation(user) - - # Remove the allocation from the database once it has been 'fulfilled' - if allocation.item.sales_order == self: - allocation.delete() - else: - raise ValidationError("Could not complete order - allocation item not fulfilled") - - # Ensure the order status is marked as "Shipped" - self.status = SalesOrderStatus.SHIPPED - self.shipment_date = datetime.now().date() - self.shipped_by = user - self.save() - - return True def can_cancel(self): """ From 9a9f3118edfcdce5d0190ba7df8e3154c09065ff Mon Sep 17 00:00:00 2001 From: Oliver Date: Thu, 2 Dec 2021 20:53:07 +1100 Subject: [PATCH 032/129] Re-add package.json --- .gitignore | 1 - package.json | 27 +++++++++++++++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 package.json diff --git a/.gitignore b/.gitignore index 420524d06f..74669a5756 100644 --- a/.gitignore +++ b/.gitignore @@ -78,5 +78,4 @@ locale_stats.json # node.js package-lock.json -package.json node_modules/ \ No newline at end of file diff --git a/package.json b/package.json new file mode 100644 index 0000000000..1cb39f938e --- /dev/null +++ b/package.json @@ -0,0 +1,27 @@ +{ + "name": "inventree", + "version": "1.0.0", + "description": "\"InvenTree\"", + "main": "index.js", + "dependencies": { + "eslint": "^7.32.0", + "eslint-config-google": "^0.14.0", + "html-lint": "^2.4.2", + "htmllint": "^0.8.0", + "markuplint": "^1.11.3" + }, + "devDependencies": {}, + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/SchrodingersGat/InvenTree.git" + }, + "author": "", + "license": "ISC", + "bugs": { + "url": "https://github.com/SchrodingersGat/InvenTree/issues" + }, + "homepage": "https://github.com/SchrodingersGat/InvenTree#readme" +} From 5eccc828fa5b6dc9079fdffc11101c320bbaf779 Mon Sep 17 00:00:00 2001 From: Oliver Date: Thu, 2 Dec 2021 20:59:26 +1100 Subject: [PATCH 033/129] Revert "Re-add package.json" This reverts commit 9a9f3118edfcdce5d0190ba7df8e3154c09065ff. --- .gitignore | 1 + package.json | 27 --------------------------- 2 files changed, 1 insertion(+), 27 deletions(-) delete mode 100644 package.json diff --git a/.gitignore b/.gitignore index 74669a5756..420524d06f 100644 --- a/.gitignore +++ b/.gitignore @@ -78,4 +78,5 @@ locale_stats.json # node.js package-lock.json +package.json node_modules/ \ No newline at end of file diff --git a/package.json b/package.json deleted file mode 100644 index 1cb39f938e..0000000000 --- a/package.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "name": "inventree", - "version": "1.0.0", - "description": "\"InvenTree\"", - "main": "index.js", - "dependencies": { - "eslint": "^7.32.0", - "eslint-config-google": "^0.14.0", - "html-lint": "^2.4.2", - "htmllint": "^0.8.0", - "markuplint": "^1.11.3" - }, - "devDependencies": {}, - "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/SchrodingersGat/InvenTree.git" - }, - "author": "", - "license": "ISC", - "bugs": { - "url": "https://github.com/SchrodingersGat/InvenTree/issues" - }, - "homepage": "https://github.com/SchrodingersGat/InvenTree#readme" -} From 123aab89bcb5d0c6ca9f074f7af2161991abdd6b Mon Sep 17 00:00:00 2001 From: Oliver Date: Thu, 2 Dec 2021 21:39:49 +1100 Subject: [PATCH 034/129] Adds an "available" filter for stock item API --- InvenTree/stock/api.py | 20 ++++++++++++++++++- .../templates/js/translated/table_filters.js | 5 +++++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/InvenTree/stock/api.py b/InvenTree/stock/api.py index 8385041209..760a18c72c 100644 --- a/InvenTree/stock/api.py +++ b/InvenTree/stock/api.py @@ -10,7 +10,7 @@ from datetime import datetime, timedelta from django.core.exceptions import ValidationError as DjangoValidationError from django.conf.urls import url, include from django.http import JsonResponse -from django.db.models import Q +from django.db.models import Q, F from django.db import transaction from django.utils.translation import ugettext_lazy as _ @@ -304,6 +304,24 @@ class StockFilter(rest_filters.FilterSet): return queryset + available = rest_filters.BooleanFilter(label='Available', method='filter_available') + + def filter_available(self, queryset, name, value): + """ + Filter by whether the StockItem is "available" or not. + + Here, "available" means that the allocated quantity is less than the total quantity + """ + + if str2bool(value): + # The 'quantity' field is greater than the calculated 'allocated' field + queryset = queryset.filter(Q(quantity__gt=F('allocated'))) + else: + # The 'quantity' field is less than (or equal to) the calculated 'allocated' field + queryset = queryset.filter(Q(quantity__lte=F('allocated'))) + + return queryset + batch = rest_filters.CharFilter(label="Batch code filter (case insensitive)", lookup_expr='iexact') batch_regex = rest_filters.CharFilter(label="Batch code filter (regex)", field_name='batch', lookup_expr='iregex') diff --git a/InvenTree/templates/js/translated/table_filters.js b/InvenTree/templates/js/translated/table_filters.js index 409192f74d..e7f5dc2a4d 100644 --- a/InvenTree/templates/js/translated/table_filters.js +++ b/InvenTree/templates/js/translated/table_filters.js @@ -173,6 +173,11 @@ function getAvailableTableFilters(tableKey) { title: '{% trans "Is allocated" %}', description: '{% trans "Item has been allocated" %}', }, + available: { + type: 'bool', + title: '{% trans "Available" %}', + description: '{% trans "Stock is available for use" %}', + }, cascade: { type: 'bool', title: '{% trans "Include sublocations" %}', From 586d38fb61b9f3e89d3db93a5c7c9cf9d31e4bc8 Mon Sep 17 00:00:00 2001 From: Oliver Date: Thu, 2 Dec 2021 21:40:21 +1100 Subject: [PATCH 035/129] Add item count to shipment table --- InvenTree/templates/js/translated/order.js | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/InvenTree/templates/js/translated/order.js b/InvenTree/templates/js/translated/order.js index c267bf6877..6dae5cbe79 100644 --- a/InvenTree/templates/js/translated/order.js +++ b/InvenTree/templates/js/translated/order.js @@ -1316,9 +1316,23 @@ function loadSalesOrderShipmentTable(table, options={}) { title: '{% trans "Shipment" %}', switchable: false, }, + { + field: 'allocations', + title: '{% trans "Items" %}', + switchable: false, + sortable: true, + formatter: function(value, row) { + if (row && row.allocations) { + return row.allocations.length; + } else { + return '-'; + } + } + }, { field: 'shipment_date', title: '{% trans "Shipment Date" %}', + sortable: true, formatter: function(value, row) { if (value) { return value; From d5ace1a8da6c6e107261caf27a8539d22acddc76 Mon Sep 17 00:00:00 2001 From: Oliver Date: Thu, 2 Dec 2021 21:46:05 +1100 Subject: [PATCH 036/129] Differentiate between "fully allocated" and "partially allocated" in stock item table --- InvenTree/order/serializers.py | 1 + InvenTree/stock/templates/stock/item_base.html | 4 ++-- InvenTree/templates/js/translated/stock.js | 9 ++++++++- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/InvenTree/order/serializers.py b/InvenTree/order/serializers.py index cffdbaec32..0dddece000 100644 --- a/InvenTree/order/serializers.py +++ b/InvenTree/order/serializers.py @@ -526,6 +526,7 @@ class SalesOrderAllocationSerializer(InvenTreeModelSerializer): 'order_detail', 'part', 'part_detail', + 'shipment', ] diff --git a/InvenTree/stock/templates/stock/item_base.html b/InvenTree/stock/templates/stock/item_base.html index 0d5ab272d6..949c172e9e 100644 --- a/InvenTree/stock/templates/stock/item_base.html +++ b/InvenTree/stock/templates/stock/item_base.html @@ -252,7 +252,7 @@
    {% object_link 'so-detail' allocation.line.order.id allocation.line.order as link %} {% decimal allocation.quantity as qty %} - {% blocktrans %}This stock item is allocated to Sales Order {{ link }} (Quantity: {{ qty }}){% endblocktrans %} + {% trans "This stock item is allocated to Sales Order" %} {{ link }} {% if qty < item.quantity %}({% trans "Quantity" %}: {{ qty }}){% endif %}
    {% endfor %} @@ -260,7 +260,7 @@
    {% object_link 'build-detail' allocation.build.id allocation.build %} {% decimal allocation.quantity as qty %} - {% blocktrans %}This stock item is allocated to Build {{ link }} (Quantity: {{ qty }}){% endblocktrans %} + {% trans "This stock item is allocated to Build Order" %} {{ link }} {% if qty < item.quantity %}({% trans "Quantity" %}: {{ qty }}){% endif %}
    {% endfor %} diff --git a/InvenTree/templates/js/translated/stock.js b/InvenTree/templates/js/translated/stock.js index 79fe19b120..0314fff107 100644 --- a/InvenTree/templates/js/translated/stock.js +++ b/InvenTree/templates/js/translated/stock.js @@ -1278,7 +1278,14 @@ function loadStockTable(table, options) { } if (row.allocated) { - html += makeIconBadge('fa-bookmark', '{% trans "Stock item has been allocated" %}'); + + if (row.serial != null && row.quantity == 1) { + html += makeIconBadge('fa-bookmark icon-yellow', '{% trans "Serialized stock item has been allocated" %}'); + } else if (row.allocated >= row.quantity) { + html += makeIconBadge('fa-bookmark icon-red', '{% trans "Stock item has been fully allocated" %}'); + } else { + html += makeIconBadge('fa-bookmark', '{% trans "Stock item has been partially allocated" %}'); + } } if (row.belongs_to) { From e74e7138a92c9b5780dbeb7d3cba05b5c4841db1 Mon Sep 17 00:00:00 2001 From: Oliver Date: Thu, 2 Dec 2021 21:59:59 +1100 Subject: [PATCH 037/129] More stuff: - Pass tracking number through when completing a shipment - Reload tables automatically when certain actions are performed - Limit stock items to only those with available stock --- InvenTree/order/models.py | 9 ++++++++- InvenTree/order/serializers.py | 5 ++++- InvenTree/templates/js/translated/order.js | 19 ++++++++++++++++--- InvenTree/templates/js/translated/stock.js | 2 +- 4 files changed, 29 insertions(+), 6 deletions(-) diff --git a/InvenTree/order/models.py b/InvenTree/order/models.py index 73f20e77ff..0e5b10cf98 100644 --- a/InvenTree/order/models.py +++ b/InvenTree/order/models.py @@ -956,7 +956,7 @@ class SalesOrderShipment(models.Model): raise ValidationError(_("Shipment has no allocated stock items")) @transaction.atomic - def complete_shipment(self, user): + def complete_shipment(self, user, **kwargs): """ Complete this particular shipment: @@ -979,6 +979,13 @@ class SalesOrderShipment(models.Model): # Update the "shipment" date self.shipment_date = datetime.now() self.shipped_by = user + + # Was a tracking number provided? + tracking_number = kwargs.get('tracking_number', None) + + if tracking_number is not None: + self.tracking_number = tracking_number + self.save() # Finally, check if the order is fully shipped diff --git a/InvenTree/order/serializers.py b/InvenTree/order/serializers.py index 0dddece000..f86aae8163 100644 --- a/InvenTree/order/serializers.py +++ b/InvenTree/order/serializers.py @@ -654,7 +654,10 @@ class SalesOrderShipmentCompleteSerializer(serializers.ModelSerializer): request = self.context['request'] user = request.user - shipment.complete_shipment(user) + # Extract provided tracking number (optional) + tracking_number = data.get('tracking_number', None) + + shipment.complete_shipment(user, tracking_number=tracking_number) class SOShipmentAllocationItemSerializer(serializers.Serializer): diff --git a/InvenTree/templates/js/translated/order.js b/InvenTree/templates/js/translated/order.js index 6dae5cbe79..e44eed9589 100644 --- a/InvenTree/templates/js/translated/order.js +++ b/InvenTree/templates/js/translated/order.js @@ -67,7 +67,10 @@ function completeShipment(shipment_id) { confirm: true, confirmMessage: '{% trans "Confirm Shipment" %}', onSuccess: function(data) { - // TODO + // Reload tables + $('#so-lines-table').bootstrapTable('refresh'); + $('#pending-shipments-table').bootstrapTable('refresh'); + $('#completed-shipments-table').bootstrapTable('refresh'); } }); } @@ -1249,7 +1252,9 @@ function loadSalesOrderShipmentTable(table, options={}) { html += makeIconButton('fa-edit icon-blue', 'button-shipment-edit', pk, '{% trans "Edit shipment" %}'); - html += makeIconButton('fa-truck icon-green', 'button-shipment-ship', pk, '{% trans "Complete shipment" %}'); + if (!options.shipped) { + html += makeIconButton('fa-truck icon-green', 'button-shipment-ship', pk, '{% trans "Complete shipment" %}'); + } html += ``; @@ -1300,7 +1305,10 @@ function loadSalesOrderShipmentTable(table, options={}) { onPostBody: function() { setupShipmentCallbacks(); - $(table).bootstrapTable('expandAllRows'); + // Auto-expand rows on the "pending" table + if (!options.shipped) { + $(table).bootstrapTable('expandAllRows'); + } }, formatNoMatches: function() { return '{% trans "No matching shipments found" %}'; @@ -1557,6 +1565,7 @@ function allocateStockToSalesOrder(order_id, line_items, options={}) { in_stock: true, part_detail: true, location_detail: true, + available: true, }, model: 'stockitem', required: true, @@ -2296,7 +2305,11 @@ function loadSalesOrderLineItemTable(table, options={}) { ], { success: function() { + // Reload this table $(table).bootstrapTable('refresh'); + + // Reload the pending shipment table + $('#pending-shipments-table').bootstrapTable('refresh'); } } ); diff --git a/InvenTree/templates/js/translated/stock.js b/InvenTree/templates/js/translated/stock.js index 0314fff107..d6de4fdd45 100644 --- a/InvenTree/templates/js/translated/stock.js +++ b/InvenTree/templates/js/translated/stock.js @@ -1282,7 +1282,7 @@ function loadStockTable(table, options) { if (row.serial != null && row.quantity == 1) { html += makeIconBadge('fa-bookmark icon-yellow', '{% trans "Serialized stock item has been allocated" %}'); } else if (row.allocated >= row.quantity) { - html += makeIconBadge('fa-bookmark icon-red', '{% trans "Stock item has been fully allocated" %}'); + html += makeIconBadge('fa-bookmark icon-yellow', '{% trans "Stock item has been fully allocated" %}'); } else { html += makeIconBadge('fa-bookmark', '{% trans "Stock item has been partially allocated" %}'); } From 2c2825abf768987ce1177df24f4239c32e5e1d79 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 2 Dec 2021 12:28:10 +0100 Subject: [PATCH 038/129] one workflow for PR checks --- .github/workflows/{version.yaml => pr_checks.yaml} | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) rename .github/workflows/{version.yaml => pr_checks.yaml} (74%) diff --git a/.github/workflows/version.yaml b/.github/workflows/pr_checks.yaml similarity index 74% rename from .github/workflows/version.yaml rename to .github/workflows/pr_checks.yaml index 6e32d9e148..d1cd214c23 100644 --- a/.github/workflows/version.yaml +++ b/.github/workflows/pr_checks.yaml @@ -1,6 +1,6 @@ -# Check that the version number format matches the current branch +# Checks for each PR -name: Version Numbering +name: PR checks on: pull_request: @@ -9,7 +9,8 @@ on: jobs: - check: + check_version: + name: check version number runs-on: ubuntu-latest steps: From 62694b8dae6c2719d39dbdbc31c2bc8bda813511 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 2 Dec 2021 12:30:44 +0100 Subject: [PATCH 039/129] add style checks --- .github/workflows/pr_checks.yaml | 28 ++++++++++++++++++++++++++ .github/workflows/style.yaml | 34 -------------------------------- 2 files changed, 28 insertions(+), 34 deletions(-) delete mode 100644 .github/workflows/style.yaml diff --git a/.github/workflows/pr_checks.yaml b/.github/workflows/pr_checks.yaml index d1cd214c23..c9e5b649d9 100644 --- a/.github/workflows/pr_checks.yaml +++ b/.github/workflows/pr_checks.yaml @@ -3,10 +3,19 @@ name: PR checks on: + push: + branches-ignore: + - l10* + pull_request: branches-ignore: - l10* +inputs: + python_version: + description: “Python version” + default: 3.7 + jobs: check_version: @@ -19,3 +28,22 @@ jobs: - name: Check version number run: | python3 ci/check_version_number.py --branch ${{ github.base_ref }} + + pep_style: + needs: check_version + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout@v2 + - name: Set up Python ${{inputs.python_version}} + uses: actions/setup-python@v2 + with: + python-version: ${{inputs.python_version}} + - name: Install deps + run: | + pip install flake8==3.8.3 + pip install pep8-naming==0.11.1 + - name: flake8 + run: | + flake8 InvenTree diff --git a/.github/workflows/style.yaml b/.github/workflows/style.yaml deleted file mode 100644 index df52de1dcb..0000000000 --- a/.github/workflows/style.yaml +++ /dev/null @@ -1,34 +0,0 @@ -name: Style Checks - -on: - push: - branches-ignore: - - l10* - - pull_request: - branches-ignore: - - l10* - -jobs: - style: - runs-on: ubuntu-latest - - strategy: - max-parallel: 4 - matrix: - python-version: [3.7] - - steps: - - name: Checkout code - uses: actions/checkout@v2 - - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v2 - with: - python-version: ${{ matrix.python-version }} - - name: Install deps - run: | - pip install flake8==3.8.3 - pip install pep8-naming==0.11.1 - - name: flake8 - run: | - flake8 InvenTree From dd91329ed7aa9ee24bb73b2f83c03d2073fb81e1 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 2 Dec 2021 12:32:20 +0100 Subject: [PATCH 040/129] fix python version --- .github/workflows/pr_checks.yaml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/pr_checks.yaml b/.github/workflows/pr_checks.yaml index c9e5b649d9..40fcaa4653 100644 --- a/.github/workflows/pr_checks.yaml +++ b/.github/workflows/pr_checks.yaml @@ -11,10 +11,10 @@ on: branches-ignore: - l10* -inputs: - python_version: - description: “Python version” - default: 3.7 +# inputs: +# python_version: +# description: “Python version” +# default: 3.7 jobs: @@ -36,10 +36,10 @@ jobs: steps: - name: Checkout code uses: actions/checkout@v2 - - name: Set up Python ${{inputs.python_version}} + - name: Set up Python 3.7 uses: actions/setup-python@v2 with: - python-version: ${{inputs.python_version}} + python-version: 3.7 - name: Install deps run: | pip install flake8==3.8.3 From 996554541c0b72c65a6cd9080294b48d182fdd0f Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 2 Dec 2021 12:35:08 +0100 Subject: [PATCH 041/129] use env for python version --- .github/workflows/pr_checks.yaml | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/.github/workflows/pr_checks.yaml b/.github/workflows/pr_checks.yaml index 40fcaa4653..72bf62d3ec 100644 --- a/.github/workflows/pr_checks.yaml +++ b/.github/workflows/pr_checks.yaml @@ -11,10 +11,9 @@ on: branches-ignore: - l10* -# inputs: -# python_version: -# description: “Python version” -# default: 3.7 +env: + python_version: 3.7 + jobs: @@ -36,10 +35,10 @@ jobs: steps: - name: Checkout code uses: actions/checkout@v2 - - name: Set up Python 3.7 + - name: Set up Python ${{ env.python_version }} uses: actions/setup-python@v2 with: - python-version: 3.7 + python-version: ${{ env.python_version }} - name: Install deps run: | pip install flake8==3.8.3 From 3c460dfc32cebda092ae4dafa8339de9b3eb7eab Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 2 Dec 2021 12:46:31 +0100 Subject: [PATCH 042/129] change names --- .github/workflows/pr_checks.yaml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/pr_checks.yaml b/.github/workflows/pr_checks.yaml index 72bf62d3ec..f58732af9c 100644 --- a/.github/workflows/pr_checks.yaml +++ b/.github/workflows/pr_checks.yaml @@ -18,7 +18,7 @@ env: jobs: check_version: - name: check version number + name: version number runs-on: ubuntu-latest steps: @@ -29,6 +29,7 @@ jobs: python3 ci/check_version_number.py --branch ${{ github.base_ref }} pep_style: + name: PEP style (python) needs: check_version runs-on: ubuntu-latest From 90f4e788eac8e9ec87b16e445c7cd98d0ce16ebd Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 2 Dec 2021 12:47:04 +0100 Subject: [PATCH 043/129] merge in javascript --- .github/workflows/javascript.yaml | 50 ------------------------------- .github/workflows/pr_checks.yaml | 41 +++++++++++++++++++++++++ 2 files changed, 41 insertions(+), 50 deletions(-) delete mode 100644 .github/workflows/javascript.yaml diff --git a/.github/workflows/javascript.yaml b/.github/workflows/javascript.yaml deleted file mode 100644 index a07b516ac6..0000000000 --- a/.github/workflows/javascript.yaml +++ /dev/null @@ -1,50 +0,0 @@ -# Check javascript template files - -name: Javascript Templates - -on: - push: - branches: - - master - - pull_request: - branches-ignore: - - l10* - -jobs: - - javascript: - runs-on: ubuntu-latest - - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - INVENTREE_DB_ENGINE: sqlite3 - INVENTREE_DB_NAME: inventree - INVENTREE_MEDIA_ROOT: ./media - INVENTREE_STATIC_ROOT: ./static - steps: - - name: Install node.js - uses: actions/setup-node@v2 - - run: npm install - - name: Checkout Code - uses: actions/checkout@v2 - - name: Setup Python - uses: actions/setup-python@v2 - with: - python-version: 3.7 - - name: Install Dependencies - run: | - sudo apt-get update - sudo apt-get install gettext - pip3 install invoke - invoke install - invoke static - - name: Check Templated Files - run: | - cd ci - python check_js_templates.py - - name: Lint Javascript Files - run: | - npm install eslint eslint-config-google - invoke render-js-files - npx eslint js_tmp/*.js \ No newline at end of file diff --git a/.github/workflows/pr_checks.yaml b/.github/workflows/pr_checks.yaml index f58732af9c..4d0e8fcd0e 100644 --- a/.github/workflows/pr_checks.yaml +++ b/.github/workflows/pr_checks.yaml @@ -13,6 +13,13 @@ on: env: python_version: 3.7 + node_version: 16 + + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + INVENTREE_DB_ENGINE: sqlite3 + INVENTREE_DB_NAME: inventree + INVENTREE_MEDIA_ROOT: ./media + INVENTREE_STATIC_ROOT: ./static jobs: @@ -47,3 +54,37 @@ jobs: - name: flake8 run: | flake8 InvenTree + + javascript: + name: javascript template files + needs: pep_style + runs-on: ubuntu-latest + + steps: + - name: Checkout Code + uses: actions/checkout@v2 + - name: Install node.js ${{ env.node_version }} + uses: actions/setup-node@v2 + with: + node-version: ${{ env.node_version }} + - run: npm install + - name: Setup Python + uses: actions/setup-python@v2 + with: + python-version: ${{ env.python_version }} + - name: Install Dependencies + run: | + sudo apt-get update + sudo apt-get install gettext + pip3 install invoke + invoke install + invoke static + - name: Check Templated Files + run: | + cd ci + python check_js_templates.py + - name: Lint Javascript Files + run: | + npm install eslint eslint-config-google + invoke render-js-files + npx eslint js_tmp/*.js From 0e55a07def285f253003b65ad660bedabb3bc262 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 2 Dec 2021 12:49:37 +0100 Subject: [PATCH 044/129] merge in html --- .github/workflows/html.yaml | 53 -------------------------------- .github/workflows/pr_checks.yaml | 36 ++++++++++++++++++++++ 2 files changed, 36 insertions(+), 53 deletions(-) delete mode 100644 .github/workflows/html.yaml diff --git a/.github/workflows/html.yaml b/.github/workflows/html.yaml deleted file mode 100644 index d0084ae032..0000000000 --- a/.github/workflows/html.yaml +++ /dev/null @@ -1,53 +0,0 @@ -# Check javascript template files - -name: HTML Templates - -on: - push: - branches: - - master - - pull_request: - branches-ignore: - - l10* - -jobs: - - html: - runs-on: ubuntu-latest - - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - INVENTREE_DB_ENGINE: sqlite3 - INVENTREE_DB_NAME: inventree - INVENTREE_MEDIA_ROOT: ./media - INVENTREE_STATIC_ROOT: ./static - steps: - - name: Install node.js - uses: actions/setup-node@v2 - - run: npm install - - name: Checkout Code - uses: actions/checkout@v2 - - name: Setup Python - uses: actions/setup-python@v2 - with: - python-version: 3.7 - - name: Install Dependencies - run: | - sudo apt-get update - sudo apt-get install gettext - pip3 install invoke - invoke install - invoke static - - name: Check HTML Files - run: | - npm install markuplint - npx markuplint InvenTree/build/templates/build/*.html - npx markuplint InvenTree/company/templates/company/*.html - npx markuplint InvenTree/order/templates/order/*.html - npx markuplint InvenTree/part/templates/part/*.html - npx markuplint InvenTree/stock/templates/stock/*.html - npx markuplint InvenTree/templates/*.html - npx markuplint InvenTree/templates/InvenTree/*.html - npx markuplint InvenTree/templates/InvenTree/settings/*.html - diff --git a/.github/workflows/pr_checks.yaml b/.github/workflows/pr_checks.yaml index 4d0e8fcd0e..867467cdd4 100644 --- a/.github/workflows/pr_checks.yaml +++ b/.github/workflows/pr_checks.yaml @@ -88,3 +88,39 @@ jobs: npm install eslint eslint-config-google invoke render-js-files npx eslint js_tmp/*.js + + html: + name: html template files + needs: javascript + runs-on: ubuntu-latest + + steps: + - name: Checkout Code + uses: actions/checkout@v2 + - name: Install node.js ${{ env.node_version }} + uses: actions/setup-node@v2 + with: + node-version: ${{ env.node_version }} + - run: npm install + - name: Setup Python + uses: actions/setup-python@v2 + with: + python-version: ${{ env.python_version }} + - name: Install Dependencies + run: | + sudo apt-get update + sudo apt-get install gettext + pip3 install invoke + invoke install + invoke static + - name: Check HTML Files + run: | + npm install markuplint + npx markuplint InvenTree/build/templates/build/*.html + npx markuplint InvenTree/company/templates/company/*.html + npx markuplint InvenTree/order/templates/order/*.html + npx markuplint InvenTree/part/templates/part/*.html + npx markuplint InvenTree/stock/templates/stock/*.html + npx markuplint InvenTree/templates/*.html + npx markuplint InvenTree/templates/InvenTree/*.html + npx markuplint InvenTree/templates/InvenTree/settings/*.html From a7a63dc3f7db216b1cc9053e970c0aa41ec86376 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 2 Dec 2021 12:57:44 +0100 Subject: [PATCH 045/129] only run db stuff after pre flight checks --- .github/workflows/coverage.yaml | 11 ++++------- .github/workflows/mysql.yaml | 11 ++++------- .github/workflows/postgresql.yaml | 11 ++++------- 3 files changed, 12 insertions(+), 21 deletions(-) diff --git a/.github/workflows/coverage.yaml b/.github/workflows/coverage.yaml index 6d0334b804..c5873490e9 100644 --- a/.github/workflows/coverage.yaml +++ b/.github/workflows/coverage.yaml @@ -3,13 +3,10 @@ name: SQLite on: - push: - branches-ignore: - - l10* - - pull_request: - branches-ignore: - - l10* + workflow_run: + workflows: ['PR checks'] + types: + - completed jobs: diff --git a/.github/workflows/mysql.yaml b/.github/workflows/mysql.yaml index f0eb0efd7f..02cd253730 100644 --- a/.github/workflows/mysql.yaml +++ b/.github/workflows/mysql.yaml @@ -3,13 +3,10 @@ name: MySQL on: - push: - branches-ignore: - - l10* - - pull_request: - branches-ignore: - - l10* + workflow_run: + workflows: ['PR checks'] + types: + - completed jobs: diff --git a/.github/workflows/postgresql.yaml b/.github/workflows/postgresql.yaml index b235767110..d70c39e263 100644 --- a/.github/workflows/postgresql.yaml +++ b/.github/workflows/postgresql.yaml @@ -3,13 +3,10 @@ name: PostgreSQL on: - push: - branches-ignore: - - l10* - - pull_request: - branches-ignore: - - l10* + workflow_run: + workflows: ['PR checks'] + types: + - completed jobs: From 90fcde5a7465666ec978f7c755e1d73cdac5deb3 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 2 Dec 2021 13:01:55 +0100 Subject: [PATCH 046/129] run js / and htm in paralell --- .github/workflows/pr_checks.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/pr_checks.yaml b/.github/workflows/pr_checks.yaml index 867467cdd4..a0a73e7a8f 100644 --- a/.github/workflows/pr_checks.yaml +++ b/.github/workflows/pr_checks.yaml @@ -91,7 +91,7 @@ jobs: html: name: html template files - needs: javascript + needs: pep_style runs-on: ubuntu-latest steps: From 9718b6559e844c1ae9197aec4c97adf03c5e444f Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 2 Dec 2021 13:03:20 +0100 Subject: [PATCH 047/129] remove unneeded install statements --- .github/workflows/pr_checks.yaml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/workflows/pr_checks.yaml b/.github/workflows/pr_checks.yaml index a0a73e7a8f..f1c0e6aa09 100644 --- a/.github/workflows/pr_checks.yaml +++ b/.github/workflows/pr_checks.yaml @@ -85,7 +85,6 @@ jobs: python check_js_templates.py - name: Lint Javascript Files run: | - npm install eslint eslint-config-google invoke render-js-files npx eslint js_tmp/*.js @@ -115,7 +114,6 @@ jobs: invoke static - name: Check HTML Files run: | - npm install markuplint npx markuplint InvenTree/build/templates/build/*.html npx markuplint InvenTree/company/templates/company/*.html npx markuplint InvenTree/order/templates/order/*.html From 8f8a1bbdeb6489266b79c197535673ec3f15d2f9 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 2 Dec 2021 13:08:19 +0100 Subject: [PATCH 048/129] refactor env --- .github/workflows/mysql.yaml | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/.github/workflows/mysql.yaml b/.github/workflows/mysql.yaml index 02cd253730..e01ec514e7 100644 --- a/.github/workflows/mysql.yaml +++ b/.github/workflows/mysql.yaml @@ -8,23 +8,24 @@ on: types: - completed +env: + # Database backend configuration + INVENTREE_DB_ENGINE: django.db.backends.mysql + INVENTREE_DB_NAME: inventree + INVENTREE_DB_USER: root + INVENTREE_DB_PASSWORD: password + INVENTREE_DB_HOST: '127.0.0.1' + INVENTREE_DB_PORT: 3306 + INVENTREE_DEBUG: info + INVENTREE_MEDIA_ROOT: ./media + INVENTREE_STATIC_ROOT: ./static + + jobs: test: runs-on: ubuntu-latest - env: - # Database backend configuration - INVENTREE_DB_ENGINE: django.db.backends.mysql - INVENTREE_DB_NAME: inventree - INVENTREE_DB_USER: root - INVENTREE_DB_PASSWORD: password - INVENTREE_DB_HOST: '127.0.0.1' - INVENTREE_DB_PORT: 3306 - INVENTREE_DEBUG: info - INVENTREE_MEDIA_ROOT: ./media - INVENTREE_STATIC_ROOT: ./static - services: mysql: image: mysql:latest From 3e021f35ba7b5760493cee04ba2b2d95a05f945c Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 2 Dec 2021 13:08:47 +0100 Subject: [PATCH 049/129] only run if sucessfull --- .github/workflows/mysql.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/mysql.yaml b/.github/workflows/mysql.yaml index e01ec514e7..5dfed1f467 100644 --- a/.github/workflows/mysql.yaml +++ b/.github/workflows/mysql.yaml @@ -25,6 +25,7 @@ jobs: test: runs-on: ubuntu-latest + if: ${{ github.event.workflow_run.conclusion == 'success' }} services: mysql: From b8a76429d1db8b6b483dca142c030054fa044c32 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 2 Dec 2021 13:09:30 +0100 Subject: [PATCH 050/129] only run if successfull --- .github/workflows/coverage.yaml | 1 + .github/workflows/postgresql.yaml | 1 + 2 files changed, 2 insertions(+) diff --git a/.github/workflows/coverage.yaml b/.github/workflows/coverage.yaml index c5873490e9..99d036a485 100644 --- a/.github/workflows/coverage.yaml +++ b/.github/workflows/coverage.yaml @@ -14,6 +14,7 @@ jobs: # These tests are used for code coverage analysis coverage: runs-on: ubuntu-latest + if: ${{ github.event.workflow_run.conclusion == 'success' }} env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/postgresql.yaml b/.github/workflows/postgresql.yaml index d70c39e263..b049b60300 100644 --- a/.github/workflows/postgresql.yaml +++ b/.github/workflows/postgresql.yaml @@ -12,6 +12,7 @@ jobs: test: runs-on: ubuntu-latest + if: ${{ github.event.workflow_run.conclusion == 'success' }} env: # Database backend configuration From a9aa55d76f85dae371a08de9b91cc6325c3164d9 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 2 Dec 2021 13:10:40 +0100 Subject: [PATCH 051/129] refactor envs --- .github/workflows/coverage.yaml | 17 +++++++++-------- .github/workflows/postgresql.yaml | 27 ++++++++++++++------------- 2 files changed, 23 insertions(+), 21 deletions(-) diff --git a/.github/workflows/coverage.yaml b/.github/workflows/coverage.yaml index 99d036a485..6b14f7b8b2 100644 --- a/.github/workflows/coverage.yaml +++ b/.github/workflows/coverage.yaml @@ -8,6 +8,15 @@ on: types: - completed +env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + INVENTREE_DB_NAME: './test_db.sqlite' + INVENTREE_DB_ENGINE: django.db.backends.sqlite3 + INVENTREE_DEBUG: info + INVENTREE_MEDIA_ROOT: ./media + INVENTREE_STATIC_ROOT: ./static + + jobs: # Run tests on SQLite database @@ -16,14 +25,6 @@ jobs: runs-on: ubuntu-latest if: ${{ github.event.workflow_run.conclusion == 'success' }} - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - INVENTREE_DB_NAME: './test_db.sqlite' - INVENTREE_DB_ENGINE: django.db.backends.sqlite3 - INVENTREE_DEBUG: info - INVENTREE_MEDIA_ROOT: ./media - INVENTREE_STATIC_ROOT: ./static - steps: - name: Checkout Code uses: actions/checkout@v2 diff --git a/.github/workflows/postgresql.yaml b/.github/workflows/postgresql.yaml index b049b60300..ce9ba1b852 100644 --- a/.github/workflows/postgresql.yaml +++ b/.github/workflows/postgresql.yaml @@ -8,25 +8,26 @@ on: types: - completed +env: + # Database backend configuration + INVENTREE_DB_ENGINE: django.db.backends.postgresql + INVENTREE_DB_NAME: inventree + INVENTREE_DB_USER: inventree + INVENTREE_DB_PASSWORD: password + INVENTREE_DB_HOST: '127.0.0.1' + INVENTREE_DB_PORT: 5432 + INVENTREE_DEBUG: info + INVENTREE_MEDIA_ROOT: ./media + INVENTREE_STATIC_ROOT: ./static + INVENTREE_CACHE_HOST: localhost + + jobs: test: runs-on: ubuntu-latest if: ${{ github.event.workflow_run.conclusion == 'success' }} - env: - # Database backend configuration - INVENTREE_DB_ENGINE: django.db.backends.postgresql - INVENTREE_DB_NAME: inventree - INVENTREE_DB_USER: inventree - INVENTREE_DB_PASSWORD: password - INVENTREE_DB_HOST: '127.0.0.1' - INVENTREE_DB_PORT: 5432 - INVENTREE_DEBUG: info - INVENTREE_MEDIA_ROOT: ./media - INVENTREE_STATIC_ROOT: ./static - INVENTREE_CACHE_HOST: localhost - services: postgres: image: postgres From 21aabda8cdb5e8e98b57c475539717e48c3c6fde Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 2 Dec 2021 13:14:38 +0100 Subject: [PATCH 052/129] merge in python bindings check --- .github/workflows/pr_checks.yaml | 29 +++++++++++++++++++ .github/workflows/python.yaml | 49 -------------------------------- 2 files changed, 29 insertions(+), 49 deletions(-) delete mode 100644 .github/workflows/python.yaml diff --git a/.github/workflows/pr_checks.yaml b/.github/workflows/pr_checks.yaml index f1c0e6aa09..5a165a330a 100644 --- a/.github/workflows/pr_checks.yaml +++ b/.github/workflows/pr_checks.yaml @@ -122,3 +122,32 @@ jobs: npx markuplint InvenTree/templates/*.html npx markuplint InvenTree/templates/InvenTree/*.html npx markuplint InvenTree/templates/InvenTree/settings/*.html + + python: + name: python bindings + needs: pep_style + runs-on: ubuntu-latest + + 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/.github/workflows/python.yaml b/.github/workflows/python.yaml deleted file mode 100644 index 7e32685af1..0000000000 --- a/.github/workflows/python.yaml +++ /dev/null @@ -1,49 +0,0 @@ -# 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 From 3dbe7f8f29d413acedf775413eb1cbfe28389d28 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 2 Dec 2021 13:17:45 +0100 Subject: [PATCH 053/129] more env variables --- .github/workflows/pr_checks.yaml | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/.github/workflows/pr_checks.yaml b/.github/workflows/pr_checks.yaml index 5a165a330a..be47376fdc 100644 --- a/.github/workflows/pr_checks.yaml +++ b/.github/workflows/pr_checks.yaml @@ -15,6 +15,8 @@ env: python_version: 3.7 node_version: 16 + server_start_sleep: 60 + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} INVENTREE_DB_ENGINE: sqlite3 INVENTREE_DB_NAME: inventree @@ -128,6 +130,9 @@ jobs: needs: pep_style runs-on: ubuntu-latest + env: + wrapper_name: inventree-python + steps: - name: Checkout Code uses: actions/checkout@v2 @@ -140,14 +145,13 @@ jobs: invoke migrate - name: Download Python Code run: | - git clone --depth 1 https://github.com/inventree/inventree-python ./inventree-python + git clone --depth 1 https://github.com/inventree/${{ env.wrapper_name }} ./${{ env.wrapper_name }} - name: Start Server run: | - invoke import-records -f ./inventree-python/test/test_data.json + invoke import-records -f ./${{ env.wrapper_name }}/test/test_data.json invoke server -a 127.0.0.1:8000 & - sleep 60 + sleep ${{ env.server_start_sleep }} - name: Run Tests run: | - cd inventree-python + cd ${{ env.wrapper_name }} invoke test - \ No newline at end of file From bb22f7565bf8069e16836a2d4ea0d2945803a099 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 2 Dec 2021 13:25:01 +0100 Subject: [PATCH 054/129] merge in sqlite / coverage --- .github/workflows/coverage.yaml | 59 -------------------------------- .github/workflows/pr_checks.yaml | 42 +++++++++++++++++++++++ 2 files changed, 42 insertions(+), 59 deletions(-) delete mode 100644 .github/workflows/coverage.yaml diff --git a/.github/workflows/coverage.yaml b/.github/workflows/coverage.yaml deleted file mode 100644 index 6b14f7b8b2..0000000000 --- a/.github/workflows/coverage.yaml +++ /dev/null @@ -1,59 +0,0 @@ -# Perform CI checks, and calculate code coverage - -name: SQLite - -on: - workflow_run: - workflows: ['PR checks'] - types: - - completed - -env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - INVENTREE_DB_NAME: './test_db.sqlite' - INVENTREE_DB_ENGINE: django.db.backends.sqlite3 - INVENTREE_DEBUG: info - INVENTREE_MEDIA_ROOT: ./media - INVENTREE_STATIC_ROOT: ./static - - -jobs: - - # Run tests on SQLite database - # These tests are used for code coverage analysis - coverage: - runs-on: ubuntu-latest - if: ${{ github.event.workflow_run.conclusion == 'success' }} - - steps: - - name: Checkout Code - uses: actions/checkout@v2 - - name: Setup Python - uses: actions/setup-python@v2 - with: - python-version: 3.7 - - name: Install Dependencies - run: | - sudo apt-get update - sudo apt-get install gettext - pip3 install invoke - invoke install - invoke static - - name: Coverage Tests - run: | - invoke coverage - - name: Data Import Export - run: | - invoke migrate - invoke import-fixtures - invoke export-records -f data.json - rm test_db.sqlite - invoke migrate - invoke import-records -f data.json - invoke import-records -f data.json - - name: Test Translations - run: invoke translate - - name: Check Migration Files - run: python3 ci/check_migration_files.py - - name: Upload Coverage Report - run: coveralls diff --git a/.github/workflows/pr_checks.yaml b/.github/workflows/pr_checks.yaml index be47376fdc..65193a47fe 100644 --- a/.github/workflows/pr_checks.yaml +++ b/.github/workflows/pr_checks.yaml @@ -155,3 +155,45 @@ jobs: run: | cd ${{ env.wrapper_name }} invoke test + + coverage: + name: Sqlite / coverage + needs: ['javascript', 'html'] + runs-on: ubuntu-latest + + env: + INVENTREE_DB_NAME: './test_db.sqlite' + INVENTREE_DB_ENGINE: django.db.backends.sqlite3 + + steps: + - name: Checkout Code + uses: actions/checkout@v2 + - name: Setup Python + uses: actions/setup-python@v2 + with: + python-version: 3.7 + - name: Install Dependencies + run: | + sudo apt-get update + sudo apt-get install gettext + pip3 install invoke + invoke install + invoke static + - name: Coverage Tests + run: | + invoke coverage + - name: Data Import Export + run: | + invoke migrate + invoke import-fixtures + invoke export-records -f data.json + rm test_db.sqlite + invoke migrate + invoke import-records -f data.json + invoke import-records -f data.json + - name: Test Translations + run: invoke translate + - name: Check Migration Files + run: python3 ci/check_migration_files.py + - name: Upload Coverage Report + run: coveralls From 0ce9e55933eed077905d52be9f78e28c7ab58e26 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 2 Dec 2021 13:25:50 +0100 Subject: [PATCH 055/129] add envs --- .github/workflows/pr_checks.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/pr_checks.yaml b/.github/workflows/pr_checks.yaml index 65193a47fe..207da15b64 100644 --- a/.github/workflows/pr_checks.yaml +++ b/.github/workflows/pr_checks.yaml @@ -168,10 +168,10 @@ jobs: steps: - name: Checkout Code uses: actions/checkout@v2 - - name: Setup Python + - name: Setup Python ${{ env.python_version }} uses: actions/setup-python@v2 with: - python-version: 3.7 + python-version: ${{ env.python_version }} - name: Install Dependencies run: | sudo apt-get update From f7b8cf2bb17ea1c145221dee5ee00349a125b35e Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 2 Dec 2021 13:29:01 +0100 Subject: [PATCH 056/129] refactor envs --- .github/workflows/pr_checks.yaml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.github/workflows/pr_checks.yaml b/.github/workflows/pr_checks.yaml index 207da15b64..ab828458fa 100644 --- a/.github/workflows/pr_checks.yaml +++ b/.github/workflows/pr_checks.yaml @@ -162,8 +162,7 @@ jobs: runs-on: ubuntu-latest env: - INVENTREE_DB_NAME: './test_db.sqlite' - INVENTREE_DB_ENGINE: django.db.backends.sqlite3 + INVENTREE_DB_ENGINE: sqlite3 steps: - name: Checkout Code @@ -187,7 +186,7 @@ jobs: invoke migrate invoke import-fixtures invoke export-records -f data.json - rm test_db.sqlite + rm ${{ env.INVENTREE_DB_NAME }}.sqlite invoke migrate invoke import-records -f data.json invoke import-records -f data.json From ee60cbf60358dbc119da6d01e8187e25384e330f Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 2 Dec 2021 13:34:01 +0100 Subject: [PATCH 057/129] merge in postgres --- .github/workflows/postgresql.yaml | 69 ------------------------------- .github/workflows/pr_checks.yaml | 55 ++++++++++++++++++++++++ 2 files changed, 55 insertions(+), 69 deletions(-) delete mode 100644 .github/workflows/postgresql.yaml diff --git a/.github/workflows/postgresql.yaml b/.github/workflows/postgresql.yaml deleted file mode 100644 index ce9ba1b852..0000000000 --- a/.github/workflows/postgresql.yaml +++ /dev/null @@ -1,69 +0,0 @@ -# PostgreSQL Unit Testing - -name: PostgreSQL - -on: - workflow_run: - workflows: ['PR checks'] - types: - - completed - -env: - # Database backend configuration - INVENTREE_DB_ENGINE: django.db.backends.postgresql - INVENTREE_DB_NAME: inventree - INVENTREE_DB_USER: inventree - INVENTREE_DB_PASSWORD: password - INVENTREE_DB_HOST: '127.0.0.1' - INVENTREE_DB_PORT: 5432 - INVENTREE_DEBUG: info - INVENTREE_MEDIA_ROOT: ./media - INVENTREE_STATIC_ROOT: ./static - INVENTREE_CACHE_HOST: localhost - - -jobs: - - test: - runs-on: ubuntu-latest - if: ${{ github.event.workflow_run.conclusion == 'success' }} - - services: - postgres: - image: postgres - env: - POSTGRES_USER: inventree - POSTGRES_PASSWORD: password - ports: - - 5432:5432 - - redis: - image: redis - ports: - - 6379:6379 - - steps: - - name: Checkout Code - uses: actions/checkout@v2 - - name: Setup Python - uses: actions/setup-python@v2 - with: - python-version: 3.7 - - name: Install Dependencies - run: | - sudo apt-get install libpq-dev - pip3 install invoke - pip3 install psycopg2 - pip3 install django-redis>=5.0.0 - invoke install - - name: Run Tests - run: invoke test - - name: Data Import Export - run: | - invoke migrate - python3 ./InvenTree/manage.py flush --noinput - invoke import-fixtures - invoke export-records -f data.json - python3 ./InvenTree/manage.py flush --noinput - invoke import-records -f data.json - invoke import-records -f data.json \ No newline at end of file diff --git a/.github/workflows/pr_checks.yaml b/.github/workflows/pr_checks.yaml index ab828458fa..97f30f0174 100644 --- a/.github/workflows/pr_checks.yaml +++ b/.github/workflows/pr_checks.yaml @@ -196,3 +196,58 @@ jobs: run: python3 ci/check_migration_files.py - name: Upload Coverage Report run: coveralls + + postgres: + name: Postgres + needs: ['javascript', 'html'] + runs-on: ubuntu-latest + + env: + INVENTREE_DB_ENGINE: django.db.backends.postgresql + INVENTREE_DB_USER: inventree + INVENTREE_DB_PASSWORD: password + INVENTREE_DB_HOST: '127.0.0.1' + INVENTREE_DB_PORT: 5432 + INVENTREE_DEBUG: info + INVENTREE_CACHE_HOST: localhost + + services: + postgres: + image: postgres + env: + POSTGRES_USER: inventree + POSTGRES_PASSWORD: password + ports: + - 5432:5432 + + redis: + image: redis + ports: + - 6379:6379 + + steps: + - name: Checkout Code + uses: actions/checkout@v2 + - name: Setup Python + uses: actions/setup-python@v2 + with: + python-version: 3.7 + - name: Install Dependencies + run: | + sudo apt-get install libpq-dev + pip3 install invoke + pip3 install psycopg2 + pip3 install django-redis>=5.0.0 + invoke install + - name: Run Tests + run: invoke test + - name: Data Import Export + run: | + invoke migrate + python3 ./InvenTree/manage.py flush --noinput + invoke import-fixtures + invoke export-records -f data.json + python3 ./InvenTree/manage.py flush --noinput + invoke import-records -f data.json + invoke import-records -f data.json + From a071d61ba76b3ce914faab76920d144434088e11 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 2 Dec 2021 13:34:55 +0100 Subject: [PATCH 058/129] use env for version --- .github/workflows/pr_checks.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/pr_checks.yaml b/.github/workflows/pr_checks.yaml index 97f30f0174..ae8001655b 100644 --- a/.github/workflows/pr_checks.yaml +++ b/.github/workflows/pr_checks.yaml @@ -228,10 +228,10 @@ jobs: steps: - name: Checkout Code uses: actions/checkout@v2 - - name: Setup Python + - name: Setup Python ${{ env.python_version }} uses: actions/setup-python@v2 with: - python-version: 3.7 + python-version: ${{ env.python_version }} - name: Install Dependencies run: | sudo apt-get install libpq-dev From cc5a03bb58d6a4f93f46acf237634b2bcab9a493 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 2 Dec 2021 13:37:26 +0100 Subject: [PATCH 059/129] merge mysql --- .github/workflows/mysql.yaml | 66 -------------------------------- .github/workflows/pr_checks.yaml | 50 ++++++++++++++++++++++++ 2 files changed, 50 insertions(+), 66 deletions(-) delete mode 100644 .github/workflows/mysql.yaml diff --git a/.github/workflows/mysql.yaml b/.github/workflows/mysql.yaml deleted file mode 100644 index 5dfed1f467..0000000000 --- a/.github/workflows/mysql.yaml +++ /dev/null @@ -1,66 +0,0 @@ -# MySQL Unit Testing - -name: MySQL - -on: - workflow_run: - workflows: ['PR checks'] - types: - - completed - -env: - # Database backend configuration - INVENTREE_DB_ENGINE: django.db.backends.mysql - INVENTREE_DB_NAME: inventree - INVENTREE_DB_USER: root - INVENTREE_DB_PASSWORD: password - INVENTREE_DB_HOST: '127.0.0.1' - INVENTREE_DB_PORT: 3306 - INVENTREE_DEBUG: info - INVENTREE_MEDIA_ROOT: ./media - INVENTREE_STATIC_ROOT: ./static - - -jobs: - - test: - runs-on: ubuntu-latest - if: ${{ github.event.workflow_run.conclusion == 'success' }} - - services: - mysql: - image: mysql:latest - env: - MYSQL_ALLOW_EMPTY_PASSWORD: yes - MYSQL_DATABASE: inventree - MYSQL_USER: inventree - MYSQL_PASSWORD: password - MYSQL_ROOT_PASSWORD: password - options: --health-cmd="mysqladmin ping" --health-interval=5s --health-timeout=2s --health-retries=3 - ports: - - 3306:3306 - - steps: - - name: Checkout Code - uses: actions/checkout@v2 - - name: Setup Python - uses: actions/setup-python@v2 - with: - python-version: 3.7 - - name: Install Dependencies - run: | - sudo apt-get install mysql-server libmysqlclient-dev - pip3 install invoke - pip3 install mysqlclient - invoke install - - name: Run Tests - run: invoke test - - name: Data Import Export - run: | - invoke migrate - python3 ./InvenTree/manage.py flush --noinput - invoke import-fixtures - invoke export-records -f data.json - python3 ./InvenTree/manage.py flush --noinput - invoke import-records -f data.json - invoke import-records -f data.json \ No newline at end of file diff --git a/.github/workflows/pr_checks.yaml b/.github/workflows/pr_checks.yaml index ae8001655b..0de6420547 100644 --- a/.github/workflows/pr_checks.yaml +++ b/.github/workflows/pr_checks.yaml @@ -251,3 +251,53 @@ jobs: invoke import-records -f data.json invoke import-records -f data.json + mysql: + name: MySql + needs: ['javascript', 'html'] + runs-on: ubuntu-latest + env: + # Database backend configuration + INVENTREE_DB_ENGINE: django.db.backends.mysql + INVENTREE_DB_USER: root + INVENTREE_DB_PASSWORD: password + INVENTREE_DB_HOST: '127.0.0.1' + INVENTREE_DB_PORT: 3306 + INVENTREE_DEBUG: info + + services: + mysql: + image: mysql:latest + env: + MYSQL_ALLOW_EMPTY_PASSWORD: yes + MYSQL_DATABASE: inventree + MYSQL_USER: inventree + MYSQL_PASSWORD: password + MYSQL_ROOT_PASSWORD: password + options: --health-cmd="mysqladmin ping" --health-interval=5s --health-timeout=2s --health-retries=3 + ports: + - 3306:3306 + + steps: + - name: Checkout Code + uses: actions/checkout@v2 + - name: Setup Python + uses: actions/setup-python@v2 + with: + python-version: 3.7 + - name: Install Dependencies + run: | + sudo apt-get install mysql-server libmysqlclient-dev + pip3 install invoke + pip3 install mysqlclient + invoke install + - name: Run Tests + run: invoke test + - name: Data Import Export + run: | + invoke migrate + python3 ./InvenTree/manage.py flush --noinput + invoke import-fixtures + invoke export-records -f data.json + python3 ./InvenTree/manage.py flush --noinput + invoke import-records -f data.json + invoke import-records -f data.json From 840c1c12c5c4f4e5f8d26b89a41887c53e206402 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 2 Dec 2021 13:37:53 +0100 Subject: [PATCH 060/129] use env for version --- .github/workflows/pr_checks.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/pr_checks.yaml b/.github/workflows/pr_checks.yaml index 0de6420547..87ae8b9e5f 100644 --- a/.github/workflows/pr_checks.yaml +++ b/.github/workflows/pr_checks.yaml @@ -280,10 +280,10 @@ jobs: steps: - name: Checkout Code uses: actions/checkout@v2 - - name: Setup Python + - name: Setup Python ${{ env.python_version }} uses: actions/setup-python@v2 with: - python-version: 3.7 + python-version: ${{ env.python_version }} - name: Install Dependencies run: | sudo apt-get install mysql-server libmysqlclient-dev From cc5ba37850de97f0c3156eaf6af936a60b401145 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 2 Dec 2021 13:39:12 +0100 Subject: [PATCH 061/129] use env for db name --- .github/workflows/pr_checks.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/pr_checks.yaml b/.github/workflows/pr_checks.yaml index 87ae8b9e5f..4788c60ee4 100644 --- a/.github/workflows/pr_checks.yaml +++ b/.github/workflows/pr_checks.yaml @@ -269,7 +269,7 @@ jobs: image: mysql:latest env: MYSQL_ALLOW_EMPTY_PASSWORD: yes - MYSQL_DATABASE: inventree + MYSQL_DATABASE: ${{ env.INVENTREE_DB_NAME }} MYSQL_USER: inventree MYSQL_PASSWORD: password MYSQL_ROOT_PASSWORD: password From 340c7574e4ebadd6c0bf41a7bbcbb2f9d54d1d1d Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 2 Dec 2021 13:45:09 +0100 Subject: [PATCH 062/129] optimise envs --- .github/workflows/pr_checks.yaml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/workflows/pr_checks.yaml b/.github/workflows/pr_checks.yaml index 4788c60ee4..a61f78976c 100644 --- a/.github/workflows/pr_checks.yaml +++ b/.github/workflows/pr_checks.yaml @@ -18,11 +18,19 @@ env: server_start_sleep: 60 GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + # general database settings INVENTREE_DB_ENGINE: sqlite3 INVENTREE_DB_NAME: inventree INVENTREE_MEDIA_ROOT: ./media INVENTREE_STATIC_ROOT: ./static + # for full databases + INVENTREE_DB_USER: inventree + INVENTREE_DB_PASSWORD: password + INVENTREE_DB_HOST: '127.0.0.1' + INVENTREE_DEBUG: info + jobs: @@ -204,11 +212,7 @@ jobs: env: INVENTREE_DB_ENGINE: django.db.backends.postgresql - INVENTREE_DB_USER: inventree - INVENTREE_DB_PASSWORD: password - INVENTREE_DB_HOST: '127.0.0.1' INVENTREE_DB_PORT: 5432 - INVENTREE_DEBUG: info INVENTREE_CACHE_HOST: localhost services: @@ -258,11 +262,7 @@ jobs: env: # Database backend configuration INVENTREE_DB_ENGINE: django.db.backends.mysql - INVENTREE_DB_USER: root - INVENTREE_DB_PASSWORD: password - INVENTREE_DB_HOST: '127.0.0.1' INVENTREE_DB_PORT: 3306 - INVENTREE_DEBUG: info services: mysql: From b0f14d23b29733cc79eb5663d41536bd63b9d031 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 2 Dec 2021 13:45:20 +0100 Subject: [PATCH 063/129] use envs everywhere --- .github/workflows/pr_checks.yaml | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/.github/workflows/pr_checks.yaml b/.github/workflows/pr_checks.yaml index a61f78976c..bc0d9f2995 100644 --- a/.github/workflows/pr_checks.yaml +++ b/.github/workflows/pr_checks.yaml @@ -14,7 +14,6 @@ on: env: python_version: 3.7 node_version: 16 - server_start_sleep: 60 GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} @@ -219,10 +218,10 @@ jobs: postgres: image: postgres env: - POSTGRES_USER: inventree - POSTGRES_PASSWORD: password + POSTGRES_USER: ${{ env.INVENTREE_DB_USER }} + POSTGRES_PASSWORD: ${{ env.INVENTREE_DB_PASSWORD }} ports: - - 5432:5432 + - ${{ env.INVENTREE_DB_PORT }}:${{ env.INVENTREE_DB_PORT }} redis: image: redis @@ -270,12 +269,12 @@ jobs: env: MYSQL_ALLOW_EMPTY_PASSWORD: yes MYSQL_DATABASE: ${{ env.INVENTREE_DB_NAME }} - MYSQL_USER: inventree - MYSQL_PASSWORD: password - MYSQL_ROOT_PASSWORD: password + MYSQL_USER: ${{ env.INVENTREE_DB_USER }} + MYSQL_PASSWORD: ${{ env.INVENTREE_DB_PASSWORD }} + MYSQL_ROOT_PASSWORD: ${{ env.INVENTREE_DB_PASSWORD }} options: --health-cmd="mysqladmin ping" --health-interval=5s --health-timeout=2s --health-retries=3 ports: - - 3306:3306 + - ${{ env.INVENTREE_DB_PORT }}:${{ env.INVENTREE_DB_PORT }} steps: - name: Checkout Code From e1668c86620b88f6329b10dcd60374edde46d249 Mon Sep 17 00:00:00 2001 From: Oliver Date: Thu, 2 Dec 2021 23:52:53 +1100 Subject: [PATCH 064/129] More stuffs: - Allow filtering of salesorderlineitem by "completed" status - Allow deletion of (empty) shipment - Show which items are going to be shipped --- InvenTree/order/api.py | 59 ++++++- InvenTree/order/models.py | 48 +++++- InvenTree/order/serializers.py | 17 ++ .../order/templates/order/order_base.html | 12 ++ .../order/purchase_order_detail.html | 6 +- .../templates/order/sales_order_base.html | 29 ++-- InvenTree/templates/js/translated/build.js | 1 + InvenTree/templates/js/translated/order.js | 157 +++++++++++++----- .../templates/js/translated/table_filters.js | 10 ++ 9 files changed, 283 insertions(+), 56 deletions(-) diff --git a/InvenTree/order/api.py b/InvenTree/order/api.py index f4e10bff08..4973c15785 100644 --- a/InvenTree/order/api.py +++ b/InvenTree/order/api.py @@ -551,6 +551,39 @@ class SODetail(generics.RetrieveUpdateDestroyAPIView): return queryset +class SOLineItemFilter(rest_filters.FilterSet): + """ + Custom filters for SOLineItemList endpoint + """ + + class Meta: + model = models.SalesOrderLineItem + fields = [ + 'order', + 'part', + ] + + completed = rest_filters.BooleanFilter(label='completed', method='filter_completed') + + def filter_completed(self, queryset, name, value): + """ + Filter by lines which are "completed" + + A line is completed when shipped >= quantity + """ + + value = str2bool(value) + + q = Q(shipped__gte=F('quantity')) + + if value: + queryset = queryset.filter(q) + else: + queryset = queryset.exclude(q) + + return queryset + + class SOLineItemList(generics.ListCreateAPIView): """ API endpoint for accessing a list of SalesOrderLineItem objects. @@ -558,6 +591,7 @@ class SOLineItemList(generics.ListCreateAPIView): queryset = models.SalesOrderLineItem.objects.all() serializer_class = serializers.SOLineItemSerializer + filterset_class = SOLineItemFilter def get_serializer(self, *args, **kwargs): @@ -620,6 +654,28 @@ class SOLineItemDetail(generics.RetrieveUpdateDestroyAPIView): serializer_class = serializers.SOLineItemSerializer +class SalesOrderComplete(generics.CreateAPIView): + """ + API endpoint for manually marking a SalesOrder as "complete". + """ + + queryset = models.SalesOrder.objects.all() + serializer_class = serializers.SalesOrderShipmentCompleteSerializer + + def get_serializer_context(self): + + ctx = super().get_serializer_context() + + ctx['request'] = self.request + + try: + ctx['order'] = models.SalesOrder.objects.get(pk=self.kwargs.get('pk', None)) + except: + pass + + return ctx + + class SalesOrderAllocate(generics.CreateAPIView): """ API endpoint to allocate stock items against a SalesOrder @@ -758,7 +814,7 @@ class SOShipmentList(generics.ListCreateAPIView): ] -class SOShipmentDetail(generics.RetrieveUpdateAPIView): +class SOShipmentDetail(generics.RetrieveUpdateDestroyAPIView): """ API detail endpooint for SalesOrderShipment model """ @@ -863,6 +919,7 @@ order_api_urls = [ # Sales order detail view url(r'^(?P\d+)/', include([ + url(r'^complete/', SalesOrderComplete.as_view(), name='api-so-complete'), url(r'^allocate/', SalesOrderAllocate.as_view(), name='api-so-allocate'), url(r'^.*$', SODetail.as_view(), name='api-so-detail'), ])), diff --git a/InvenTree/order/models.py b/InvenTree/order/models.py index 0e5b10cf98..8c21c311f1 100644 --- a/InvenTree/order/models.py +++ b/InvenTree/order/models.py @@ -363,11 +363,30 @@ class PurchaseOrder(Order): return self.lines.filter(quantity__gt=F('received')) + def completed_line_items(self): + """ + Return a list of completed line items against this order + """ + return self.lines.filter(quantity__lte=F('received')) + + @property + def line_count(self): + return self.lines.count() + + @property + def completed_line_count(self): + + return self.completed_line_items().count() + + @property + def pending_line_count(self): + return self.pending_line_items().count() + @property def is_complete(self): """ Return True if all line items have been received """ - return self.pending_line_items().count() == 0 + return self.lines.count() > 0 and self.pending_line_items().count() == 0 @transaction.atomic def receive_line_item(self, line, location, quantity, user, status=StockStatus.OK, purchase_price=None, **kwargs): @@ -601,8 +620,7 @@ class SalesOrder(Order): and mark it as "shipped" if so. """ - return all([line.is_completed() for line in self.lines.all()]) - + return self.lines.count() > 0 and all([line.is_completed() for line in self.lines.all()]) def can_cancel(self): """ @@ -635,6 +653,30 @@ class SalesOrder(Order): return True + @property + def line_count(self): + return self.lines.count() + + def completed_line_items(self): + """ + Return a queryset of the completed line items for this order + """ + return self.lines.filter(shipped__gte=F('quantity')) + + def pending_line_items(self): + """ + Return a queryset of the pending line items for this order + """ + return self.lines.filter(shipped__lt=F('quantity')) + + @property + def completed_line_count(self): + return self.completed_line_items().count() + + @property + def pending_line_count(self): + return self.pending_line_items().count() + class PurchaseOrderAttachment(InvenTreeAttachment): """ diff --git a/InvenTree/order/serializers.py b/InvenTree/order/serializers.py index f86aae8163..3b33d4a16f 100644 --- a/InvenTree/order/serializers.py +++ b/InvenTree/order/serializers.py @@ -489,6 +489,8 @@ class SalesOrderAllocationSerializer(InvenTreeModelSerializer): item_detail = stock.serializers.StockItemSerializer(source='item', many=False, read_only=True) location_detail = stock.serializers.LocationSerializer(source='item.location', many=False, read_only=True) + shipment_date = serializers.DateField(source='shipment.shipment_date', read_only=True) + def __init__(self, *args, **kwargs): order_detail = kwargs.pop('order_detail', False) @@ -527,6 +529,7 @@ class SalesOrderAllocationSerializer(InvenTreeModelSerializer): 'part', 'part_detail', 'shipment', + 'shipment_date', ] @@ -734,6 +737,20 @@ class SOShipmentAllocationItemSerializer(serializers.Serializer): return data +class SalesOrderCompleteSerializer(serializers.Serializer): + """ + DRF serializer for manually marking a sales order as complete + """ + + def save(self): + + request = self.context['request'] + order = self.context['order'] + data = self.validated_data + + + + class SOShipmentAllocationSerializer(serializers.Serializer): """ DRF serializer for allocation of stock items against a sales order / shipment diff --git a/InvenTree/order/templates/order/order_base.html b/InvenTree/order/templates/order/order_base.html index da78b83561..195f2273a3 100644 --- a/InvenTree/order/templates/order/order_base.html +++ b/InvenTree/order/templates/order/order_base.html @@ -119,6 +119,18 @@ src="{% static 'img/blank_image.png' %}" {{ order.supplier_reference }}{% include "clip.html"%} {% endif %} + + + {% trans "Completed Line Items" %} + + {{ order.completed_line_count }} / {{ order.line_count }} + {% if order.is_complete %} + {% trans "Complete" %} + {% else %} + {% trans "Incomplete" %} + {% endif %} + + {% if order.link %} diff --git a/InvenTree/order/templates/order/purchase_order_detail.html b/InvenTree/order/templates/order/purchase_order_detail.html index 90a105caf1..d0215777bb 100644 --- a/InvenTree/order/templates/order/purchase_order_detail.html +++ b/InvenTree/order/templates/order/purchase_order_detail.html @@ -37,7 +37,7 @@
    - {% include "filter_list.html" with id="order-lines" %} + {% include "filter_list.html" with id="purchase-order-lines" %}
    @@ -190,6 +190,10 @@ $('#new-po-line').click(function() { $('#receive-selected-items').click(function() { var items = $("#po-line-table").bootstrapTable('getSelections'); + if (items.length == 0) { + items = $("#po-line-table").bootstrapTable('getData'); + } + receivePurchaseOrderItems( {{ order.id }}, items, diff --git a/InvenTree/order/templates/order/sales_order_base.html b/InvenTree/order/templates/order/sales_order_base.html index 2a5a79a161..80ff5bbd97 100644 --- a/InvenTree/order/templates/order/sales_order_base.html +++ b/InvenTree/order/templates/order/sales_order_base.html @@ -63,8 +63,8 @@ src="{% static 'img/blank_image.png' %}" {% if order.status == SalesOrderStatus.PENDING %} - {% endif %} {% endif %} @@ -123,6 +123,18 @@ src="{% static 'img/blank_image.png' %}" {% endif %} + + + + + {% if order.link %} @@ -149,13 +161,6 @@ src="{% static 'img/blank_image.png' %}" {% endif %} - {% if order.status == PurchaseOrderStatus.COMPLETE %} - - - - - - {% endif %} {% if order.responsible %} @@ -203,10 +208,8 @@ $("#cancel-order").click(function() { }); }); -$("#ship-order").click(function() { - launchModalForm("{% url 'so-ship' order.id %}", { - reload: true, - }); +$("#complete-order").click(function() { + completeSalesOrder({{ order.pk }}); }); {% if report_enabled %} diff --git a/InvenTree/templates/js/translated/build.js b/InvenTree/templates/js/translated/build.js index c19a5b69d2..02b2ff5321 100644 --- a/InvenTree/templates/js/translated/build.js +++ b/InvenTree/templates/js/translated/build.js @@ -1413,6 +1413,7 @@ function allocateStockToBuild(build_id, part_id, bom_items, options={}) { filters: { bom_item: bom_item.pk, in_stock: true, + available: true, part_detail: true, location_detail: true, }, diff --git a/InvenTree/templates/js/translated/order.js b/InvenTree/templates/js/translated/order.js index e44eed9589..64c4f97645 100644 --- a/InvenTree/templates/js/translated/order.js +++ b/InvenTree/templates/js/translated/order.js @@ -41,6 +41,9 @@ function salesOrderShipmentFields(options={}) { var fields = { order: {}, reference: {}, + tracking_number: { + icon: 'fa-hashtag', + }, }; // If order is specified, hide the order field @@ -58,19 +61,75 @@ function salesOrderShipmentFields(options={}) { */ function completeShipment(shipment_id) { - constructForm(`/api/order/so/shipment/${shipment_id}/ship/`, { - method: 'POST', - title: '{% trans "Complete Shipment" %}', - fields: { - tracking_number: {}, - }, - confirm: true, - confirmMessage: '{% trans "Confirm Shipment" %}', - onSuccess: function(data) { - // Reload tables - $('#so-lines-table').bootstrapTable('refresh'); - $('#pending-shipments-table').bootstrapTable('refresh'); - $('#completed-shipments-table').bootstrapTable('refresh'); + // Request the list of stock items which will be shipped + inventreeGet(`/api/order/so/shipment/${shipment_id}/`, {}, { + success: function(shipment) { + var allocations = shipment.allocations; + + var html = ''; + + if (!allocations || allocations.length == 0) { + html = ` +
    + {% trans "No stock items have been allocated to this shipment" %} +
    + `; + } else { + html = ` + {% trans "The following stock items will be shipped" %} +
    {{ order.customer_reference }}{% include "clip.html"%}
    {% trans "Completed Line Items" %} + {{ order.completed_line_count }} / {{ order.line_count }} + {% if order.is_completed %} + {% trans "Complete" %} + {% else %} + {% trans "Incomplete" %} + {% endif %} +
    {{ order.shipment_date }}{{ order.shipped_by }}
    {% trans "Received" %}{{ order.complete_date }}{{ order.received_by }}
    + + + + + + + + `; + + allocations.forEach(function(allocation) { + + var part = allocation.part_detail; + var thumb = thumbnailImage(part.thumbnail || part.image); + + var stock = ''; + + if (allocation.serial) { + stock = `{% trans "Serial Number" %}: ${allocation.serial}`; + } else { + stock = `{% trans "Quantity" %}: ${allocation.quantity}`; + } + + html += ` + + + + + `; + }); + + html += ` + +
    {% trans "Part" %}{% trans "Stock Item" %}
    ${thumb} ${part.full_name}${stock}
    + `; + } + + constructForm(`/api/order/so/shipment/${shipment_id}/ship/`, { + method: 'POST', + title: '{% trans "Complete Shipment" %}', + fields: { + tracking_number: {}, + }, + preFormContent: html, + confirm: true, + confirmMessage: '{% trans "Confirm Shipment" %}', + onSuccess: function(data) { + // Reload tables + $('#so-lines-table').bootstrapTable('refresh'); + $('#pending-shipments-table').bootstrapTable('refresh'); + $('#completed-shipments-table').bootstrapTable('refresh'); + } + }); } }); } @@ -393,7 +452,9 @@ function newPurchaseOrderFromOrderWizard(e) { */ function receivePurchaseOrderItems(order_id, line_items, options={}) { + // Zero items selected? if (line_items.length == 0) { + showAlertDialog( '{% trans "Select Line Items" %}', '{% trans "At least one line item must be selected" %}', @@ -1256,6 +1317,10 @@ function loadSalesOrderShipmentTable(table, options={}) { html += makeIconButton('fa-truck icon-green', 'button-shipment-ship', pk, '{% trans "Complete shipment" %}'); } + var enable_delete = row.allocations && row.allocations.length == 0; + + html += makeIconButton('fa-trash-alt icon-red', 'button-shipment-delete', pk, '{% trans "Delete shipment" %}', {disabled: !enable_delete}); + html += `
    `; return html; @@ -1268,10 +1333,12 @@ function loadSalesOrderShipmentTable(table, options={}) { $(table).find('.button-shipment-edit').click(function() { var pk = $(this).attr('pk'); + var fields = salesOrderShipmentFields(); + + delete fields.order; + constructForm(`/api/order/so/shipment/${pk}/`, { - fields: { - reference: {}, - }, + fields: fields, title: '{% trans "Edit Shipment" %}', onSuccess: function() { $(table).bootstrapTable('refresh'); @@ -1284,6 +1351,18 @@ function loadSalesOrderShipmentTable(table, options={}) { completeShipment(pk); }); + + $(table).find('.button-shipment-delete').click(function() { + var pk = $(this).attr('pk'); + + constructForm(`/api/order/so/shipment/${pk}/`, { + title: '{% trans "Delete Shipment" %}', + method: 'DELETE', + onSuccess: function() { + $(table).bootstrapTable('refresh'); + } + }); + }); } $(table).inventreeTable({ @@ -1510,14 +1589,6 @@ function allocateStockToSalesOrder(order_id, line_items, options={}) { }, value: options.shipment || null, auto_fill: true, - secondary: { - title: '{% trans "New Shipment" %}', - fields: function() { - return salesOrderShipmentFields({ - order: order_id - }); - } - } } }, preFormContent: html, @@ -1854,7 +1925,7 @@ function showAllocationSubTable(index, row, element, options) { table.bootstrapTable({ onPostBody: setupCallbacks, data: row.allocations, - showHeader: false, + showHeader: true, columns: [ { field: 'part_detail', @@ -1865,7 +1936,7 @@ function showAllocationSubTable(index, row, element, options) { }, { field: 'allocated', - title: '{% trans "Quantity" %}', + title: '{% trans "Stock Item" %}', formatter: function(value, row, index, field) { var text = ''; @@ -1883,8 +1954,8 @@ function showAllocationSubTable(index, row, element, options) { title: '{% trans "Location" %}', formatter: function(value, row, index, field) { - if (shipped) { - return `{% trans "Shipped to customer" %}`; + if (row.shipment_date) { + return `{% trans "Shipped to customer" %} - ${row.shipment_date}`; } else if (row.location) { // Location specified return renderLink( @@ -1896,21 +1967,17 @@ function showAllocationSubTable(index, row, element, options) { } }, }, - // TODO: ?? What is 'po' field all about? - /* - { - field: 'po' - }, - */ { field: 'buttons', - title: '{% trans "Actions" %}', + title: '{% trans "" %}', formatter: function(value, row, index, field) { var html = `
    `; var pk = row.pk; - if (!shipped) { + if (row.shipment_date) { + html += `{% trans "Shipped" %}`; + } else { html += makeIconButton('fa-edit icon-blue', 'button-allocation-edit', pk, '{% trans "Edit stock allocation" %}'); html += makeIconButton('fa-trash-alt icon-red', 'button-allocation-delete', pk, '{% trans "Delete stock allocation" %}'); } @@ -2017,7 +2084,7 @@ function loadSalesOrderLineItemTable(table, options={}) { var filter_target = options.filter_target || '#filter-list-sales-order-lines'; - setupFilterList('salesorderlineitems', $(table), filter_target); + setupFilterList('salesorderlineitem', $(table), filter_target); // Is the order pending? var pending = options.status == {{ SalesOrderStatus.PENDING }}; @@ -2228,7 +2295,21 @@ function loadSalesOrderLineItemTable(table, options={}) { } html += makeIconButton('fa-edit icon-blue', 'button-edit', pk, '{% trans "Edit line item" %}'); - html += makeIconButton('fa-trash-alt icon-red', 'button-delete', pk, '{% trans "Delete line item " %}'); + + var delete_disabled = false; + + var title = '{% trans "Delete line item" %}'; + + if (!!row.shipped) { + delete_disabled = true; + title = '{% trans "Cannot be deleted as items have been shipped" %}'; + } else if (!!row.allocated) { + delete_disabled = true; + title = '{% trans "Cannot be deleted as items have been allocated" %}'; + } + + // Prevent deletion of the line item if items have been allocated or shipped! + html += makeIconButton('fa-trash-alt icon-red', 'button-delete', pk, title, {disabled: delete_disabled}); html += `
    `; diff --git a/InvenTree/templates/js/translated/table_filters.js b/InvenTree/templates/js/translated/table_filters.js index e7f5dc2a4d..6920626284 100644 --- a/InvenTree/templates/js/translated/table_filters.js +++ b/InvenTree/templates/js/translated/table_filters.js @@ -310,6 +310,7 @@ function getAvailableTableFilters(tableKey) { }, }; } + // Filters for the PurchaseOrder table if (tableKey == 'purchaseorder') { @@ -346,6 +347,15 @@ function getAvailableTableFilters(tableKey) { }; } + if (tableKey == 'salesorderlineitem') { + return { + completed: { + type: 'bool', + title: '{% trans "Completed" %}', + }, + }; + } + if (tableKey == 'supplier-part') { return { active: { From 961c161b3c33165b4fcc3742c757cc04f89e9203 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 2 Dec 2021 13:54:24 +0100 Subject: [PATCH 065/129] rename to better reflect function --- .github/workflows/pr_checks.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/pr_checks.yaml b/.github/workflows/pr_checks.yaml index bc0d9f2995..0cc4a31deb 100644 --- a/.github/workflows/pr_checks.yaml +++ b/.github/workflows/pr_checks.yaml @@ -1,6 +1,6 @@ -# Checks for each PR +# Checks for each PR / push -name: PR checks +name: QC checks on: push: From dd9eed3da671890212c1fb8d8839ccbb4d3366ac Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 2 Dec 2021 13:54:40 +0100 Subject: [PATCH 066/129] needed for import / export checks --- .github/workflows/pr_checks.yaml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/pr_checks.yaml b/.github/workflows/pr_checks.yaml index 0cc4a31deb..a1ee6c13e4 100644 --- a/.github/workflows/pr_checks.yaml +++ b/.github/workflows/pr_checks.yaml @@ -21,6 +21,7 @@ env: # general database settings INVENTREE_DB_ENGINE: sqlite3 INVENTREE_DB_NAME: inventree + INVENTREE_DB_NAME_main: inventree INVENTREE_MEDIA_ROOT: ./media INVENTREE_STATIC_ROOT: ./static @@ -169,6 +170,7 @@ jobs: runs-on: ubuntu-latest env: + INVENTREE_DB_NAME: './${{ env.INVENTREE_DB_NAME_main }}.sqlite' INVENTREE_DB_ENGINE: sqlite3 steps: @@ -193,7 +195,7 @@ jobs: invoke migrate invoke import-fixtures invoke export-records -f data.json - rm ${{ env.INVENTREE_DB_NAME }}.sqlite + rm ${{ env.INVENTREE_DB_NAME_main }}.sqlite invoke migrate invoke import-records -f data.json invoke import-records -f data.json From ecf70b6d4dd142795b7effbbb03ab5244de3a44b Mon Sep 17 00:00:00 2001 From: Oliver Date: Thu, 2 Dec 2021 23:58:02 +1100 Subject: [PATCH 067/129] Some PEP fixes --- InvenTree/order/models.py | 7 +++---- InvenTree/order/serializers.py | 8 +++++--- InvenTree/order/test_migrations.py | 2 +- InvenTree/order/test_sales_order.py | 2 +- 4 files changed, 10 insertions(+), 9 deletions(-) diff --git a/InvenTree/order/models.py b/InvenTree/order/models.py index 8c21c311f1..b2cca685d9 100644 --- a/InvenTree/order/models.py +++ b/InvenTree/order/models.py @@ -812,7 +812,7 @@ class PurchaseOrderLineItem(OrderLineItem): def get_destination(self): """ Show where the line item is or should be placed - + NOTE: If a line item gets split when recieved, only an arbitrary stock items location will be reported as the location for the entire line. @@ -993,7 +993,7 @@ class SalesOrderShipment(models.Model): if self.shipment_date: # Shipment has already been sent! raise ValidationError(_("Shipment has already been sent")) - + if self.allocations.count() == 0: raise ValidationError(_("Shipment has no allocated stock items")) @@ -1014,11 +1014,10 @@ class SalesOrderShipment(models.Model): # Iterate through each stock item assigned to this shipment for allocation in allocations: - # Mark the allocation as "complete" allocation.complete_allocation(user) - # Update the "shipment" date + # Update the "shipment" date self.shipment_date = datetime.now() self.shipped_by = user diff --git a/InvenTree/order/serializers.py b/InvenTree/order/serializers.py index 3b33d4a16f..b336042684 100644 --- a/InvenTree/order/serializers.py +++ b/InvenTree/order/serializers.py @@ -11,6 +11,7 @@ from django.core.exceptions import ValidationError as DjangoValidationError from django.db import models, transaction from django.db.models import Case, When, Value from django.db.models import BooleanField, ExpressionWrapper, F +from InvenTree.InvenTree.status_codes import SalesOrderStatus from rest_framework import serializers from rest_framework.serializers import ValidationError @@ -653,7 +654,7 @@ class SalesOrderShipmentCompleteSerializer(serializers.ModelSerializer): return data = self.validated_data - + request = self.context['request'] user = request.user @@ -748,7 +749,9 @@ class SalesOrderCompleteSerializer(serializers.Serializer): order = self.context['order'] data = self.validated_data - + # Mark this order as complete! + order.status = SalesOrderStatus.SHIPPED + order.save() class SOShipmentAllocationSerializer(serializers.Serializer): @@ -816,7 +819,6 @@ class SOShipmentAllocationSerializer(serializers.Serializer): with transaction.atomic(): for entry in items: - # Create a new SalesOrderAllocation order.models.SalesOrderAllocation.objects.create( line=entry.get('line_item'), diff --git a/InvenTree/order/test_migrations.py b/InvenTree/order/test_migrations.py index d62449613e..d8f3a655ca 100644 --- a/InvenTree/order/test_migrations.py +++ b/InvenTree/order/test_migrations.py @@ -111,7 +111,7 @@ class TestShipmentMigration(MigratorTestCase): # The "shipment" model does not exist yet with self.assertRaises(LookupError): self.old_state.apps.get_model('order', 'salesordershipment') - + def test_shipment_creation(self): """ Check that a SalesOrderShipment has been created diff --git a/InvenTree/order/test_sales_order.py b/InvenTree/order/test_sales_order.py index 76f9275dac..40fab98349 100644 --- a/InvenTree/order/test_sales_order.py +++ b/InvenTree/order/test_sales_order.py @@ -10,7 +10,7 @@ from company.models import Company from InvenTree import status_codes as status -from order.models import SalesOrder, SalesOrderLineItem, SalesOrderShipment, SalesOrderAllocation +from order.models import SalesOrder, SalesOrderLineItem, SalesOrderAllocation from part.models import Part From 281ea37bd63adbf318499c010127490574a12a42 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 2 Dec 2021 14:03:40 +0100 Subject: [PATCH 068/129] maybe fix coveralls connection? --- .github/workflows/pr_checks.yaml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/.github/workflows/pr_checks.yaml b/.github/workflows/pr_checks.yaml index a1ee6c13e4..a1f50247a7 100644 --- a/.github/workflows/pr_checks.yaml +++ b/.github/workflows/pr_checks.yaml @@ -203,8 +203,11 @@ jobs: run: invoke translate - name: Check Migration Files run: python3 ci/check_migration_files.py - - name: Upload Coverage Report - run: coveralls + - name: Coveralls Finished + uses: coverallsapp/github-action@master + with: + github-token: ${{ env.GITHUB_TOKEN }} + git-commit: ${{ env.GITHUB_SHA }} postgres: name: Postgres From e7087aafdaa760c564569e029ea1ea4bdd0a5d77 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 2 Dec 2021 14:05:09 +0100 Subject: [PATCH 069/129] seems like it does not like comments between envs --- .github/workflows/pr_checks.yaml | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/.github/workflows/pr_checks.yaml b/.github/workflows/pr_checks.yaml index a1f50247a7..0a2415e47d 100644 --- a/.github/workflows/pr_checks.yaml +++ b/.github/workflows/pr_checks.yaml @@ -18,15 +18,13 @@ env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - # general database settings - INVENTREE_DB_ENGINE: sqlite3 + INVENTREE_DB_ENGINE: sqlite3 # general database settings INVENTREE_DB_NAME: inventree INVENTREE_DB_NAME_main: inventree INVENTREE_MEDIA_ROOT: ./media INVENTREE_STATIC_ROOT: ./static - # for full databases - INVENTREE_DB_USER: inventree + INVENTREE_DB_USER: inventree # for full databases INVENTREE_DB_PASSWORD: password INVENTREE_DB_HOST: '127.0.0.1' INVENTREE_DEBUG: info From bab7b766b5205e4e6062f1dd6224d592538ced5d Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 2 Dec 2021 14:05:55 +0100 Subject: [PATCH 070/129] Revert "seems like it does not like comments between envs" This reverts commit e7087aafdaa760c564569e029ea1ea4bdd0a5d77. --- .github/workflows/pr_checks.yaml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/pr_checks.yaml b/.github/workflows/pr_checks.yaml index 0a2415e47d..a1f50247a7 100644 --- a/.github/workflows/pr_checks.yaml +++ b/.github/workflows/pr_checks.yaml @@ -18,13 +18,15 @@ env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - INVENTREE_DB_ENGINE: sqlite3 # general database settings + # general database settings + INVENTREE_DB_ENGINE: sqlite3 INVENTREE_DB_NAME: inventree INVENTREE_DB_NAME_main: inventree INVENTREE_MEDIA_ROOT: ./media INVENTREE_STATIC_ROOT: ./static - INVENTREE_DB_USER: inventree # for full databases + # for full databases + INVENTREE_DB_USER: inventree INVENTREE_DB_PASSWORD: password INVENTREE_DB_HOST: '127.0.0.1' INVENTREE_DEBUG: info From 80b615bfb73d899af20d218d0ec715318fe8d1a9 Mon Sep 17 00:00:00 2001 From: Oliver Date: Fri, 3 Dec 2021 00:08:05 +1100 Subject: [PATCH 071/129] Import fix --- InvenTree/order/serializers.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/InvenTree/order/serializers.py b/InvenTree/order/serializers.py index 11508070d5..b0af634a00 100644 --- a/InvenTree/order/serializers.py +++ b/InvenTree/order/serializers.py @@ -11,7 +11,6 @@ from django.core.exceptions import ValidationError as DjangoValidationError from django.db import models, transaction from django.db.models import Case, When, Value from django.db.models import BooleanField, ExpressionWrapper, F -from InvenTree.InvenTree.status_codes import SalesOrderStatus from rest_framework import serializers from rest_framework.serializers import ValidationError @@ -27,7 +26,7 @@ from InvenTree.serializers import InvenTreeModelSerializer from InvenTree.serializers import InvenTreeDecimalField from InvenTree.serializers import InvenTreeMoneySerializer from InvenTree.serializers import ReferenceIndexingSerializerMixin -from InvenTree.status_codes import StockStatus +from InvenTree.status_codes import StockStatus, SalesOrderStatus import order.models From b99d5a28e91147d9ee3fb2b8f1f4b6da09990ae9 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 2 Dec 2021 14:10:34 +0100 Subject: [PATCH 072/129] fix? postgres user --- .github/workflows/pr_checks.yaml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.github/workflows/pr_checks.yaml b/.github/workflows/pr_checks.yaml index a1f50247a7..b69f6b5ec7 100644 --- a/.github/workflows/pr_checks.yaml +++ b/.github/workflows/pr_checks.yaml @@ -27,7 +27,9 @@ env: # for full databases INVENTREE_DB_USER: inventree + POSTGRES_USER: inventree INVENTREE_DB_PASSWORD: password + POSTGRES_PASSWORD: password INVENTREE_DB_HOST: '127.0.0.1' INVENTREE_DEBUG: info @@ -222,9 +224,6 @@ jobs: services: postgres: image: postgres - env: - POSTGRES_USER: ${{ env.INVENTREE_DB_USER }} - POSTGRES_PASSWORD: ${{ env.INVENTREE_DB_PASSWORD }} ports: - ${{ env.INVENTREE_DB_PORT }}:${{ env.INVENTREE_DB_PORT }} From 0f4991db0affb93ee7aae2713d06c2b678da8ba4 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 2 Dec 2021 14:15:13 +0100 Subject: [PATCH 073/129] fix port envs? --- .github/workflows/pr_checks.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/pr_checks.yaml b/.github/workflows/pr_checks.yaml index b69f6b5ec7..1117eca879 100644 --- a/.github/workflows/pr_checks.yaml +++ b/.github/workflows/pr_checks.yaml @@ -225,7 +225,7 @@ jobs: postgres: image: postgres ports: - - ${{ env.INVENTREE_DB_PORT }}:${{ env.INVENTREE_DB_PORT }} + - 5432:5432 redis: image: redis @@ -278,7 +278,7 @@ jobs: MYSQL_ROOT_PASSWORD: ${{ env.INVENTREE_DB_PASSWORD }} options: --health-cmd="mysqladmin ping" --health-interval=5s --health-timeout=2s --health-retries=3 ports: - - ${{ env.INVENTREE_DB_PORT }}:${{ env.INVENTREE_DB_PORT }} + - 3306:3306 steps: - name: Checkout Code From 6355d2e8c29e224b308a3e402269aef0e573c31d Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 2 Dec 2021 14:17:15 +0100 Subject: [PATCH 074/129] maybe this way? --- .github/workflows/pr_checks.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/pr_checks.yaml b/.github/workflows/pr_checks.yaml index 1117eca879..1ab53b8b49 100644 --- a/.github/workflows/pr_checks.yaml +++ b/.github/workflows/pr_checks.yaml @@ -172,7 +172,7 @@ jobs: runs-on: ubuntu-latest env: - INVENTREE_DB_NAME: './${{ env.INVENTREE_DB_NAME_main }}.sqlite' + INVENTREE_DB_NAME: ./${{ env.INVENTREE_DB_NAME_main }}.sqlite INVENTREE_DB_ENGINE: sqlite3 steps: From 440f5e560e81685ee282ad278e4ede41d0be8fae Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 2 Dec 2021 14:19:20 +0100 Subject: [PATCH 075/129] qucik fix --- .github/workflows/pr_checks.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/pr_checks.yaml b/.github/workflows/pr_checks.yaml index 1ab53b8b49..540cd4a133 100644 --- a/.github/workflows/pr_checks.yaml +++ b/.github/workflows/pr_checks.yaml @@ -172,7 +172,7 @@ jobs: runs-on: ubuntu-latest env: - INVENTREE_DB_NAME: ./${{ env.INVENTREE_DB_NAME_main }}.sqlite + INVENTREE_DB_NAME: ./inventree.sqlite INVENTREE_DB_ENGINE: sqlite3 steps: From 732034d9e540afbc19976ea39281c64bcc03a8f5 Mon Sep 17 00:00:00 2001 From: Oliver Date: Fri, 3 Dec 2021 00:43:10 +1100 Subject: [PATCH 076/129] Merge conflicting migrations --- ...4_auto_20211201_2139_0060_auto_20211129_1339.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 InvenTree/order/migrations/0061_merge_0054_auto_20211201_2139_0060_auto_20211129_1339.py diff --git a/InvenTree/order/migrations/0061_merge_0054_auto_20211201_2139_0060_auto_20211129_1339.py b/InvenTree/order/migrations/0061_merge_0054_auto_20211201_2139_0060_auto_20211129_1339.py new file mode 100644 index 0000000000..e844b0fc23 --- /dev/null +++ b/InvenTree/order/migrations/0061_merge_0054_auto_20211201_2139_0060_auto_20211129_1339.py @@ -0,0 +1,14 @@ +# Generated by Django 3.2.5 on 2021-12-02 13:31 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('order', '0054_auto_20211201_2139'), + ('order', '0060_auto_20211129_1339'), + ] + + operations = [ + ] From 3c3dd9368db3c7938373be941ee7b107d2c081a5 Mon Sep 17 00:00:00 2001 From: Oliver Date: Fri, 3 Dec 2021 00:45:44 +1100 Subject: [PATCH 077/129] Do not auto-complete salesorder when shipment is done - User might want to add more line items? --- InvenTree/order/models.py | 5 ----- 1 file changed, 5 deletions(-) diff --git a/InvenTree/order/models.py b/InvenTree/order/models.py index b2cca685d9..0c5fe5e3d4 100644 --- a/InvenTree/order/models.py +++ b/InvenTree/order/models.py @@ -1029,11 +1029,6 @@ class SalesOrderShipment(models.Model): self.save() - # Finally, check if the order is fully shipped - if self.order.is_completed(): - self.order.status = SalesOrderStatus.SHIPPED - self.order.save() - class SalesOrderAllocation(models.Model): """ From 5de4a0cfaff5c7b308a9be35ca1cf188c6296334 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 2 Dec 2021 23:42:21 +0100 Subject: [PATCH 078/129] maybe declaring variables helps --- .github/workflows/pr_checks.yaml | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/.github/workflows/pr_checks.yaml b/.github/workflows/pr_checks.yaml index 540cd4a133..09e54c5ad8 100644 --- a/.github/workflows/pr_checks.yaml +++ b/.github/workflows/pr_checks.yaml @@ -218,12 +218,19 @@ jobs: env: INVENTREE_DB_ENGINE: django.db.backends.postgresql + INVENTREE_DB_USER: ${{ env.INVENTREE_DB_USER }} + INVENTREE_DB_PASSWORD: ${{ env.INVENTREE_DB_PASSWORD }} + INVENTREE_DB_HOST: ${{ env.INVENTREE_DB_HOST }} INVENTREE_DB_PORT: 5432 + INVENTREE_DEBUG: ${{ env.INVENTREE_DEBUG }} INVENTREE_CACHE_HOST: localhost services: postgres: image: postgres + env: + POSTGRES_USER: ${{ env.INVENTREE_DB_USER }} + POSTGRES_PASSWORD: ${{ env.INVENTREE_DB_PASSWORD }} ports: - 5432:5432 @@ -265,7 +272,11 @@ jobs: env: # Database backend configuration INVENTREE_DB_ENGINE: django.db.backends.mysql + INVENTREE_DB_USER: ${{ env.INVENTREE_DB_USER }} + INVENTREE_DB_PASSWORD: ${{ env.INVENTREE_DB_PASSWORD }} + INVENTREE_DB_HOST: ${{ env.INVENTREE_DB_HOST }} INVENTREE_DB_PORT: 3306 + INVENTREE_DEBUG: ${{ env.INVENTREE_DEBUG }} services: mysql: From ce4a01255a37613bf8e908009dee145be5126174 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 3 Dec 2021 00:04:00 +0100 Subject: [PATCH 079/129] try a pre job to set params --- .github/workflows/pr_checks.yaml | 41 ++++++++++++++++++++------------ 1 file changed, 26 insertions(+), 15 deletions(-) diff --git a/.github/workflows/pr_checks.yaml b/.github/workflows/pr_checks.yaml index 09e54c5ad8..f81f30df41 100644 --- a/.github/workflows/pr_checks.yaml +++ b/.github/workflows/pr_checks.yaml @@ -27,17 +27,31 @@ env: # for full databases INVENTREE_DB_USER: inventree - POSTGRES_USER: inventree INVENTREE_DB_PASSWORD: password - POSTGRES_PASSWORD: password INVENTREE_DB_HOST: '127.0.0.1' INVENTREE_DEBUG: info jobs: + init: + name: set parameters + runs-on: ubuntu-latest + outputs: + user: ${{ steps.step1.outputs.user }} + password: ${{ steps.step1.outputs.password }} + host: ${{ steps.step1.outputs.host }} + + steps: + - id: step1 + run: | + echo "::set-output name=user::${{ env.INVENTREE_DB_USER }}" + echo "::set-output name=password::${{ env.INVENTREE_DB_PASSWORD }}" + echo "::set-output name=host::${{ env.INVENTREE_DB_HOST }}" + check_version: name: version number + needs: init runs-on: ubuntu-latest steps: @@ -218,19 +232,17 @@ jobs: env: INVENTREE_DB_ENGINE: django.db.backends.postgresql - INVENTREE_DB_USER: ${{ env.INVENTREE_DB_USER }} - INVENTREE_DB_PASSWORD: ${{ env.INVENTREE_DB_PASSWORD }} - INVENTREE_DB_HOST: ${{ env.INVENTREE_DB_HOST }} + INVENTREE_DB_USER: ${{needs.job1.outputs.user }} + INVENTREE_DB_HOST: ${{needs.job1.outputs.host }} INVENTREE_DB_PORT: 5432 - INVENTREE_DEBUG: ${{ env.INVENTREE_DEBUG }} INVENTREE_CACHE_HOST: localhost services: postgres: image: postgres env: - POSTGRES_USER: ${{ env.INVENTREE_DB_USER }} - POSTGRES_PASSWORD: ${{ env.INVENTREE_DB_PASSWORD }} + POSTGRES_USER: ${{needs.job1.outputs.user }} + POSTGRES_PASSWORD: ${{needs.job1.outputs.password }} ports: - 5432:5432 @@ -272,11 +284,10 @@ jobs: env: # Database backend configuration INVENTREE_DB_ENGINE: django.db.backends.mysql - INVENTREE_DB_USER: ${{ env.INVENTREE_DB_USER }} - INVENTREE_DB_PASSWORD: ${{ env.INVENTREE_DB_PASSWORD }} - INVENTREE_DB_HOST: ${{ env.INVENTREE_DB_HOST }} + INVENTREE_DB_USER: ${{needs.job1.outputs.user }} + INVENTREE_DB_PASSWORD: ${{needs.job1.outputs.password }} + INVENTREE_DB_HOST: ${{needs.job1.outputs.host }} INVENTREE_DB_PORT: 3306 - INVENTREE_DEBUG: ${{ env.INVENTREE_DEBUG }} services: mysql: @@ -284,9 +295,9 @@ jobs: env: MYSQL_ALLOW_EMPTY_PASSWORD: yes MYSQL_DATABASE: ${{ env.INVENTREE_DB_NAME }} - MYSQL_USER: ${{ env.INVENTREE_DB_USER }} - MYSQL_PASSWORD: ${{ env.INVENTREE_DB_PASSWORD }} - MYSQL_ROOT_PASSWORD: ${{ env.INVENTREE_DB_PASSWORD }} + MYSQL_USER: ${{needs.job1.outputs.user }} + MYSQL_PASSWORD: ${{needs.job1.outputs.password }} + MYSQL_ROOT_PASSWORD: ${{needs.job1.outputs.password }} options: --health-cmd="mysqladmin ping" --health-interval=5s --health-timeout=2s --health-retries=3 ports: - 3306:3306 From 4ad7712b62a97107068744b342ddab2308ddcd9c Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 3 Dec 2021 00:10:09 +0100 Subject: [PATCH 080/129] change db user name --- .github/workflows/pr_checks.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/pr_checks.yaml b/.github/workflows/pr_checks.yaml index f81f30df41..e00603e15a 100644 --- a/.github/workflows/pr_checks.yaml +++ b/.github/workflows/pr_checks.yaml @@ -26,7 +26,7 @@ env: INVENTREE_STATIC_ROOT: ./static # for full databases - INVENTREE_DB_USER: inventree + INVENTREE_DB_USER: root INVENTREE_DB_PASSWORD: password INVENTREE_DB_HOST: '127.0.0.1' INVENTREE_DEBUG: info From e41da09b31f95efefce55cefa5948024be3a8669 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 3 Dec 2021 00:12:37 +0100 Subject: [PATCH 081/129] set ports --- .github/workflows/pr_checks.yaml | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/.github/workflows/pr_checks.yaml b/.github/workflows/pr_checks.yaml index e00603e15a..93ad199a94 100644 --- a/.github/workflows/pr_checks.yaml +++ b/.github/workflows/pr_checks.yaml @@ -30,6 +30,8 @@ env: INVENTREE_DB_PASSWORD: password INVENTREE_DB_HOST: '127.0.0.1' INVENTREE_DEBUG: info + DB_PORT_mysql: 3306 + DB_PORT_postgres: 5432 jobs: @@ -41,6 +43,8 @@ jobs: user: ${{ steps.step1.outputs.user }} password: ${{ steps.step1.outputs.password }} host: ${{ steps.step1.outputs.host }} + port_mysql: ${{ steps.step1.outputs.host }} + port_postgres: ${{ steps.step1.outputs.host }} steps: - id: step1 @@ -48,6 +52,8 @@ jobs: echo "::set-output name=user::${{ env.INVENTREE_DB_USER }}" echo "::set-output name=password::${{ env.INVENTREE_DB_PASSWORD }}" echo "::set-output name=host::${{ env.INVENTREE_DB_HOST }}" + echo "::set-output name=port_mysql::${{ env.DB_PORT_mysql }}" + echo "::set-output name=port_postgres::${{ env.DB_PORT_postgres }}" check_version: name: version number @@ -234,7 +240,7 @@ jobs: INVENTREE_DB_ENGINE: django.db.backends.postgresql INVENTREE_DB_USER: ${{needs.job1.outputs.user }} INVENTREE_DB_HOST: ${{needs.job1.outputs.host }} - INVENTREE_DB_PORT: 5432 + INVENTREE_DB_PORT: ${{needs.job1.outputs.port_postgres }} INVENTREE_CACHE_HOST: localhost services: @@ -244,7 +250,7 @@ jobs: POSTGRES_USER: ${{needs.job1.outputs.user }} POSTGRES_PASSWORD: ${{needs.job1.outputs.password }} ports: - - 5432:5432 + - ${{needs.job1.outputs.port }}:${{needs.job1.outputs.port_postgres }} redis: image: redis @@ -287,7 +293,7 @@ jobs: INVENTREE_DB_USER: ${{needs.job1.outputs.user }} INVENTREE_DB_PASSWORD: ${{needs.job1.outputs.password }} INVENTREE_DB_HOST: ${{needs.job1.outputs.host }} - INVENTREE_DB_PORT: 3306 + INVENTREE_DB_PORT: ${{needs.job1.outputs.port_mysql }} services: mysql: @@ -300,7 +306,7 @@ jobs: MYSQL_ROOT_PASSWORD: ${{needs.job1.outputs.password }} options: --health-cmd="mysqladmin ping" --health-interval=5s --health-timeout=2s --health-retries=3 ports: - - 3306:3306 + - ${{needs.job1.outputs.port_mysql }}:${{needs.job1.outputs.port_mysql }} steps: - name: Checkout Code From 1c388df3d23ab8b21fabd23c72fffc07fd32b077 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 3 Dec 2021 00:17:43 +0100 Subject: [PATCH 082/129] set params paralell --- .github/workflows/pr_checks.yaml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/pr_checks.yaml b/.github/workflows/pr_checks.yaml index 93ad199a94..c4fc14a7f4 100644 --- a/.github/workflows/pr_checks.yaml +++ b/.github/workflows/pr_checks.yaml @@ -57,7 +57,6 @@ jobs: check_version: name: version number - needs: init runs-on: ubuntu-latest steps: @@ -69,7 +68,7 @@ jobs: pep_style: name: PEP style (python) - needs: check_version + needs: ['init', 'check_version'] runs-on: ubuntu-latest steps: From 80b575bd3a789de13a3e08e5a986fc863a534379 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 3 Dec 2021 00:24:27 +0100 Subject: [PATCH 083/129] fix envs? --- .github/workflows/pr_checks.yaml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/pr_checks.yaml b/.github/workflows/pr_checks.yaml index c4fc14a7f4..631670ef47 100644 --- a/.github/workflows/pr_checks.yaml +++ b/.github/workflows/pr_checks.yaml @@ -238,6 +238,7 @@ jobs: env: INVENTREE_DB_ENGINE: django.db.backends.postgresql INVENTREE_DB_USER: ${{needs.job1.outputs.user }} + INVENTREE_DB_PASSWORD: ${{needs.job1.outputs.password }} INVENTREE_DB_HOST: ${{needs.job1.outputs.host }} INVENTREE_DB_PORT: ${{needs.job1.outputs.port_postgres }} INVENTREE_CACHE_HOST: localhost @@ -249,7 +250,7 @@ jobs: POSTGRES_USER: ${{needs.job1.outputs.user }} POSTGRES_PASSWORD: ${{needs.job1.outputs.password }} ports: - - ${{needs.job1.outputs.port }}:${{needs.job1.outputs.port_postgres }} + - ${{needs.job1.outputs.port_postgres }}:${{needs.job1.outputs.port_postgres }} redis: image: redis From c7b5ec28ab36c96dea750fbe8ba95da3835cc6f9 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 3 Dec 2021 00:28:53 +0100 Subject: [PATCH 084/129] fix coveralls --- .github/workflows/pr_checks.yaml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.github/workflows/pr_checks.yaml b/.github/workflows/pr_checks.yaml index 631670ef47..686312e03f 100644 --- a/.github/workflows/pr_checks.yaml +++ b/.github/workflows/pr_checks.yaml @@ -224,10 +224,9 @@ jobs: run: invoke translate - name: Check Migration Files run: python3 ci/check_migration_files.py - - name: Coveralls Finished - uses: coverallsapp/github-action@master + - name: Upload Coverage Report + run: coveralls with: - github-token: ${{ env.GITHUB_TOKEN }} git-commit: ${{ env.GITHUB_SHA }} postgres: From ea6a4979ae735147c051dd1fc1d96eeb41070954 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 3 Dec 2021 00:34:35 +0100 Subject: [PATCH 085/129] reseet back tu usage without envs --- .github/workflows/pr_checks.yaml | 72 ++++++++++---------------------- 1 file changed, 22 insertions(+), 50 deletions(-) diff --git a/.github/workflows/pr_checks.yaml b/.github/workflows/pr_checks.yaml index 686312e03f..14f2d3d279 100644 --- a/.github/workflows/pr_checks.yaml +++ b/.github/workflows/pr_checks.yaml @@ -1,6 +1,6 @@ -# Checks for each PR / push +# Checks for each PR -name: QC checks +name: PR checks on: push: @@ -14,47 +14,18 @@ on: env: python_version: 3.7 node_version: 16 + server_start_sleep: 60 GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - # general database settings INVENTREE_DB_ENGINE: sqlite3 INVENTREE_DB_NAME: inventree - INVENTREE_DB_NAME_main: inventree INVENTREE_MEDIA_ROOT: ./media INVENTREE_STATIC_ROOT: ./static - # for full databases - INVENTREE_DB_USER: root - INVENTREE_DB_PASSWORD: password - INVENTREE_DB_HOST: '127.0.0.1' - INVENTREE_DEBUG: info - DB_PORT_mysql: 3306 - DB_PORT_postgres: 5432 - jobs: - init: - name: set parameters - runs-on: ubuntu-latest - outputs: - user: ${{ steps.step1.outputs.user }} - password: ${{ steps.step1.outputs.password }} - host: ${{ steps.step1.outputs.host }} - port_mysql: ${{ steps.step1.outputs.host }} - port_postgres: ${{ steps.step1.outputs.host }} - - steps: - - id: step1 - run: | - echo "::set-output name=user::${{ env.INVENTREE_DB_USER }}" - echo "::set-output name=password::${{ env.INVENTREE_DB_PASSWORD }}" - echo "::set-output name=host::${{ env.INVENTREE_DB_HOST }}" - echo "::set-output name=port_mysql::${{ env.DB_PORT_mysql }}" - echo "::set-output name=port_postgres::${{ env.DB_PORT_postgres }}" - check_version: name: version number runs-on: ubuntu-latest @@ -68,7 +39,7 @@ jobs: pep_style: name: PEP style (python) - needs: ['init', 'check_version'] + needs: check_version runs-on: ubuntu-latest steps: @@ -191,7 +162,6 @@ jobs: runs-on: ubuntu-latest env: - INVENTREE_DB_NAME: ./inventree.sqlite INVENTREE_DB_ENGINE: sqlite3 steps: @@ -216,7 +186,7 @@ jobs: invoke migrate invoke import-fixtures invoke export-records -f data.json - rm ${{ env.INVENTREE_DB_NAME_main }}.sqlite + rm ${{ env.INVENTREE_DB_NAME }}.sqlite invoke migrate invoke import-records -f data.json invoke import-records -f data.json @@ -236,20 +206,21 @@ jobs: env: INVENTREE_DB_ENGINE: django.db.backends.postgresql - INVENTREE_DB_USER: ${{needs.job1.outputs.user }} - INVENTREE_DB_PASSWORD: ${{needs.job1.outputs.password }} - INVENTREE_DB_HOST: ${{needs.job1.outputs.host }} - INVENTREE_DB_PORT: ${{needs.job1.outputs.port_postgres }} + INVENTREE_DB_USER: inventree + INVENTREE_DB_PASSWORD: password + INVENTREE_DB_HOST: '127.0.0.1' + INVENTREE_DB_PORT: 5432 + INVENTREE_DEBUG: info INVENTREE_CACHE_HOST: localhost services: postgres: image: postgres env: - POSTGRES_USER: ${{needs.job1.outputs.user }} - POSTGRES_PASSWORD: ${{needs.job1.outputs.password }} + POSTGRES_USER: inventree + POSTGRES_PASSWORD: password ports: - - ${{needs.job1.outputs.port_postgres }}:${{needs.job1.outputs.port_postgres }} + - 5432:5432 redis: image: redis @@ -289,10 +260,11 @@ jobs: env: # Database backend configuration INVENTREE_DB_ENGINE: django.db.backends.mysql - INVENTREE_DB_USER: ${{needs.job1.outputs.user }} - INVENTREE_DB_PASSWORD: ${{needs.job1.outputs.password }} - INVENTREE_DB_HOST: ${{needs.job1.outputs.host }} - INVENTREE_DB_PORT: ${{needs.job1.outputs.port_mysql }} + INVENTREE_DB_USER: root + INVENTREE_DB_PASSWORD: password + INVENTREE_DB_HOST: '127.0.0.1' + INVENTREE_DB_PORT: 3306 + INVENTREE_DEBUG: info services: mysql: @@ -300,12 +272,12 @@ jobs: env: MYSQL_ALLOW_EMPTY_PASSWORD: yes MYSQL_DATABASE: ${{ env.INVENTREE_DB_NAME }} - MYSQL_USER: ${{needs.job1.outputs.user }} - MYSQL_PASSWORD: ${{needs.job1.outputs.password }} - MYSQL_ROOT_PASSWORD: ${{needs.job1.outputs.password }} + MYSQL_USER: inventree + MYSQL_PASSWORD: password + MYSQL_ROOT_PASSWORD: password options: --health-cmd="mysqladmin ping" --health-interval=5s --health-timeout=2s --health-retries=3 ports: - - ${{needs.job1.outputs.port_mysql }}:${{needs.job1.outputs.port_mysql }} + - 3306:3306 steps: - name: Checkout Code From 066f776c40543f15129874672d17e4b07b856e27 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 3 Dec 2021 00:39:09 +0100 Subject: [PATCH 086/129] remove with from coveralls --- .github/workflows/pr_checks.yaml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/workflows/pr_checks.yaml b/.github/workflows/pr_checks.yaml index 14f2d3d279..4788c60ee4 100644 --- a/.github/workflows/pr_checks.yaml +++ b/.github/workflows/pr_checks.yaml @@ -196,8 +196,6 @@ jobs: run: python3 ci/check_migration_files.py - name: Upload Coverage Report run: coveralls - with: - git-commit: ${{ env.GITHUB_SHA }} postgres: name: Postgres From d50007975c2ed1e53af9606f9b86ccb87d0a402b Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 3 Dec 2021 00:45:52 +0100 Subject: [PATCH 087/129] replace db_users --- .github/workflows/pr_checks.yaml | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/.github/workflows/pr_checks.yaml b/.github/workflows/pr_checks.yaml index 4788c60ee4..7cf01d7fb3 100644 --- a/.github/workflows/pr_checks.yaml +++ b/.github/workflows/pr_checks.yaml @@ -23,6 +23,8 @@ env: INVENTREE_MEDIA_ROOT: ./media INVENTREE_STATIC_ROOT: ./static + INVENTREE_DB_USER: inventree + jobs: @@ -204,7 +206,7 @@ jobs: env: INVENTREE_DB_ENGINE: django.db.backends.postgresql - INVENTREE_DB_USER: inventree + INVENTREE_DB_USER: ${{ env.INVENTREE_DB_USER }} INVENTREE_DB_PASSWORD: password INVENTREE_DB_HOST: '127.0.0.1' INVENTREE_DB_PORT: 5432 @@ -215,7 +217,7 @@ jobs: postgres: image: postgres env: - POSTGRES_USER: inventree + POSTGRES_USER: ${{ env.INVENTREE_DB_USER }} POSTGRES_PASSWORD: password ports: - 5432:5432 @@ -270,7 +272,7 @@ jobs: env: MYSQL_ALLOW_EMPTY_PASSWORD: yes MYSQL_DATABASE: ${{ env.INVENTREE_DB_NAME }} - MYSQL_USER: inventree + MYSQL_USER: ${{ env.INVENTREE_DB_USER }} MYSQL_PASSWORD: password MYSQL_ROOT_PASSWORD: password options: --health-cmd="mysqladmin ping" --health-interval=5s --health-timeout=2s --health-retries=3 From 5891245c4582f1be4de042c93c7970c7cbbefc42 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 3 Dec 2021 00:47:10 +0100 Subject: [PATCH 088/129] replace pwd --- .github/workflows/pr_checks.yaml | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/.github/workflows/pr_checks.yaml b/.github/workflows/pr_checks.yaml index 7cf01d7fb3..f02ef49f30 100644 --- a/.github/workflows/pr_checks.yaml +++ b/.github/workflows/pr_checks.yaml @@ -24,6 +24,7 @@ env: INVENTREE_STATIC_ROOT: ./static INVENTREE_DB_USER: inventree + INVENTREE_DB_PASSWORD: password jobs: @@ -207,7 +208,7 @@ jobs: env: INVENTREE_DB_ENGINE: django.db.backends.postgresql INVENTREE_DB_USER: ${{ env.INVENTREE_DB_USER }} - INVENTREE_DB_PASSWORD: password + INVENTREE_DB_PASSWORD: ${{ env.INVENTREE_DB_PASSWORD }} INVENTREE_DB_HOST: '127.0.0.1' INVENTREE_DB_PORT: 5432 INVENTREE_DEBUG: info @@ -218,7 +219,7 @@ jobs: image: postgres env: POSTGRES_USER: ${{ env.INVENTREE_DB_USER }} - POSTGRES_PASSWORD: password + POSTGRES_PASSWORD: ${{ env.INVENTREE_DB_PASSWORD }} ports: - 5432:5432 @@ -261,7 +262,7 @@ jobs: # Database backend configuration INVENTREE_DB_ENGINE: django.db.backends.mysql INVENTREE_DB_USER: root - INVENTREE_DB_PASSWORD: password + INVENTREE_DB_PASSWORD: ${{ env.INVENTREE_DB_PASSWORD }} INVENTREE_DB_HOST: '127.0.0.1' INVENTREE_DB_PORT: 3306 INVENTREE_DEBUG: info @@ -273,8 +274,8 @@ jobs: MYSQL_ALLOW_EMPTY_PASSWORD: yes MYSQL_DATABASE: ${{ env.INVENTREE_DB_NAME }} MYSQL_USER: ${{ env.INVENTREE_DB_USER }} - MYSQL_PASSWORD: password - MYSQL_ROOT_PASSWORD: password + MYSQL_PASSWORD: ${{ env.INVENTREE_DB_PASSWORD }} + MYSQL_ROOT_PASSWORD: ${{ env.INVENTREE_DB_PASSWORD }} options: --health-cmd="mysqladmin ping" --health-interval=5s --health-timeout=2s --health-retries=3 ports: - 3306:3306 From 045932dfe126f571f8eb92aa249e628cff018342 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 3 Dec 2021 00:53:03 +0100 Subject: [PATCH 089/129] try using outputs --- .github/workflows/pr_checks.yaml | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/.github/workflows/pr_checks.yaml b/.github/workflows/pr_checks.yaml index f02ef49f30..439f5d57ab 100644 --- a/.github/workflows/pr_checks.yaml +++ b/.github/workflows/pr_checks.yaml @@ -29,6 +29,19 @@ env: jobs: + init: + name: set parameters + runs-on: ubuntu-latest + outputs: + user: ${{ steps.step1.outputs.user }} + password: ${{ steps.step1.outputs.password }} + + steps: + - id: step1 + run: | + echo "::set-output name=user::${{ env.INVENTREE_DB_USER }}" + echo "::set-output name=password::${{ env.INVENTREE_DB_PASSWORD }}" + check_version: name: version number runs-on: ubuntu-latest @@ -42,7 +55,7 @@ jobs: pep_style: name: PEP style (python) - needs: check_version + needs: ['init', 'check_version'] runs-on: ubuntu-latest steps: @@ -207,8 +220,8 @@ jobs: env: INVENTREE_DB_ENGINE: django.db.backends.postgresql - INVENTREE_DB_USER: ${{ env.INVENTREE_DB_USER }} - INVENTREE_DB_PASSWORD: ${{ env.INVENTREE_DB_PASSWORD }} + INVENTREE_DB_USER: ${{needs.job1.outputs.user }} + INVENTREE_DB_PASSWORD: ${{needs.job1.outputs.password }} INVENTREE_DB_HOST: '127.0.0.1' INVENTREE_DB_PORT: 5432 INVENTREE_DEBUG: info @@ -262,7 +275,7 @@ jobs: # Database backend configuration INVENTREE_DB_ENGINE: django.db.backends.mysql INVENTREE_DB_USER: root - INVENTREE_DB_PASSWORD: ${{ env.INVENTREE_DB_PASSWORD }} + INVENTREE_DB_PASSWORD: ${{needs.job1.outputs.password }} INVENTREE_DB_HOST: '127.0.0.1' INVENTREE_DB_PORT: 3306 INVENTREE_DEBUG: info From e4a0b09796da86f18e13c1a25450612b15b81648 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 3 Dec 2021 01:03:32 +0100 Subject: [PATCH 090/129] simple seems to be better --- .github/workflows/pr_checks.yaml | 34 +++++++++----------------------- 1 file changed, 9 insertions(+), 25 deletions(-) diff --git a/.github/workflows/pr_checks.yaml b/.github/workflows/pr_checks.yaml index 439f5d57ab..4788c60ee4 100644 --- a/.github/workflows/pr_checks.yaml +++ b/.github/workflows/pr_checks.yaml @@ -23,25 +23,9 @@ env: INVENTREE_MEDIA_ROOT: ./media INVENTREE_STATIC_ROOT: ./static - INVENTREE_DB_USER: inventree - INVENTREE_DB_PASSWORD: password - jobs: - init: - name: set parameters - runs-on: ubuntu-latest - outputs: - user: ${{ steps.step1.outputs.user }} - password: ${{ steps.step1.outputs.password }} - - steps: - - id: step1 - run: | - echo "::set-output name=user::${{ env.INVENTREE_DB_USER }}" - echo "::set-output name=password::${{ env.INVENTREE_DB_PASSWORD }}" - check_version: name: version number runs-on: ubuntu-latest @@ -55,7 +39,7 @@ jobs: pep_style: name: PEP style (python) - needs: ['init', 'check_version'] + needs: check_version runs-on: ubuntu-latest steps: @@ -220,8 +204,8 @@ jobs: env: INVENTREE_DB_ENGINE: django.db.backends.postgresql - INVENTREE_DB_USER: ${{needs.job1.outputs.user }} - INVENTREE_DB_PASSWORD: ${{needs.job1.outputs.password }} + INVENTREE_DB_USER: inventree + INVENTREE_DB_PASSWORD: password INVENTREE_DB_HOST: '127.0.0.1' INVENTREE_DB_PORT: 5432 INVENTREE_DEBUG: info @@ -231,8 +215,8 @@ jobs: postgres: image: postgres env: - POSTGRES_USER: ${{ env.INVENTREE_DB_USER }} - POSTGRES_PASSWORD: ${{ env.INVENTREE_DB_PASSWORD }} + POSTGRES_USER: inventree + POSTGRES_PASSWORD: password ports: - 5432:5432 @@ -275,7 +259,7 @@ jobs: # Database backend configuration INVENTREE_DB_ENGINE: django.db.backends.mysql INVENTREE_DB_USER: root - INVENTREE_DB_PASSWORD: ${{needs.job1.outputs.password }} + INVENTREE_DB_PASSWORD: password INVENTREE_DB_HOST: '127.0.0.1' INVENTREE_DB_PORT: 3306 INVENTREE_DEBUG: info @@ -286,9 +270,9 @@ jobs: env: MYSQL_ALLOW_EMPTY_PASSWORD: yes MYSQL_DATABASE: ${{ env.INVENTREE_DB_NAME }} - MYSQL_USER: ${{ env.INVENTREE_DB_USER }} - MYSQL_PASSWORD: ${{ env.INVENTREE_DB_PASSWORD }} - MYSQL_ROOT_PASSWORD: ${{ env.INVENTREE_DB_PASSWORD }} + MYSQL_USER: inventree + MYSQL_PASSWORD: password + MYSQL_ROOT_PASSWORD: password options: --health-cmd="mysqladmin ping" --health-interval=5s --health-timeout=2s --health-retries=3 ports: - 3306:3306 From b6c6ac75e573eea3a86f510354361628313e950f Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 3 Dec 2021 01:05:14 +0100 Subject: [PATCH 091/129] just set it statically --- .github/workflows/pr_checks.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/pr_checks.yaml b/.github/workflows/pr_checks.yaml index 4788c60ee4..68c66049de 100644 --- a/.github/workflows/pr_checks.yaml +++ b/.github/workflows/pr_checks.yaml @@ -162,6 +162,7 @@ jobs: runs-on: ubuntu-latest env: + INVENTREE_DB_NAME: ./inventree.sqlite INVENTREE_DB_ENGINE: sqlite3 steps: From a05777029da7f33826ded52278673591cc85a525 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 3 Dec 2021 01:06:48 +0100 Subject: [PATCH 092/129] cache npm --- .github/workflows/pr_checks.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/pr_checks.yaml b/.github/workflows/pr_checks.yaml index 68c66049de..b422ec9ee5 100644 --- a/.github/workflows/pr_checks.yaml +++ b/.github/workflows/pr_checks.yaml @@ -69,6 +69,7 @@ jobs: uses: actions/setup-node@v2 with: node-version: ${{ env.node_version }} + cache: 'npm' - run: npm install - name: Setup Python uses: actions/setup-python@v2 @@ -102,6 +103,7 @@ jobs: uses: actions/setup-node@v2 with: node-version: ${{ env.node_version }} + cache: 'npm' - run: npm install - name: Setup Python uses: actions/setup-python@v2 From f51a3557eed85274858331cd5ab292075e38bd9e Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 3 Dec 2021 01:08:49 +0100 Subject: [PATCH 093/129] cache python --- .github/workflows/pr_checks.yaml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/workflows/pr_checks.yaml b/.github/workflows/pr_checks.yaml index b422ec9ee5..00a92c8012 100644 --- a/.github/workflows/pr_checks.yaml +++ b/.github/workflows/pr_checks.yaml @@ -49,6 +49,7 @@ jobs: uses: actions/setup-python@v2 with: python-version: ${{ env.python_version }} + cache: 'pip' - name: Install deps run: | pip install flake8==3.8.3 @@ -75,6 +76,7 @@ jobs: uses: actions/setup-python@v2 with: python-version: ${{ env.python_version }} + cache: 'pip' - name: Install Dependencies run: | sudo apt-get update @@ -109,6 +111,7 @@ jobs: uses: actions/setup-python@v2 with: python-version: ${{ env.python_version }} + cache: 'pip' - name: Install Dependencies run: | sudo apt-get update @@ -174,6 +177,7 @@ jobs: uses: actions/setup-python@v2 with: python-version: ${{ env.python_version }} + cache: 'pip' - name: Install Dependencies run: | sudo apt-get update @@ -235,6 +239,7 @@ jobs: uses: actions/setup-python@v2 with: python-version: ${{ env.python_version }} + cache: 'pip' - name: Install Dependencies run: | sudo apt-get install libpq-dev @@ -287,6 +292,7 @@ jobs: uses: actions/setup-python@v2 with: python-version: ${{ env.python_version }} + cache: 'pip' - name: Install Dependencies run: | sudo apt-get install mysql-server libmysqlclient-dev From 83708d645c372933e46857522d5eb296b7d23efe Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 3 Dec 2021 01:11:04 +0100 Subject: [PATCH 094/129] add packagelock --- .gitignore | 1 - package-lock.json | 3788 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 3788 insertions(+), 1 deletion(-) create mode 100644 package-lock.json diff --git a/.gitignore b/.gitignore index 74669a5756..488f8889b5 100644 --- a/.gitignore +++ b/.gitignore @@ -77,5 +77,4 @@ dev/ locale_stats.json # node.js -package-lock.json node_modules/ \ No newline at end of file diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000000..386cf82698 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,3788 @@ +{ + "name": "InvenTree", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "dependencies": { + "eslint": "^8.3.0", + "eslint-config-google": "^0.14.0", + "markuplint": "^1.11.4" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.0.tgz", + "integrity": "sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==", + "dependencies": { + "@babel/highlight": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.15.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", + "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.0.tgz", + "integrity": "sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g==", + "dependencies": { + "@babel/helper-validator-identifier": "^7.15.7", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.0.4.tgz", + "integrity": "sha512-h8Vx6MdxwWI2WM8/zREHMoqdgLNXEL4QX3MWSVMdyNJGvXVOs+6lp+m2hc3FnuMHDc4poxFNI20vCk0OmI4G0Q==", + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.0.0", + "globals": "^13.9.0", + "ignore": "^4.0.6", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.0.4", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.6.0.tgz", + "integrity": "sha512-JQlEKbcgEUjBFhLIF4iqM7u/9lwgHRBcpHrmUNCALK0Q3amXN6lxdoXLnF0sm11E9VqTmBALR87IlUg1bZ8A9A==", + "dependencies": { + "@humanwhocodes/object-schema": "^1.2.0", + "debug": "^4.1.1", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==" + }, + "node_modules/@markuplint/file-resolver": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@markuplint/file-resolver/-/file-resolver-1.5.0.tgz", + "integrity": "sha512-UK3Nyi9AGOBvcG0Ea+0Ar3uzoAZg0p2+w+4Erw9zR/1DHWSmUOwRmDZxt5kMbEcPkv16ItJcSrfbLeX5CsvLdA==", + "dependencies": { + "@markuplint/ml-config": "^1.3.0", + "cosmiconfig": "^7.0.0", + "glob": "^7.1.7", + "minimatch": "^3.0.4", + "tslib": "^2.3.0" + } + }, + "node_modules/@markuplint/html-parser": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/@markuplint/html-parser/-/html-parser-1.7.3.tgz", + "integrity": "sha512-WrpePphZLA6G4R3kNlIiiBBxeDVvBa0p2GI+WGMxMQZQYr9/1KAQFNNhwcBhySVGIsd5hW9fm8SysjCgF+K7Cw==", + "dependencies": { + "@markuplint/ml-ast": "^1.6.0", + "@markuplint/parser-utils": "^1.6.3", + "parse5": "^6.0.1", + "tslib": "^2.3.0" + } + }, + "node_modules/@markuplint/html-spec": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/@markuplint/html-spec/-/html-spec-1.8.2.tgz", + "integrity": "sha512-TYUg6NEIq+tDqmLfOBZIwRNBGW+0BxnqP/Wqxc0+hjCTLrAH/PEDOR1JUwkJNZG/65VGVDEteZ8A8UPAQ1/v4g==", + "dependencies": { + "@markuplint/ml-spec": "^1.7.0" + } + }, + "node_modules/@markuplint/i18n": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@markuplint/i18n/-/i18n-1.2.0.tgz", + "integrity": "sha512-bQ8AMjDGV6PQ9M0jTTy+J+Lbz+a1sJ5y/KSqUmhTvmwdcKAs5qn+eZwP1jzfx+ooi19+2q0HfSNsM3eW+9k3Vg==" + }, + "node_modules/@markuplint/ml-ast": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@markuplint/ml-ast/-/ml-ast-1.6.0.tgz", + "integrity": "sha512-xJgfnIQZDH+BrNP4Ppx88W4G8aLyOodXSIWcYMb15Lm/jEQks3YLbsGfYohBj+TcoTtQ62ZGhMcrXVPwZLbahQ==", + "dependencies": { + "tslib": "^2.3.0" + } + }, + "node_modules/@markuplint/ml-config": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@markuplint/ml-config/-/ml-config-1.3.0.tgz", + "integrity": "sha512-2GqA2hwums+DxE5GxkvFAkeCgJ4yPkRXkrdCNbFj9FiFmzVO3xikoOGmxcR0ol9oaXFfVnxoc9XFCfknPo/oMg==" + }, + "node_modules/@markuplint/ml-core": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@markuplint/ml-core/-/ml-core-1.9.0.tgz", + "integrity": "sha512-KpT6rc4IWiPSUBrrB01dXEYK4uMmsP53Lc6Ooy7R7IDSjp0UbIZoouEVPSgMs0yfy/TurqQwT8VL8GEpkEABtA==", + "dependencies": { + "@markuplint/i18n": "^1.2.0", + "@markuplint/ml-ast": "^1.6.0", + "@markuplint/ml-config": "^1.3.0", + "@markuplint/ml-spec": "^1.7.0", + "css-selector-parser": "^1.4.1", + "tslib": "^2.3.0" + } + }, + "node_modules/@markuplint/ml-spec": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@markuplint/ml-spec/-/ml-spec-1.7.0.tgz", + "integrity": "sha512-UZFz+ktT1cmkwYZ4JlNGO+PldTmmP3qQjfR6D94RSLC7A5kNhx+qDx4lEA709UOd23gnyZNCaYCw6dGi+oAtXg==", + "dependencies": { + "tslib": "^2.3.0" + } + }, + "node_modules/@markuplint/parser-utils": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/@markuplint/parser-utils/-/parser-utils-1.6.3.tgz", + "integrity": "sha512-thtarMmaMB1cKZqOJ9Ts6tO9C/h6qX5cpvSPaFTBngDtdOfMpNfll/Vcav7W9KouzkqB0q8hzq4ksEazT/cOKw==", + "dependencies": { + "@markuplint/ml-ast": "^1.6.0", + "tslib": "^2.3.0", + "uuid": "^8.3.2" + } + }, + "node_modules/@markuplint/rules": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/@markuplint/rules/-/rules-1.10.4.tgz", + "integrity": "sha512-AB+q4/fUNH2EJfQXHRYKQAQQnqHnODByPrEK4TzKLpI72V54HjIi8+tDMmqN4uiWBV6nliYI+uysKcRYDuPMog==", + "dependencies": { + "@markuplint/html-spec": "^1.8.2", + "@markuplint/ml-core": "^1.9.0", + "@markuplint/ml-spec": "^1.7.0", + "tslib": "^2.3.0" + } + }, + "node_modules/@types/minimist": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", + "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==" + }, + "node_modules/@types/normalize-package-data": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", + "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==" + }, + "node_modules/@types/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==" + }, + "node_modules/acorn": { + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.6.0.tgz", + "integrity": "sha512-U1riIR+lBSNi3IbxtaHOIKdH8sLFv3NYfNv8sg7ZsNhcfl4HF2++BfqqrNAxoCLQW1iiylOj76ecnaUxz+z9yw==", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, + "node_modules/arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase-keys": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", + "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", + "dependencies": { + "camelcase": "^5.3.1", + "map-obj": "^4.0.0", + "quick-lru": "^4.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cli-color": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/cli-color/-/cli-color-2.0.1.tgz", + "integrity": "sha512-eBbxZF6fqPUNnf7CLAFOersUnyYzv83tHFLSlts+OAHsNendaqv2tHCq+/MO+b3Y+9JeoUlIvobyxG/Z8GNeOg==", + "dependencies": { + "d": "^1.0.1", + "es5-ext": "^0.10.53", + "es6-iterator": "^2.0.3", + "memoizee": "^0.4.15", + "timers-ext": "^0.1.7" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "node_modules/cosmiconfig": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", + "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/cross-spawn/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/css-selector-parser": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/css-selector-parser/-/css-selector-parser-1.4.1.tgz", + "integrity": "sha512-HYPSb7y/Z7BNDCOrakL4raGO2zltZkbeXyAd6Tg9obzix6QhzxCotdBl6VT0Dv4vZfJGVz3WL/xaEI9Ly3ul0g==" + }, + "node_modules/d": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", + "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", + "dependencies": { + "es5-ext": "^0.10.50", + "type": "^1.0.1" + } + }, + "node_modules/debug": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", + "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decamelize-keys": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz", + "integrity": "sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=", + "dependencies": { + "decamelize": "^1.1.0", + "map-obj": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decamelize-keys/node_modules/map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" + }, + "node_modules/detect-installed": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/detect-installed/-/detect-installed-2.0.4.tgz", + "integrity": "sha1-oIUEZefD68/5eda2U1rTRLgN18U=", + "dependencies": { + "get-installed-path": "^2.0.3" + }, + "engines": { + "node": ">=4", + "npm": ">=2" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "dependencies": { + "ansi-colors": "^4.1.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es5-ext": { + "version": "0.10.53", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz", + "integrity": "sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==", + "dependencies": { + "es6-iterator": "~2.0.3", + "es6-symbol": "~3.1.3", + "next-tick": "~1.0.0" + } + }, + "node_modules/es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", + "dependencies": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "node_modules/es6-symbol": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", + "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", + "dependencies": { + "d": "^1.0.1", + "ext": "^1.1.2" + } + }, + "node_modules/es6-weak-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", + "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", + "dependencies": { + "d": "1", + "es5-ext": "^0.10.46", + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.1" + } + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/eslint": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.3.0.tgz", + "integrity": "sha512-aIay56Ph6RxOTC7xyr59Kt3ewX185SaGnAr8eWukoPLeriCrvGjvAubxuvaXOfsxhtwV5g0uBOsyhAom4qJdww==", + "dependencies": { + "@eslint/eslintrc": "^1.0.4", + "@humanwhocodes/config-array": "^0.6.0", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "enquirer": "^2.3.5", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.1.0", + "eslint-utils": "^3.0.0", + "eslint-visitor-keys": "^3.1.0", + "espree": "^9.1.0", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^6.0.1", + "globals": "^13.6.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.0.4", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "progress": "^2.0.0", + "regexpp": "^3.2.0", + "semver": "^7.2.1", + "strip-ansi": "^6.0.1", + "strip-json-comments": "^3.1.0", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-config-google": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/eslint-config-google/-/eslint-config-google-0.14.0.tgz", + "integrity": "sha512-WsbX4WbjuMvTdeVL6+J3rK1RGhCTqjsFjX7UMSMgZiyxxaNLkoJENbrGExzERFeoTpGw3F3FypTiWAP9ZXzkEw==", + "engines": { + "node": ">=0.10.0" + }, + "peerDependencies": { + "eslint": ">=5.16.0" + } + }, + "node_modules/eslint-scope": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.0.tgz", + "integrity": "sha512-aWwkhnS0qAXqNOgKOK0dJ2nvzEbhEvpy8OlJ9kZ0FeZnA6zpjv1/Vei+puGFFX7zkPCkHHXb7IDX3A+7yPrRWg==", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dependencies": { + "eslint-visitor-keys": "^2.0.0" + }, + "engines": { + "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=5" + } + }, + "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.1.0.tgz", + "integrity": "sha512-yWJFpu4DtjsWKkt5GeNBBuZMlNcYVs6vRCLoCVEJrTjaSB6LC98gFipNK/erM2Heg/E8mIK+hXG/pJMLK+eRZA==", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/eslint/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/eslint/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/eslint/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/eslint/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/eslint/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/espree": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.1.0.tgz", + "integrity": "sha512-ZgYLvCS1wxOczBYGcQT9DDWgicXwJ4dbocr9uYN+/eresBAUuBu+O4WzB21ufQ/JqQT8gyp7hJ3z8SHii32mTQ==", + "dependencies": { + "acorn": "^8.6.0", + "acorn-jsx": "^5.3.1", + "eslint-visitor-keys": "^3.1.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/event-emitter": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", + "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", + "dependencies": { + "d": "1", + "es5-ext": "~0.10.14" + } + }, + "node_modules/execa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", + "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", + "dependencies": { + "cross-spawn": "^7.0.0", + "get-stream": "^5.0.0", + "human-signals": "^1.1.1", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.0", + "onetime": "^5.1.0", + "signal-exit": "^3.0.2", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/expand-tilde": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", + "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", + "dependencies": { + "homedir-polyfill": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ext": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.6.0.tgz", + "integrity": "sha512-sdBImtzkq2HpkdRLtlLWDa6w4DX22ijZLKx8BMPUuKe1c5lbN6xwQDQCxSfxBQnHZ13ls/FH0MQZx/q/gr6FQg==", + "dependencies": { + "type": "^2.5.0" + } + }, + "node_modules/ext/node_modules/type": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/type/-/type-2.5.0.tgz", + "integrity": "sha512-180WMDQaIMm3+7hGXWf12GtdniDEy7nYcyFMKJn/eZz/6tSLXrUN9V0wKSbMjej0I1WHWbpREDEKHtqPQa9NNw==" + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dependencies": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.4.tgz", + "integrity": "sha512-8/sOawo8tJ4QOBX8YlQBMxL8+RLZfxMQOif9o0KUKTNTjMYElWPE0r/m5VNFxTRd0NSw8qSy8dajrwX4RYI1Hw==" + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "node_modules/functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=" + }, + "node_modules/get-installed-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/get-installed-path/-/get-installed-path-2.1.1.tgz", + "integrity": "sha512-Qkn9eq6tW5/q9BDVdMpB8tOHljX9OSP0jRC5TRNVA4qRc839t4g8KQaR8t0Uv0EFVL0MlyG7m/ofjEgAROtYsA==", + "dependencies": { + "global-modules": "1.0.0" + } + }, + "node_modules/get-stdin": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-8.0.0.tgz", + "integrity": "sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/global-modules": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", + "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "dependencies": { + "global-prefix": "^1.0.1", + "is-windows": "^1.0.1", + "resolve-dir": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/global-prefix": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", + "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", + "dependencies": { + "expand-tilde": "^2.0.2", + "homedir-polyfill": "^1.0.1", + "ini": "^1.3.4", + "is-windows": "^1.0.1", + "which": "^1.2.14" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/globals": { + "version": "13.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.0.tgz", + "integrity": "sha512-uS8X6lSKN2JumVoXrbUz+uG4BYG+eiawqm3qFcT7ammfbUHeCBoJMlHcec/S3krSk73/AE/f0szYFmgAA3kYZg==", + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globals/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/hard-rejection": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", + "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "engines": { + "node": ">=4" + } + }, + "node_modules/has-yarn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz", + "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==", + "engines": { + "node": ">=8" + } + }, + "node_modules/homedir-polyfill": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", + "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", + "dependencies": { + "parse-passwd": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/hosted-git-info": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.0.2.tgz", + "integrity": "sha512-c9OGXbZ3guC/xOlCg1Ci/VgWlwsqDv1yMQL1CWqXDL0hDjXuNcq0zuR4xqPSuasI3kqFDhqSyTjREz5gzq0fXg==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/human-signals": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", + "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", + "engines": { + "node": ">=8.12.0" + } + }, + "node_modules/ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" + }, + "node_modules/invert-kv": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-3.0.1.tgz", + "integrity": "sha512-CYdFeFexxhv/Bcny+Q0BfOV+ltRlJcd4BBZBYFX/O0u4npJrgZtIcjokegtiSMAvlMTJ+Koq0GBCc//3bueQxw==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sindresorhus/invert-kv?sponsor=1" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" + }, + "node_modules/is-core-module": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.0.tgz", + "integrity": "sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==", + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-promise": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", + "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==" + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=" + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/lcid": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-3.1.1.tgz", + "integrity": "sha512-M6T051+5QCGLBQb8id3hdvIW8+zeFV2FyBGFS9IEK5H9Wt4MueD4bW1eWikpHgZp+5xR3l5c8pZUkQsIA0BFZg==", + "dependencies": { + "invert-kv": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" + }, + "node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/lru-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz", + "integrity": "sha1-Jzi9nw089PhEkMVzbEhpmsYyzaM=", + "dependencies": { + "es5-ext": "~0.10.2" + } + }, + "node_modules/map-age-cleaner": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", + "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", + "dependencies": { + "p-defer": "^1.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/map-obj": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", + "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/markuplint": { + "version": "1.11.4", + "resolved": "https://registry.npmjs.org/markuplint/-/markuplint-1.11.4.tgz", + "integrity": "sha512-9qdiDSvHEl0dl/QyZRZskpbmR0MUjQkgknIAVkodQUs5v3oc+O2w+3SE5v4BzP+EZsbRVL2ZaXN9hafVbUkjMg==", + "dependencies": { + "@markuplint/file-resolver": "^1.5.0", + "@markuplint/html-parser": "^1.7.3", + "@markuplint/html-spec": "^1.8.2", + "@markuplint/i18n": "^1.2.0", + "@markuplint/ml-ast": "^1.6.0", + "@markuplint/ml-config": "^1.3.0", + "@markuplint/ml-core": "^1.9.0", + "@markuplint/ml-spec": "^1.7.0", + "@markuplint/rules": "^1.10.4", + "cli-color": "^2.0.0", + "detect-installed": "^2.0.4", + "eastasianwidth": "^0.2.0", + "enquirer": "^2.3.6", + "get-stdin": "8", + "has-yarn": "^2.1.0", + "meow": "9", + "os-locale": "^5.0.0", + "strip-ansi": "6", + "tslib": "^2.3.0" + }, + "bin": { + "markuplint": "bin/markuplint" + } + }, + "node_modules/mem": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/mem/-/mem-5.1.1.tgz", + "integrity": "sha512-qvwipnozMohxLXG1pOqoLiZKNkC4r4qqRucSoDwXowsNGDSULiqFTRUF05vcZWnwJSG22qTsynQhxbaMtnX9gw==", + "dependencies": { + "map-age-cleaner": "^0.1.3", + "mimic-fn": "^2.1.0", + "p-is-promise": "^2.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/memoizee": { + "version": "0.4.15", + "resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.15.tgz", + "integrity": "sha512-UBWmJpLZd5STPm7PMUlOw/TSy972M+z8gcyQ5veOnSDRREz/0bmpyTfKt3/51DhEBqCZQn1udM/5flcSPYhkdQ==", + "dependencies": { + "d": "^1.0.1", + "es5-ext": "^0.10.53", + "es6-weak-map": "^2.0.3", + "event-emitter": "^0.3.5", + "is-promise": "^2.2.2", + "lru-queue": "^0.1.0", + "next-tick": "^1.1.0", + "timers-ext": "^0.1.7" + } + }, + "node_modules/memoizee/node_modules/next-tick": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", + "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==" + }, + "node_modules/meow": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-9.0.0.tgz", + "integrity": "sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==", + "dependencies": { + "@types/minimist": "^1.2.0", + "camelcase-keys": "^6.2.2", + "decamelize": "^1.2.0", + "decamelize-keys": "^1.1.0", + "hard-rejection": "^2.1.0", + "minimist-options": "4.1.0", + "normalize-package-data": "^3.0.0", + "read-pkg-up": "^7.0.1", + "redent": "^3.0.0", + "trim-newlines": "^3.0.0", + "type-fest": "^0.18.0", + "yargs-parser": "^20.2.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "engines": { + "node": ">=4" + } + }, + "node_modules/minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist-options": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", + "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", + "dependencies": { + "arrify": "^1.0.1", + "is-plain-obj": "^1.1.0", + "kind-of": "^6.0.3" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=" + }, + "node_modules/next-tick": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", + "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=" + }, + "node_modules/normalize-package-data": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", + "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", + "dependencies": { + "hosted-git-info": "^4.0.1", + "is-core-module": "^2.5.0", + "semver": "^7.3.4", + "validate-npm-package-license": "^3.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/os-locale": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-5.0.0.tgz", + "integrity": "sha512-tqZcNEDAIZKBEPnHPlVDvKrp7NzgLi7jRmhKiUoa2NUmhl13FtkAGLUVR+ZsYvApBQdBfYm43A4tXXQ4IrYLBA==", + "dependencies": { + "execa": "^4.0.0", + "lcid": "^3.0.0", + "mem": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-defer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", + "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", + "engines": { + "node": ">=4" + } + }, + "node_modules/p-is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", + "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parse-passwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==" + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "engines": { + "node": ">=8" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "engines": { + "node": ">=6" + } + }, + "node_modules/quick-lru": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", + "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", + "engines": { + "node": ">=8" + } + }, + "node_modules/read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dependencies": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "dependencies": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-pkg-up/node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/read-pkg/node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==" + }, + "node_modules/read-pkg/node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/read-pkg/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/read-pkg/node_modules/type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/redent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", + "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", + "dependencies": { + "indent-string": "^4.0.0", + "strip-indent": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/resolve": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "dependencies": { + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-dir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", + "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", + "dependencies": { + "expand-tilde": "^2.0.0", + "global-modules": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "engines": { + "node": ">=4" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "engines": { + "node": ">=8" + } + }, + "node_modules/signal-exit": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.6.tgz", + "integrity": "sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ==" + }, + "node_modules/spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==" + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz", + "integrity": "sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==" + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "dependencies": { + "min-indent": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=" + }, + "node_modules/timers-ext": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.7.tgz", + "integrity": "sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ==", + "dependencies": { + "es5-ext": "~0.10.46", + "next-tick": "1" + } + }, + "node_modules/trim-newlines": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", + "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", + "engines": { + "node": ">=8" + } + }, + "node_modules/tslib": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" + }, + "node_modules/type": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", + "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==" + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "0.18.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", + "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/v8-compile-cache": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==" + }, + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "engines": { + "node": ">=10" + } + } + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.0.tgz", + "integrity": "sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==", + "requires": { + "@babel/highlight": "^7.16.0" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.15.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", + "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==" + }, + "@babel/highlight": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.0.tgz", + "integrity": "sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g==", + "requires": { + "@babel/helper-validator-identifier": "^7.15.7", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@eslint/eslintrc": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.0.4.tgz", + "integrity": "sha512-h8Vx6MdxwWI2WM8/zREHMoqdgLNXEL4QX3MWSVMdyNJGvXVOs+6lp+m2hc3FnuMHDc4poxFNI20vCk0OmI4G0Q==", + "requires": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.0.0", + "globals": "^13.9.0", + "ignore": "^4.0.6", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.0.4", + "strip-json-comments": "^3.1.1" + } + }, + "@humanwhocodes/config-array": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.6.0.tgz", + "integrity": "sha512-JQlEKbcgEUjBFhLIF4iqM7u/9lwgHRBcpHrmUNCALK0Q3amXN6lxdoXLnF0sm11E9VqTmBALR87IlUg1bZ8A9A==", + "requires": { + "@humanwhocodes/object-schema": "^1.2.0", + "debug": "^4.1.1", + "minimatch": "^3.0.4" + } + }, + "@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==" + }, + "@markuplint/file-resolver": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@markuplint/file-resolver/-/file-resolver-1.5.0.tgz", + "integrity": "sha512-UK3Nyi9AGOBvcG0Ea+0Ar3uzoAZg0p2+w+4Erw9zR/1DHWSmUOwRmDZxt5kMbEcPkv16ItJcSrfbLeX5CsvLdA==", + "requires": { + "@markuplint/ml-config": "^1.3.0", + "cosmiconfig": "^7.0.0", + "glob": "^7.1.7", + "minimatch": "^3.0.4", + "tslib": "^2.3.0" + } + }, + "@markuplint/html-parser": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/@markuplint/html-parser/-/html-parser-1.7.3.tgz", + "integrity": "sha512-WrpePphZLA6G4R3kNlIiiBBxeDVvBa0p2GI+WGMxMQZQYr9/1KAQFNNhwcBhySVGIsd5hW9fm8SysjCgF+K7Cw==", + "requires": { + "@markuplint/ml-ast": "^1.6.0", + "@markuplint/parser-utils": "^1.6.3", + "parse5": "^6.0.1", + "tslib": "^2.3.0" + } + }, + "@markuplint/html-spec": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/@markuplint/html-spec/-/html-spec-1.8.2.tgz", + "integrity": "sha512-TYUg6NEIq+tDqmLfOBZIwRNBGW+0BxnqP/Wqxc0+hjCTLrAH/PEDOR1JUwkJNZG/65VGVDEteZ8A8UPAQ1/v4g==", + "requires": { + "@markuplint/ml-spec": "^1.7.0" + } + }, + "@markuplint/i18n": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@markuplint/i18n/-/i18n-1.2.0.tgz", + "integrity": "sha512-bQ8AMjDGV6PQ9M0jTTy+J+Lbz+a1sJ5y/KSqUmhTvmwdcKAs5qn+eZwP1jzfx+ooi19+2q0HfSNsM3eW+9k3Vg==" + }, + "@markuplint/ml-ast": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@markuplint/ml-ast/-/ml-ast-1.6.0.tgz", + "integrity": "sha512-xJgfnIQZDH+BrNP4Ppx88W4G8aLyOodXSIWcYMb15Lm/jEQks3YLbsGfYohBj+TcoTtQ62ZGhMcrXVPwZLbahQ==", + "requires": { + "tslib": "^2.3.0" + } + }, + "@markuplint/ml-config": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@markuplint/ml-config/-/ml-config-1.3.0.tgz", + "integrity": "sha512-2GqA2hwums+DxE5GxkvFAkeCgJ4yPkRXkrdCNbFj9FiFmzVO3xikoOGmxcR0ol9oaXFfVnxoc9XFCfknPo/oMg==" + }, + "@markuplint/ml-core": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@markuplint/ml-core/-/ml-core-1.9.0.tgz", + "integrity": "sha512-KpT6rc4IWiPSUBrrB01dXEYK4uMmsP53Lc6Ooy7R7IDSjp0UbIZoouEVPSgMs0yfy/TurqQwT8VL8GEpkEABtA==", + "requires": { + "@markuplint/i18n": "^1.2.0", + "@markuplint/ml-ast": "^1.6.0", + "@markuplint/ml-config": "^1.3.0", + "@markuplint/ml-spec": "^1.7.0", + "css-selector-parser": "^1.4.1", + "tslib": "^2.3.0" + } + }, + "@markuplint/ml-spec": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@markuplint/ml-spec/-/ml-spec-1.7.0.tgz", + "integrity": "sha512-UZFz+ktT1cmkwYZ4JlNGO+PldTmmP3qQjfR6D94RSLC7A5kNhx+qDx4lEA709UOd23gnyZNCaYCw6dGi+oAtXg==", + "requires": { + "tslib": "^2.3.0" + } + }, + "@markuplint/parser-utils": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/@markuplint/parser-utils/-/parser-utils-1.6.3.tgz", + "integrity": "sha512-thtarMmaMB1cKZqOJ9Ts6tO9C/h6qX5cpvSPaFTBngDtdOfMpNfll/Vcav7W9KouzkqB0q8hzq4ksEazT/cOKw==", + "requires": { + "@markuplint/ml-ast": "^1.6.0", + "tslib": "^2.3.0", + "uuid": "^8.3.2" + } + }, + "@markuplint/rules": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/@markuplint/rules/-/rules-1.10.4.tgz", + "integrity": "sha512-AB+q4/fUNH2EJfQXHRYKQAQQnqHnODByPrEK4TzKLpI72V54HjIi8+tDMmqN4uiWBV6nliYI+uysKcRYDuPMog==", + "requires": { + "@markuplint/html-spec": "^1.8.2", + "@markuplint/ml-core": "^1.9.0", + "@markuplint/ml-spec": "^1.7.0", + "tslib": "^2.3.0" + } + }, + "@types/minimist": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", + "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==" + }, + "@types/normalize-package-data": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", + "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==" + }, + "@types/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==" + }, + "acorn": { + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.6.0.tgz", + "integrity": "sha512-U1riIR+lBSNi3IbxtaHOIKdH8sLFv3NYfNv8sg7ZsNhcfl4HF2++BfqqrNAxoCLQW1iiylOj76ecnaUxz+z9yw==" + }, + "acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "requires": {} + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==" + }, + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=" + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" + }, + "camelcase-keys": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", + "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", + "requires": { + "camelcase": "^5.3.1", + "map-obj": "^4.0.0", + "quick-lru": "^4.0.1" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "cli-color": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/cli-color/-/cli-color-2.0.1.tgz", + "integrity": "sha512-eBbxZF6fqPUNnf7CLAFOersUnyYzv83tHFLSlts+OAHsNendaqv2tHCq+/MO+b3Y+9JeoUlIvobyxG/Z8GNeOg==", + "requires": { + "d": "^1.0.1", + "es5-ext": "^0.10.53", + "es6-iterator": "^2.0.3", + "memoizee": "^0.4.15", + "timers-ext": "^0.1.7" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "cosmiconfig": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", + "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", + "requires": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + } + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "dependencies": { + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "css-selector-parser": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/css-selector-parser/-/css-selector-parser-1.4.1.tgz", + "integrity": "sha512-HYPSb7y/Z7BNDCOrakL4raGO2zltZkbeXyAd6Tg9obzix6QhzxCotdBl6VT0Dv4vZfJGVz3WL/xaEI9Ly3ul0g==" + }, + "d": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", + "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", + "requires": { + "es5-ext": "^0.10.50", + "type": "^1.0.1" + } + }, + "debug": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", + "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", + "requires": { + "ms": "2.1.2" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" + }, + "decamelize-keys": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz", + "integrity": "sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=", + "requires": { + "decamelize": "^1.1.0", + "map-obj": "^1.0.0" + }, + "dependencies": { + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=" + } + } + }, + "deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" + }, + "detect-installed": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/detect-installed/-/detect-installed-2.0.4.tgz", + "integrity": "sha1-oIUEZefD68/5eda2U1rTRLgN18U=", + "requires": { + "get-installed-path": "^2.0.3" + } + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "requires": { + "esutils": "^2.0.2" + } + }, + "eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "requires": { + "once": "^1.4.0" + } + }, + "enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "requires": { + "ansi-colors": "^4.1.1" + } + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es5-ext": { + "version": "0.10.53", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz", + "integrity": "sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==", + "requires": { + "es6-iterator": "~2.0.3", + "es6-symbol": "~3.1.3", + "next-tick": "~1.0.0" + } + }, + "es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", + "requires": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "es6-symbol": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", + "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", + "requires": { + "d": "^1.0.1", + "ext": "^1.1.2" + } + }, + "es6-weak-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", + "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", + "requires": { + "d": "1", + "es5-ext": "^0.10.46", + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.1" + } + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + }, + "eslint": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.3.0.tgz", + "integrity": "sha512-aIay56Ph6RxOTC7xyr59Kt3ewX185SaGnAr8eWukoPLeriCrvGjvAubxuvaXOfsxhtwV5g0uBOsyhAom4qJdww==", + "requires": { + "@eslint/eslintrc": "^1.0.4", + "@humanwhocodes/config-array": "^0.6.0", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "enquirer": "^2.3.5", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.1.0", + "eslint-utils": "^3.0.0", + "eslint-visitor-keys": "^3.1.0", + "espree": "^9.1.0", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^6.0.1", + "globals": "^13.6.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.0.4", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "progress": "^2.0.0", + "regexpp": "^3.2.0", + "semver": "^7.2.1", + "strip-ansi": "^6.0.1", + "strip-json-comments": "^3.1.0", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "eslint-config-google": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/eslint-config-google/-/eslint-config-google-0.14.0.tgz", + "integrity": "sha512-WsbX4WbjuMvTdeVL6+J3rK1RGhCTqjsFjX7UMSMgZiyxxaNLkoJENbrGExzERFeoTpGw3F3FypTiWAP9ZXzkEw==", + "requires": {} + }, + "eslint-scope": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.0.tgz", + "integrity": "sha512-aWwkhnS0qAXqNOgKOK0dJ2nvzEbhEvpy8OlJ9kZ0FeZnA6zpjv1/Vei+puGFFX7zkPCkHHXb7IDX3A+7yPrRWg==", + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + } + }, + "eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "requires": { + "eslint-visitor-keys": "^2.0.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==" + } + } + }, + "eslint-visitor-keys": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.1.0.tgz", + "integrity": "sha512-yWJFpu4DtjsWKkt5GeNBBuZMlNcYVs6vRCLoCVEJrTjaSB6LC98gFipNK/erM2Heg/E8mIK+hXG/pJMLK+eRZA==" + }, + "espree": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.1.0.tgz", + "integrity": "sha512-ZgYLvCS1wxOczBYGcQT9DDWgicXwJ4dbocr9uYN+/eresBAUuBu+O4WzB21ufQ/JqQT8gyp7hJ3z8SHii32mTQ==", + "requires": { + "acorn": "^8.6.0", + "acorn-jsx": "^5.3.1", + "eslint-visitor-keys": "^3.1.0" + } + }, + "esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "requires": { + "estraverse": "^5.1.0" + } + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "requires": { + "estraverse": "^5.2.0" + } + }, + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" + }, + "event-emitter": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", + "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", + "requires": { + "d": "1", + "es5-ext": "~0.10.14" + } + }, + "execa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", + "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", + "requires": { + "cross-spawn": "^7.0.0", + "get-stream": "^5.0.0", + "human-signals": "^1.1.1", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.0", + "onetime": "^5.1.0", + "signal-exit": "^3.0.2", + "strip-final-newline": "^2.0.0" + } + }, + "expand-tilde": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", + "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", + "requires": { + "homedir-polyfill": "^1.0.1" + } + }, + "ext": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.6.0.tgz", + "integrity": "sha512-sdBImtzkq2HpkdRLtlLWDa6w4DX22ijZLKx8BMPUuKe1c5lbN6xwQDQCxSfxBQnHZ13ls/FH0MQZx/q/gr6FQg==", + "requires": { + "type": "^2.5.0" + }, + "dependencies": { + "type": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/type/-/type-2.5.0.tgz", + "integrity": "sha512-180WMDQaIMm3+7hGXWf12GtdniDEy7nYcyFMKJn/eZz/6tSLXrUN9V0wKSbMjej0I1WHWbpREDEKHtqPQa9NNw==" + } + } + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" + }, + "file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "requires": { + "flat-cache": "^3.0.4" + } + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "requires": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + } + }, + "flatted": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.4.tgz", + "integrity": "sha512-8/sOawo8tJ4QOBX8YlQBMxL8+RLZfxMQOif9o0KUKTNTjMYElWPE0r/m5VNFxTRd0NSw8qSy8dajrwX4RYI1Hw==" + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=" + }, + "get-installed-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/get-installed-path/-/get-installed-path-2.1.1.tgz", + "integrity": "sha512-Qkn9eq6tW5/q9BDVdMpB8tOHljX9OSP0jRC5TRNVA4qRc839t4g8KQaR8t0Uv0EFVL0MlyG7m/ofjEgAROtYsA==", + "requires": { + "global-modules": "1.0.0" + } + }, + "get-stdin": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-8.0.0.tgz", + "integrity": "sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==" + }, + "get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "requires": { + "pump": "^3.0.0" + } + }, + "glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "requires": { + "is-glob": "^4.0.3" + } + }, + "global-modules": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", + "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "requires": { + "global-prefix": "^1.0.1", + "is-windows": "^1.0.1", + "resolve-dir": "^1.0.0" + } + }, + "global-prefix": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", + "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", + "requires": { + "expand-tilde": "^2.0.2", + "homedir-polyfill": "^1.0.1", + "ini": "^1.3.4", + "is-windows": "^1.0.1", + "which": "^1.2.14" + } + }, + "globals": { + "version": "13.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.0.tgz", + "integrity": "sha512-uS8X6lSKN2JumVoXrbUz+uG4BYG+eiawqm3qFcT7ammfbUHeCBoJMlHcec/S3krSk73/AE/f0szYFmgAA3kYZg==", + "requires": { + "type-fest": "^0.20.2" + }, + "dependencies": { + "type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==" + } + } + }, + "hard-rejection": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", + "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==" + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + }, + "has-yarn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz", + "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==" + }, + "homedir-polyfill": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", + "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", + "requires": { + "parse-passwd": "^1.0.0" + } + }, + "hosted-git-info": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.0.2.tgz", + "integrity": "sha512-c9OGXbZ3guC/xOlCg1Ci/VgWlwsqDv1yMQL1CWqXDL0hDjXuNcq0zuR4xqPSuasI3kqFDhqSyTjREz5gzq0fXg==", + "requires": { + "lru-cache": "^6.0.0" + } + }, + "human-signals": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", + "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==" + }, + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==" + }, + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" + }, + "indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==" + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" + }, + "invert-kv": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-3.0.1.tgz", + "integrity": "sha512-CYdFeFexxhv/Bcny+Q0BfOV+ltRlJcd4BBZBYFX/O0u4npJrgZtIcjokegtiSMAvlMTJ+Koq0GBCc//3bueQxw==" + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" + }, + "is-core-module": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.0.tgz", + "integrity": "sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==", + "requires": { + "has": "^1.0.3" + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=" + }, + "is-promise": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", + "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==" + }, + "is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==" + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==" + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "requires": { + "argparse": "^2.0.1" + } + }, + "json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=" + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" + }, + "lcid": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-3.1.1.tgz", + "integrity": "sha512-M6T051+5QCGLBQb8id3hdvIW8+zeFV2FyBGFS9IEK5H9Wt4MueD4bW1eWikpHgZp+5xR3l5c8pZUkQsIA0BFZg==", + "requires": { + "invert-kv": "^3.0.0" + } + }, + "levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "requires": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + } + }, + "lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "requires": { + "p-locate": "^4.1.0" + } + }, + "lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "requires": { + "yallist": "^4.0.0" + } + }, + "lru-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz", + "integrity": "sha1-Jzi9nw089PhEkMVzbEhpmsYyzaM=", + "requires": { + "es5-ext": "~0.10.2" + } + }, + "map-age-cleaner": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", + "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", + "requires": { + "p-defer": "^1.0.0" + } + }, + "map-obj": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", + "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==" + }, + "markuplint": { + "version": "1.11.4", + "resolved": "https://registry.npmjs.org/markuplint/-/markuplint-1.11.4.tgz", + "integrity": "sha512-9qdiDSvHEl0dl/QyZRZskpbmR0MUjQkgknIAVkodQUs5v3oc+O2w+3SE5v4BzP+EZsbRVL2ZaXN9hafVbUkjMg==", + "requires": { + "@markuplint/file-resolver": "^1.5.0", + "@markuplint/html-parser": "^1.7.3", + "@markuplint/html-spec": "^1.8.2", + "@markuplint/i18n": "^1.2.0", + "@markuplint/ml-ast": "^1.6.0", + "@markuplint/ml-config": "^1.3.0", + "@markuplint/ml-core": "^1.9.0", + "@markuplint/ml-spec": "^1.7.0", + "@markuplint/rules": "^1.10.4", + "cli-color": "^2.0.0", + "detect-installed": "^2.0.4", + "eastasianwidth": "^0.2.0", + "enquirer": "^2.3.6", + "get-stdin": "8", + "has-yarn": "^2.1.0", + "meow": "9", + "os-locale": "^5.0.0", + "strip-ansi": "6", + "tslib": "^2.3.0" + } + }, + "mem": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/mem/-/mem-5.1.1.tgz", + "integrity": "sha512-qvwipnozMohxLXG1pOqoLiZKNkC4r4qqRucSoDwXowsNGDSULiqFTRUF05vcZWnwJSG22qTsynQhxbaMtnX9gw==", + "requires": { + "map-age-cleaner": "^0.1.3", + "mimic-fn": "^2.1.0", + "p-is-promise": "^2.1.0" + } + }, + "memoizee": { + "version": "0.4.15", + "resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.15.tgz", + "integrity": "sha512-UBWmJpLZd5STPm7PMUlOw/TSy972M+z8gcyQ5veOnSDRREz/0bmpyTfKt3/51DhEBqCZQn1udM/5flcSPYhkdQ==", + "requires": { + "d": "^1.0.1", + "es5-ext": "^0.10.53", + "es6-weak-map": "^2.0.3", + "event-emitter": "^0.3.5", + "is-promise": "^2.2.2", + "lru-queue": "^0.1.0", + "next-tick": "^1.1.0", + "timers-ext": "^0.1.7" + }, + "dependencies": { + "next-tick": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", + "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==" + } + } + }, + "meow": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-9.0.0.tgz", + "integrity": "sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==", + "requires": { + "@types/minimist": "^1.2.0", + "camelcase-keys": "^6.2.2", + "decamelize": "^1.2.0", + "decamelize-keys": "^1.1.0", + "hard-rejection": "^2.1.0", + "minimist-options": "4.1.0", + "normalize-package-data": "^3.0.0", + "read-pkg-up": "^7.0.1", + "redent": "^3.0.0", + "trim-newlines": "^3.0.0", + "type-fest": "^0.18.0", + "yargs-parser": "^20.2.3" + } + }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" + }, + "min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==" + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist-options": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", + "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", + "requires": { + "arrify": "^1.0.1", + "is-plain-obj": "^1.1.0", + "kind-of": "^6.0.3" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=" + }, + "next-tick": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", + "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=" + }, + "normalize-package-data": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", + "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", + "requires": { + "hosted-git-info": "^4.0.1", + "is-core-module": "^2.5.0", + "semver": "^7.3.4", + "validate-npm-package-license": "^3.0.1" + } + }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "requires": { + "path-key": "^3.0.0" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "requires": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + } + }, + "os-locale": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-5.0.0.tgz", + "integrity": "sha512-tqZcNEDAIZKBEPnHPlVDvKrp7NzgLi7jRmhKiUoa2NUmhl13FtkAGLUVR+ZsYvApBQdBfYm43A4tXXQ4IrYLBA==", + "requires": { + "execa": "^4.0.0", + "lcid": "^3.0.0", + "mem": "^5.0.0" + } + }, + "p-defer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", + "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=" + }, + "p-is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", + "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==" + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" + }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "requires": { + "callsites": "^3.0.0" + } + }, + "parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + } + }, + "parse-passwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=" + }, + "parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==" + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" + }, + "path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==" + }, + "prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==" + }, + "progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==" + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + }, + "quick-lru": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", + "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==" + }, + "read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "requires": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "dependencies": { + "hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==" + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + }, + "type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==" + } + } + }, + "read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "requires": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "dependencies": { + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==" + } + } + }, + "redent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", + "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", + "requires": { + "indent-string": "^4.0.0", + "strip-indent": "^3.0.0" + } + }, + "regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==" + }, + "resolve": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "requires": { + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" + } + }, + "resolve-dir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", + "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", + "requires": { + "expand-tilde": "^2.0.0", + "global-modules": "^1.0.0" + } + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "requires": { + "glob": "^7.1.3" + } + }, + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "requires": { + "lru-cache": "^6.0.0" + } + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" + }, + "signal-exit": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.6.tgz", + "integrity": "sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ==" + }, + "spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==" + }, + "spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz", + "integrity": "sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==" + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==" + }, + "strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "requires": { + "min-indent": "^1.0.0" + } + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==" + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=" + }, + "timers-ext": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.7.tgz", + "integrity": "sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ==", + "requires": { + "es5-ext": "~0.10.46", + "next-tick": "1" + } + }, + "trim-newlines": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", + "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==" + }, + "tslib": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" + }, + "type": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", + "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==" + }, + "type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "requires": { + "prelude-ls": "^1.2.1" + } + }, + "type-fest": { + "version": "0.18.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", + "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==" + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "requires": { + "punycode": "^2.1.0" + } + }, + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" + }, + "v8-compile-cache": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==" + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "requires": { + "isexe": "^2.0.0" + } + }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==" + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==" + }, + "yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==" + } + } +} From 6b29e60494e01a80a41a23ec62dc0118bbe31c74 Mon Sep 17 00:00:00 2001 From: Oliver Date: Fri, 3 Dec 2021 11:12:49 +1100 Subject: [PATCH 095/129] Fixes for migration tests --- InvenTree/order/test_migrations.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/InvenTree/order/test_migrations.py b/InvenTree/order/test_migrations.py index d8f3a655ca..97ced6dbbf 100644 --- a/InvenTree/order/test_migrations.py +++ b/InvenTree/order/test_migrations.py @@ -8,13 +8,13 @@ from InvenTree import helpers from InvenTree.status_codes import SalesOrderStatus -class TestForwardMigrations(MigratorTestCase): +class TestRefIntMigrations(MigratorTestCase): """ Test entire schema migration """ - migrate_from = ('order', helpers.getOldestMigrationFile('order')) - migrate_to = ('order', helpers.getNewestMigrationFile('order')) + migrate_from = ('order', '0040_salesorder_target_date') + migrate_to = ('order', '0061_merge_0054_auto_20211201_2139_0060_auto_20211129_1339') def prepare(self): """ From 7e3be4a496d9be14fe4cc89afcd20935dfb07079 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 3 Dec 2021 01:18:31 +0100 Subject: [PATCH 096/129] rename --- .github/workflows/{pr_checks.yaml => qc_checks.yaml} | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename .github/workflows/{pr_checks.yaml => qc_checks.yaml} (99%) diff --git a/.github/workflows/pr_checks.yaml b/.github/workflows/qc_checks.yaml similarity index 99% rename from .github/workflows/pr_checks.yaml rename to .github/workflows/qc_checks.yaml index 00a92c8012..cad7a59d6a 100644 --- a/.github/workflows/pr_checks.yaml +++ b/.github/workflows/qc_checks.yaml @@ -1,6 +1,6 @@ -# Checks for each PR +# Checks for each PR / push -name: PR checks +name: QC checks on: push: From e31cf45cbcff5a1cdf29b24a709b65f6701891ac Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 3 Dec 2021 01:27:33 +0100 Subject: [PATCH 097/129] fix db name --- .github/workflows/qc_checks.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/qc_checks.yaml b/.github/workflows/qc_checks.yaml index cad7a59d6a..86834348be 100644 --- a/.github/workflows/qc_checks.yaml +++ b/.github/workflows/qc_checks.yaml @@ -193,7 +193,7 @@ jobs: invoke migrate invoke import-fixtures invoke export-records -f data.json - rm ${{ env.INVENTREE_DB_NAME }}.sqlite + rm inventree.sqlite invoke migrate invoke import-records -f data.json invoke import-records -f data.json From 7362162764d9853169a12b2196860a8338105f82 Mon Sep 17 00:00:00 2001 From: Oliver Date: Fri, 3 Dec 2021 15:20:49 +1100 Subject: [PATCH 098/129] Use different colors for "pending" orders status --- InvenTree/InvenTree/status_codes.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/InvenTree/InvenTree/status_codes.py b/InvenTree/InvenTree/status_codes.py index 4de0b7ced9..656c1d6e51 100644 --- a/InvenTree/InvenTree/status_codes.py +++ b/InvenTree/InvenTree/status_codes.py @@ -107,7 +107,7 @@ class PurchaseOrderStatus(StatusCode): } colors = { - PENDING: 'primary', + PENDING: 'secondary', PLACED: 'primary', COMPLETE: 'success', CANCELLED: 'danger', @@ -147,7 +147,7 @@ class SalesOrderStatus(StatusCode): } colors = { - PENDING: 'primary', + PENDING: 'secondary', SHIPPED: 'success', CANCELLED: 'danger', LOST: 'warning', From 88fce1e813efdfb54d74a8209d1c1d1d2c470026 Mon Sep 17 00:00:00 2001 From: Oliver Date: Fri, 3 Dec 2021 18:42:36 +1100 Subject: [PATCH 099/129] Unit test fixes --- InvenTree/order/models.py | 28 +++++++++++++++++++++- InvenTree/order/serializers.py | 10 ++++---- InvenTree/order/test_migrations.py | 1 - InvenTree/order/test_sales_order.py | 37 +++++++++++++++++++++++------ InvenTree/order/views.py | 4 +--- 5 files changed, 63 insertions(+), 17 deletions(-) diff --git a/InvenTree/order/models.py b/InvenTree/order/models.py index 0c5fe5e3d4..e88572ae55 100644 --- a/InvenTree/order/models.py +++ b/InvenTree/order/models.py @@ -617,11 +617,34 @@ class SalesOrder(Order): def is_completed(self): """ Check if this order is "shipped" (all line items delivered), - and mark it as "shipped" if so. """ return self.lines.count() > 0 and all([line.is_completed() for line in self.lines.all()]) + def complete_order(self, user): + """ + Mark this order as "complete" + """ + + if self.lines.count() == 0: + # Order without line items cannot be completed + raise ValidationError(_('Order cannot be completed as no parts have been assigned')) + + if self.status != SalesOrderStatus.PENDING: + # Only a PENDING order can be marked as SHIPPED + raise ValidationError(_('Only a pending order can be marked as complete')) + + # Check if there are any incomplete shipments + for shipment in self.shipments.all(): + if not shipment.shipment_date: + raise ValidationError(_('Order cannot be completed as there are pending shipments')) + + self.status = SalesOrderStatus.SHIPPED + self.shipped_by = user + self.shipment_date = datetime.now() + + self.save() + def can_cancel(self): """ Return True if this order can be cancelled @@ -988,6 +1011,9 @@ class SalesOrderShipment(models.Model): help_text=_('Shipment tracking information'), ) + def is_complete(self): + return self.shipment_date is not None + def check_can_complete(self): if self.shipment_date: diff --git a/InvenTree/order/serializers.py b/InvenTree/order/serializers.py index b0af634a00..cb082dc1f7 100644 --- a/InvenTree/order/serializers.py +++ b/InvenTree/order/serializers.py @@ -26,7 +26,7 @@ from InvenTree.serializers import InvenTreeModelSerializer from InvenTree.serializers import InvenTreeDecimalField from InvenTree.serializers import InvenTreeMoneySerializer from InvenTree.serializers import ReferenceIndexingSerializerMixin -from InvenTree.status_codes import StockStatus, SalesOrderStatus +from InvenTree.status_codes import StockStatus import order.models @@ -745,11 +745,11 @@ class SalesOrderCompleteSerializer(serializers.Serializer): request = self.context['request'] order = self.context['order'] - data = self.validated_data + # data = self.validated_data - # Mark this order as complete! - order.status = SalesOrderStatus.SHIPPED - order.save() + user = getattr(request, 'user', None) + + order.complete_order(user) class SOShipmentAllocationSerializer(serializers.Serializer): diff --git a/InvenTree/order/test_migrations.py b/InvenTree/order/test_migrations.py index 97ced6dbbf..3afba65223 100644 --- a/InvenTree/order/test_migrations.py +++ b/InvenTree/order/test_migrations.py @@ -4,7 +4,6 @@ Unit tests for the 'order' model data migrations from django_test_migrations.contrib.unittest_case import MigratorTestCase -from InvenTree import helpers from InvenTree.status_codes import SalesOrderStatus diff --git a/InvenTree/order/test_sales_order.py b/InvenTree/order/test_sales_order.py index 40fab98349..a4fda63a46 100644 --- a/InvenTree/order/test_sales_order.py +++ b/InvenTree/order/test_sales_order.py @@ -10,7 +10,7 @@ from company.models import Company from InvenTree import status_codes as status -from order.models import SalesOrder, SalesOrderLineItem, SalesOrderAllocation +from order.models import SalesOrder, SalesOrderLineItem, SalesOrderAllocation, SalesOrderShipment from part.models import Part @@ -42,6 +42,12 @@ class SalesOrderTest(TestCase): customer_reference='ABC 55555' ) + # Create a Shipment against this SalesOrder + self.shipment = SalesOrderShipment.objects.create( + order=self.order, + reference='001', + ) + # Create a line item self.line = SalesOrderLineItem.objects.create(quantity=50, order=self.order, part=self.part) @@ -86,11 +92,13 @@ class SalesOrderTest(TestCase): # Allocate stock to the order SalesOrderAllocation.objects.create( line=self.line, + shipment=self.shipment, item=StockItem.objects.get(pk=self.Sa.pk), quantity=25) SalesOrderAllocation.objects.create( line=self.line, + shipment=self.shipment, item=StockItem.objects.get(pk=self.Sb.pk), quantity=25 if full else 20 ) @@ -126,9 +134,9 @@ class SalesOrderTest(TestCase): # Now try to ship it - should fail with self.assertRaises(ValidationError): - self.order.ship_order(None) + self.order.complete_order(None) - def test_ship_order(self): + def test_complete_order(self): # Allocate line items, then ship the order # Assert some stuff before we run the test @@ -140,7 +148,22 @@ class SalesOrderTest(TestCase): self.assertEqual(SalesOrderAllocation.objects.count(), 2) - self.order.ship_order(None) + # Attempt to complete the order (but shipments are not completed!) + with self.assertRaises(ValidationError): + self.order.complete_order(None) + + self.assertIsNone(self.shipment.shipment_date) + self.assertFalse(self.shipment.is_complete()) + + # Mark the shipments as complete + self.shipment.complete_shipment(None) + self.assertTrue(self.shipment.is_complete()) + + # Now, should be OK to ship + self.order.complete_order(None) + + self.assertEqual(self.order.status, status.SalesOrderStatus.SHIPPED) + self.assertIsNotNone(self.order.shipment_date) # There should now be 4 stock items self.assertEqual(StockItem.objects.count(), 4) @@ -162,12 +185,12 @@ class SalesOrderTest(TestCase): self.assertEqual(sa.sales_order, None) self.assertEqual(sb.sales_order, None) - # And no allocations - self.assertEqual(SalesOrderAllocation.objects.count(), 0) + # And the allocations still exist + self.assertEqual(SalesOrderAllocation.objects.count(), 2) self.assertEqual(self.order.status, status.SalesOrderStatus.SHIPPED) self.assertTrue(self.order.is_fully_allocated()) self.assertTrue(self.line.is_fully_allocated()) self.assertEqual(self.line.fulfilled_quantity(), 50) - self.assertEqual(self.line.allocated_quantity(), 0) + self.assertEqual(self.line.allocated_quantity(), 50) diff --git a/InvenTree/order/views.py b/InvenTree/order/views.py index 2c3e125dc0..6eec7145ee 100644 --- a/InvenTree/order/views.py +++ b/InvenTree/order/views.py @@ -792,14 +792,12 @@ class OrderParts(AjaxView): order.add_line_item(supplier_part, quantity, purchase_price=purchase_price) - -#### TODO: This class MUST be converted to the API forms! -#### TODO: We MUST select the shipment class SalesOrderAssignSerials(AjaxView, FormMixin): """ View for assigning stock items to a sales order, by serial number lookup. """ + # TODO: Remove this class and replace with an API endpoint model = SalesOrderAllocation role_required = 'sales_order.change' From 63f6776e83f5c13f1718f154ba58e81f3ad7c319 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 3 Dec 2021 09:00:32 +0100 Subject: [PATCH 100/129] set default ref --- .github/workflows/qc_checks.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/qc_checks.yaml b/.github/workflows/qc_checks.yaml index 86834348be..ebf375629a 100644 --- a/.github/workflows/qc_checks.yaml +++ b/.github/workflows/qc_checks.yaml @@ -35,7 +35,7 @@ jobs: uses: actions/checkout@v2 - name: Check version number run: | - python3 ci/check_version_number.py --branch ${{ github.base_ref }} + python3 ci/check_version_number.py --branch ${{ github.base_ref || github.ref }} pep_style: name: PEP style (python) From c93009876dc59c8e6a2a1f00c6a52a884a46523b Mon Sep 17 00:00:00 2001 From: Oliver Date: Fri, 3 Dec 2021 20:14:09 +1100 Subject: [PATCH 101/129] UI changes --- InvenTree/order/templates/order/sales_order_detail.html | 4 +++- InvenTree/templates/js/translated/order.js | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/InvenTree/order/templates/order/sales_order_detail.html b/InvenTree/order/templates/order/sales_order_detail.html index 7977274155..48b2542752 100644 --- a/InvenTree/order/templates/order/sales_order_detail.html +++ b/InvenTree/order/templates/order/sales_order_detail.html @@ -18,7 +18,7 @@

    {% trans "Sales Order Items" %}

    {% include "spacer.html" %}
    - {% if roles.sales_order.change %} + {% if roles.sales_order.change and order.is_pending %} @@ -52,9 +52,11 @@ {% endif %} + {% if roles.sales_order.change %} + {% endif %}
    diff --git a/InvenTree/templates/js/translated/order.js b/InvenTree/templates/js/translated/order.js index 64c4f97645..23467bfc88 100644 --- a/InvenTree/templates/js/translated/order.js +++ b/InvenTree/templates/js/translated/order.js @@ -1400,7 +1400,7 @@ function loadSalesOrderShipmentTable(table, options={}) { }, { field: 'reference', - title: '{% trans "Shipment" %}', + title: '{% trans "Shipment Reference" %}', switchable: false, }, { From 43ee4e390ad1a5c46c13ea2fab8aeb97aefaa734 Mon Sep 17 00:00:00 2001 From: Oliver Date: Fri, 3 Dec 2021 20:53:59 +1100 Subject: [PATCH 102/129] API updates - Allow filtering of POLineItem list endpoint by base part instance - Include "order detail" in POLineItem serializer --- InvenTree/InvenTree/version.py | 6 +++++- InvenTree/order/api.py | 24 +++++++++++++++++++++++- InvenTree/order/serializers.py | 8 ++++++++ 3 files changed, 36 insertions(+), 2 deletions(-) diff --git a/InvenTree/InvenTree/version.py b/InvenTree/InvenTree/version.py index bbf0174453..15049a5456 100644 --- a/InvenTree/InvenTree/version.py +++ b/InvenTree/InvenTree/version.py @@ -12,11 +12,15 @@ import common.models INVENTREE_SW_VERSION = "0.6.0 dev" # InvenTree API version -INVENTREE_API_VERSION = 19 +INVENTREE_API_VERSION = 20 """ Increment this API version number whenever there is a significant change to the API that any clients need to know about +v20 -> 2021-12-03 + - Adds ability to filter POLineItem endpoint by "base_part" + - Adds optional "order_detail" to POLineItem list endpoint + v19 -> 2021-12-02 - Adds the ability to filter the StockItem API by "part_tree" - Returns only stock items which match a particular part.tree_id field diff --git a/InvenTree/order/api.py b/InvenTree/order/api.py index dc5f5b87f4..bdeb8ee4f6 100644 --- a/InvenTree/order/api.py +++ b/InvenTree/order/api.py @@ -13,7 +13,6 @@ from rest_framework import generics from rest_framework import filters, status from rest_framework.response import Response - from InvenTree.filters import InvenTreeOrderingFilter from InvenTree.helpers import str2bool from InvenTree.api import AttachmentMixin @@ -300,6 +299,7 @@ class POLineItemList(generics.ListCreateAPIView): try: kwargs['part_detail'] = str2bool(self.request.query_params.get('part_detail', False)) + kwargs['order_detail'] = str2bool(self.request.query_params.get('order_detail', False)) except AttributeError: pass @@ -307,6 +307,28 @@ class POLineItemList(generics.ListCreateAPIView): return self.serializer_class(*args, **kwargs) + def filter_queryset(self, queryset): + """ + Additional filtering options + """ + + params = self.request.query_params + + queryset = super().filter_queryset(queryset) + + base_part = params.get('base_part', None) + + if base_part: + try: + base_part = Part.objects.get(pk=base_part) + + queryset = queryset.filter(part__part=base_part) + + except (ValueError, Part.DoesNotExist): + pass + + return queryset + filter_backends = [ rest_filters.DjangoFilterBackend, filters.SearchFilter, diff --git a/InvenTree/order/serializers.py b/InvenTree/order/serializers.py index 38a058ae6d..060fd9ff1f 100644 --- a/InvenTree/order/serializers.py +++ b/InvenTree/order/serializers.py @@ -143,12 +143,17 @@ class POLineItemSerializer(InvenTreeModelSerializer): part_detail = kwargs.pop('part_detail', False) + order_detail = kwargs.pop('order_detail', False) + super().__init__(*args, **kwargs) if part_detail is not True: self.fields.pop('part_detail') self.fields.pop('supplier_part_detail') + if order_detail is not True: + self.fields.pop('order_detail') + quantity = serializers.FloatField(default=1) received = serializers.FloatField(default=0) @@ -170,6 +175,8 @@ class POLineItemSerializer(InvenTreeModelSerializer): help_text=_('Purchase price currency'), ) + order_detail = POSerializer(source='order', read_only=True, many=False) + class Meta: model = PurchaseOrderLineItem @@ -179,6 +186,7 @@ class POLineItemSerializer(InvenTreeModelSerializer): 'reference', 'notes', 'order', + 'order_detail', 'part', 'part_detail', 'supplier_part_detail', From 6d90ded27f7984df1c183a43b4af6f7e09358166 Mon Sep 17 00:00:00 2001 From: Oliver Date: Fri, 3 Dec 2021 20:54:21 +1100 Subject: [PATCH 103/129] First pass at a part-purchase-order table --- InvenTree/part/templates/part/detail.html | 12 +- InvenTree/templates/js/translated/order.js | 15 ++- InvenTree/templates/js/translated/part.js | 130 +++++++++++++++++++++ 3 files changed, 142 insertions(+), 15 deletions(-) diff --git a/InvenTree/part/templates/part/detail.html b/InvenTree/part/templates/part/detail.html index ce78e445e1..de1d46596a 100644 --- a/InvenTree/part/templates/part/detail.html +++ b/InvenTree/part/templates/part/detail.html @@ -73,7 +73,7 @@
    - {% include "filter_list.html" with id="purchaseorder" %} + {% include "filter_list.html" with id="partpurchaseorders" %}
    @@ -703,12 +703,10 @@ }); onPanelLoad("purchase-orders", function() { - loadPurchaseOrderTable($("#purchase-order-table"), { - url: "{% url 'api-po-list' %}", - params: { - part: {{ part.id }}, - }, - }); + loadPartPurchaseOrderTable( + "#purchase-order-table", + {{ part.pk }}, + ); }); onPanelLoad("sales-orders", function() { diff --git a/InvenTree/templates/js/translated/order.js b/InvenTree/templates/js/translated/order.js index a471182399..b75ad8e42d 100644 --- a/InvenTree/templates/js/translated/order.js +++ b/InvenTree/templates/js/translated/order.js @@ -648,6 +648,13 @@ function loadPurchaseOrderTable(table, options) { var html = renderLink(value, `/order/purchase-order/${row.pk}/`); + html += purchaseOrderStatusDisplay( + row.status, + { + classes: 'float-right', + } + ); + if (row.overdue) { html += makeIconBadge('fa-calendar-times icon-red', '{% trans "Order is overdue" %}'); } @@ -672,14 +679,6 @@ function loadPurchaseOrderTable(table, options) { field: 'description', title: '{% trans "Description" %}', }, - { - field: 'status', - title: '{% trans "Status" %}', - sortable: true, - formatter: function(value, row) { - return purchaseOrderStatusDisplay(row.status, row.status_text); - } - }, { field: 'creation_date', title: '{% trans "Date" %}', diff --git a/InvenTree/templates/js/translated/part.js b/InvenTree/templates/js/translated/part.js index 0a27f2ba2f..011cde0def 100644 --- a/InvenTree/templates/js/translated/part.js +++ b/InvenTree/templates/js/translated/part.js @@ -29,6 +29,7 @@ loadParametricPartTable, loadPartCategoryTable, loadPartParameterTable, + loadPartPurchaseOrderTable, loadPartTable, loadPartTestTemplateTable, loadPartVariantTable, @@ -712,6 +713,135 @@ function loadPartParameterTable(table, url, options) { } +/* + * Construct a table showing a list of purchase orders for a given part. + * + * This requests API data from the PurchaseOrderLineItem endpoint + */ +function loadPartPurchaseOrderTable(table, part_id, options={}) { + + options.params = options.params || {}; + + // Construct API filterset + options.params.base_part = part_id; + options.params.part_detail = true; + options.params.order_detail = true; + + var filters = loadTableFilters('partpurchaseorders'); + + for (var key in options.params) { + filters[key] = options.params[key]; + } + + setupFilterList('partpurchaseorders', $(table)); + + $(table).inventreeTable({ + url: '{% url "api-po-line-list" %}', + queryParams: filters, + name: 'partpurchaseorders', + original: options.params, + showColumns: true, + formatNoMatches: function() { + return '{% trans "No purchase orders found" %}'; + }, + columns: [ + { + field: 'order', + title: '{% trans "Purchase Order" %}', + switchable: false, + formatter: function(value, row) { + var order = row.order_detail; + + if (!order) { + return '-'; + } + + var ref = global_settings.PURCHASEORDER_REFERENCE_PREFIX + order.reference; + + var html = renderLink(ref, `/order/po/${order.pk}/`); + + html += purchaseOrderStatusDisplay( + order.status, + { + classes: 'float-right', + } + ); + + return html; + }, + }, + { + field: 'supplier', + title: '{% trans "Supplier" %}', + switchable: true, + formatter: function(value, row) { + + if (row.supplier_part_detail && row.supplier_part_detail.supplier_detail) { + var supp = row.supplier_part_detail.supplier_detail; + var html = imageHoverIcon(supp.thumbnail || supp.image); + + html += ' ' + renderLink(supp.name, `/company/${supp.pk}/`); + + return html; + } else { + return '-'; + } + } + }, + { + field: 'sku', + title: '{% trans "SKU" %}', + switchable: true, + formatter: function(value, row) { + if (row.supplier_part_detail) { + var supp = row.supplier_part_detail; + + return renderLink(supp.SKU, `/supplier-part/${supp.pk}/`); + } else { + return '-'; + } + }, + }, + { + field: 'mpn', + title: '{% trans "MPN" %}', + switchable: true, + formatter: function(value, row) { + if (row.supplier_part_detail && row.supplier_part_detail.manufacturer_part_detail) { + var manu = row.supplier_part_detail.manufacturer_part_detail; + return renderLink(manu.MPN, `/manufacturer-part/${manu.pk}/`); + } + } + }, + { + field: 'quantity', + title: '{% trans "Quantity" %}', + }, + { + field: 'received', + title: '{% trans "Received" %}', + switchable: true, + }, + { + field: 'purchase_price', + title: '{% trans "Price" %}', + formatter: function(value, row) { + var formatter = new Intl.NumberFormat( + 'en-US', + { + style: 'currency', + currency: row.purchase_price_currency, + } + ); + + return formatter.format(row.purchase_price); + } + } + ] + }); +} + + function loadRelatedPartsTable(table, part_id, options={}) { /* * Load table of "related" parts From acfafe22c5988aa2de96ca230b3274a878416aca Mon Sep 17 00:00:00 2001 From: Oliver Date: Fri, 3 Dec 2021 21:07:09 +1100 Subject: [PATCH 104/129] order lines can be received directly from the new table --- InvenTree/templates/js/translated/order.js | 2 +- InvenTree/templates/js/translated/part.js | 51 ++++++++++++++++++++-- 2 files changed, 49 insertions(+), 4 deletions(-) diff --git a/InvenTree/templates/js/translated/order.js b/InvenTree/templates/js/translated/order.js index b75ad8e42d..d565a6f1c3 100644 --- a/InvenTree/templates/js/translated/order.js +++ b/InvenTree/templates/js/translated/order.js @@ -988,7 +988,7 @@ function loadPurchaseOrderLineItemTable(table, options={}) { field: 'buttons', title: '', formatter: function(value, row, index, field) { - var html = `
    `; + var html = `
    `; var pk = row.pk; diff --git a/InvenTree/templates/js/translated/part.js b/InvenTree/templates/js/translated/part.js index 011cde0def..d6410f57aa 100644 --- a/InvenTree/templates/js/translated/part.js +++ b/InvenTree/templates/js/translated/part.js @@ -733,7 +733,7 @@ function loadPartPurchaseOrderTable(table, part_id, options={}) { filters[key] = options.params[key]; } - setupFilterList('partpurchaseorders', $(table)); + setupFilterList('purchaseorderlineitem', $(table), '#filter-list-partpurchaseorders'); $(table).inventreeTable({ url: '{% url "api-po-line-list" %}', @@ -741,9 +741,34 @@ function loadPartPurchaseOrderTable(table, part_id, options={}) { name: 'partpurchaseorders', original: options.params, showColumns: true, + uniqueId: 'pk', formatNoMatches: function() { return '{% trans "No purchase orders found" %}'; }, + onPostBody: function() { + $(table).find('.button-line-receive').click(function() { + var pk = $(this).attr('pk'); + + var line_item = $(table).bootstrapTable('getRowByUniqueId', pk); + + if (!line_item) { + console.log('WARNING: getRowByUniqueId returned null'); + return; + } + + receivePurchaseOrderItems( + line_item.order, + [ + line_item, + ], + { + success: function() { + $(table).bootstrapTable('refresh'); + } + } + ); + }) + }, columns: [ { field: 'order', @@ -758,7 +783,7 @@ function loadPartPurchaseOrderTable(table, part_id, options={}) { var ref = global_settings.PURCHASEORDER_REFERENCE_PREFIX + order.reference; - var html = renderLink(ref, `/order/po/${order.pk}/`); + var html = renderLink(ref, `/order/purchase-order/${order.pk}/`); html += purchaseOrderStatusDisplay( order.status, @@ -825,6 +850,7 @@ function loadPartPurchaseOrderTable(table, part_id, options={}) { { field: 'purchase_price', title: '{% trans "Price" %}', + switchable: true, formatter: function(value, row) { var formatter = new Intl.NumberFormat( 'en-US', @@ -836,8 +862,27 @@ function loadPartPurchaseOrderTable(table, part_id, options={}) { return formatter.format(row.purchase_price); } + }, + { + field: 'actions', + title: '', + formatter: function(value, row) { + + if (row.received >= row.quantity) { + // Already recevied + return `{% trans "Received" %}`; + } else { + var html = `
    `; + var pk = row.pk; + + html += makeIconButton('fa-sign-in-alt', 'button-line-receive', pk, '{% trans "Receive line item" %}'); + + html += `
    `; + return html; + } + } } - ] + ], }); } From 767036c4add8da2f1b7dd8e80ec25d8384242180 Mon Sep 17 00:00:00 2001 From: Oliver Date: Fri, 3 Dec 2021 21:14:18 +1100 Subject: [PATCH 105/129] Update README.md Fixes build status badges --- README.md | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index ba3d35e402..2881311b85 100644 --- a/README.md +++ b/README.md @@ -6,10 +6,8 @@ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![Coverage Status](https://coveralls.io/repos/github/inventree/InvenTree/badge.svg)](https://coveralls.io/github/inventree/InvenTree) [![Crowdin](https://badges.crowdin.net/inventree/localized.svg)](https://crowdin.com/project/inventree) -![PEP](https://github.com/inventree/inventree/actions/workflows/style.yaml/badge.svg) -![SQLite](https://github.com/inventree/inventree/actions/workflows/coverage.yaml/badge.svg) -![MySQL](https://github.com/inventree/inventree/actions/workflows/mysql.yaml/badge.svg) -![PostgreSQL](https://github.com/inventree/inventree/actions/workflows/postgresql.yaml/badge.svg) +![CI](https://github.com/inventree/inventree/actions/workflows/qc_checks.yaml/badge.svg) +![Docker](https://github.com/inventree/inventree/actions/workflows/docker_latest.yaml/badge.svg) InvenTree is an open-source Inventory Management System which provides powerful low-level stock control and part tracking. The core of the InvenTree system is a Python/Django database backend which provides an admin interface (web-based) and a JSON API for interaction with external interfaces and applications. From 1a37564d8650b8977d4e56033c0778ec89e46d80 Mon Sep 17 00:00:00 2001 From: Oliver Date: Fri, 3 Dec 2021 21:15:00 +1100 Subject: [PATCH 106/129] Update README.md Remove duplicated docker badge --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 2881311b85..d4fbc2c046 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,6 @@ [![Coverage Status](https://coveralls.io/repos/github/inventree/InvenTree/badge.svg)](https://coveralls.io/github/inventree/InvenTree) [![Crowdin](https://badges.crowdin.net/inventree/localized.svg)](https://crowdin.com/project/inventree) ![CI](https://github.com/inventree/inventree/actions/workflows/qc_checks.yaml/badge.svg) -![Docker](https://github.com/inventree/inventree/actions/workflows/docker_latest.yaml/badge.svg) InvenTree is an open-source Inventory Management System which provides powerful low-level stock control and part tracking. The core of the InvenTree system is a Python/Django database backend which provides an admin interface (web-based) and a JSON API for interaction with external interfaces and applications. From f6e1de42f55df98c56f5e7338ac8b4618881e5a6 Mon Sep 17 00:00:00 2001 From: Oliver Date: Fri, 3 Dec 2021 21:16:58 +1100 Subject: [PATCH 107/129] JS linting --- InvenTree/templates/js/translated/part.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/InvenTree/templates/js/translated/part.js b/InvenTree/templates/js/translated/part.js index d6410f57aa..c2e4bb15a2 100644 --- a/InvenTree/templates/js/translated/part.js +++ b/InvenTree/templates/js/translated/part.js @@ -767,7 +767,7 @@ function loadPartPurchaseOrderTable(table, part_id, options={}) { } } ); - }) + }); }, columns: [ { From c1052b6c1dfe4d51f9cab419c293726b5426902b Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 3 Dec 2021 20:14:48 +0100 Subject: [PATCH 108/129] only trigger version number if pullrequest --- .github/workflows/qc_checks.yaml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/qc_checks.yaml b/.github/workflows/qc_checks.yaml index ebf375629a..0687bd5083 100644 --- a/.github/workflows/qc_checks.yaml +++ b/.github/workflows/qc_checks.yaml @@ -29,13 +29,14 @@ jobs: check_version: name: version number runs-on: ubuntu-latest + if: ${{ github.event_name == 'pull_request' }} steps: - name: Checkout Code uses: actions/checkout@v2 - name: Check version number run: | - python3 ci/check_version_number.py --branch ${{ github.base_ref || github.ref }} + python3 ci/check_version_number.py --branch ${{ github.base_ref }} pep_style: name: PEP style (python) From b871115484da4fa9d9ad07ec7440303576ea9f6e Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 3 Dec 2021 20:24:01 +0100 Subject: [PATCH 109/129] always run style --- .github/workflows/qc_checks.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/qc_checks.yaml b/.github/workflows/qc_checks.yaml index 0687bd5083..a9bb80f4ab 100644 --- a/.github/workflows/qc_checks.yaml +++ b/.github/workflows/qc_checks.yaml @@ -42,6 +42,7 @@ jobs: name: PEP style (python) needs: check_version runs-on: ubuntu-latest + if: always() steps: - name: Checkout code From 3abad2f73d1b5af857ae19ac4d8a492caeb30468 Mon Sep 17 00:00:00 2001 From: Oliver Date: Sat, 4 Dec 2021 09:33:42 +1100 Subject: [PATCH 110/129] js linting --- InvenTree/templates/js/translated/order.js | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/InvenTree/templates/js/translated/order.js b/InvenTree/templates/js/translated/order.js index 23467bfc88..78065b2998 100644 --- a/InvenTree/templates/js/translated/order.js +++ b/InvenTree/templates/js/translated/order.js @@ -22,6 +22,7 @@ allocateStockToSalesOrder, completeShipment, createSalesOrder, + createSalesOrderShipment, editPurchaseOrderLineItem, exportOrder, loadPurchaseOrderLineItemTable, @@ -1529,13 +1530,9 @@ function allocateStockToSalesOrder(order_id, line_items, options={}) { var table_entries = ''; - for (var idx = 0; idx < line_items.length; idx++ ){ + for (var idx = 0; idx < line_items.length; idx++ ) { var line_item = line_items[idx]; - var todo = "auto-calculate remaining quantity"; - - var todo = "see how it is done for the build order allocation system!"; - var remaining = 0; table_entries += renderLineItemRow(line_item, remaining); @@ -1879,8 +1876,6 @@ function showAllocationSubTable(index, row, element, options) { var table = $(`#allocation-table-${row.pk}`); - var shipped = options.shipped; - function setupCallbacks() { // Add callbacks for 'edit' buttons table.find('.button-allocation-edit').click(function() { @@ -2211,7 +2206,7 @@ function loadSalesOrderLineItemTable(table, options={}) { switchable: false, sortable: true, formatter: function(value, row, index, field) { - return makeProgressBar(row.allocated, row.quantity, { + return makeProgressBar(row.allocated, row.quantity, { id: `order-line-progress-${row.pk}`, }); }, From 1215ef520d4410420c3ba9e04b3a5b7a6a822a95 Mon Sep 17 00:00:00 2001 From: Oliver Date: Sat, 4 Dec 2021 09:44:23 +1100 Subject: [PATCH 111/129] Further JS linting --- InvenTree/templates/js/translated/order.js | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/InvenTree/templates/js/translated/order.js b/InvenTree/templates/js/translated/order.js index 7298432a66..2c441d086f 100644 --- a/InvenTree/templates/js/translated/order.js +++ b/InvenTree/templates/js/translated/order.js @@ -1650,7 +1650,6 @@ function allocateStockToSalesOrder(order_id, line_items, options={}) { var available = Math.max((data.quantity || 0) - (data.allocated || 0), 0); // Remaining quantity to be allocated? - var todo = "fix this calculation!"; var remaining = opts.quantity || available; // Maximum amount that we need @@ -2252,8 +2251,7 @@ function loadSalesOrderLineItemTable(table, options={}) { } }); - columns.push( - { + columns.push({ field: 'notes', title: '{% trans "Notes" %}', }); From 921ef5ae9ed86d194b662aafece10da176436bc2 Mon Sep 17 00:00:00 2001 From: Oliver Date: Sat, 4 Dec 2021 10:11:18 +1100 Subject: [PATCH 112/129] Tweaks to PO and SO tables --- InvenTree/templates/js/translated/order.js | 24 ++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/InvenTree/templates/js/translated/order.js b/InvenTree/templates/js/translated/order.js index 2c441d086f..58c86d1894 100644 --- a/InvenTree/templates/js/translated/order.js +++ b/InvenTree/templates/js/translated/order.js @@ -761,6 +761,9 @@ function removePurchaseOrderLineItem(e) { } +/* + * Load a table displaying list of purchase orders + */ function loadPurchaseOrderTable(table, options) { /* Create a purchase-order table */ @@ -808,13 +811,6 @@ function loadPurchaseOrderTable(table, options) { var html = renderLink(value, `/order/purchase-order/${row.pk}/`); - html += purchaseOrderStatusDisplay( - row.status, - { - classes: 'float-right', - } - ); - if (row.overdue) { html += makeIconBadge('fa-calendar-times icon-red', '{% trans "Order is overdue" %}'); } @@ -839,6 +835,15 @@ function loadPurchaseOrderTable(table, options) { field: 'description', title: '{% trans "Description" %}', }, + { + field: 'status', + title: '{% trans "Status" %}', + switchable: true, + sortable: true, + formatter: function(value, row) { + return purchaseOrderStatusDisplay(row.status); + } + }, { field: 'creation_date', title: '{% trans "Date" %}', @@ -1172,6 +1177,9 @@ function loadPurchaseOrderLineItemTable(table, options={}) { } +/* + * Load table displaying list of sales orders + */ function loadSalesOrderTable(table, options) { options.params = options.params || {}; @@ -1254,7 +1262,7 @@ function loadSalesOrderTable(table, options) { field: 'status', title: '{% trans "Status" %}', formatter: function(value, row) { - return salesOrderStatusDisplay(row.status, row.status_text); + return salesOrderStatusDisplay(row.status); } }, { From 9ba6ac423ded4bbb36b3ed45bd73dcb5b977e330 Mon Sep 17 00:00:00 2001 From: Oliver Date: Sat, 4 Dec 2021 10:16:51 +1100 Subject: [PATCH 113/129] Add shipment status to sales order page --- InvenTree/order/models.py | 24 +++++++++++++++++++ .../templates/order/sales_order_base.html | 10 ++++++++ 2 files changed, 34 insertions(+) diff --git a/InvenTree/order/models.py b/InvenTree/order/models.py index e88572ae55..4ab0d6621c 100644 --- a/InvenTree/order/models.py +++ b/InvenTree/order/models.py @@ -700,6 +700,30 @@ class SalesOrder(Order): def pending_line_count(self): return self.pending_line_items().count() + def completed_shipments(self): + """ + Return a queryset of the completed shipments for this order + """ + return self.shipments.exclude(shipment_date=None) + + def pending_shipments(self): + """ + Return a queryset of the pending shipments for this order + """ + + return self.shipments.filter(shipment_date=None) + + @property + def shipment_count(self): + return self.shipments.count() + + @property + def completed_shipment_count(self): + return self.completed_shipments().count() + + @property + def pending_shipment_count(self): + return self.pending_shipments().count() class PurchaseOrderAttachment(InvenTreeAttachment): """ diff --git a/InvenTree/order/templates/order/sales_order_base.html b/InvenTree/order/templates/order/sales_order_base.html index 80ff5bbd97..4a8457d074 100644 --- a/InvenTree/order/templates/order/sales_order_base.html +++ b/InvenTree/order/templates/order/sales_order_base.html @@ -135,6 +135,16 @@ src="{% static 'img/blank_image.png' %}" {% endif %} + + + {% trans "Completed Shipments" %} + + {{ order.completed_shipment_count }} / {{ order.shipment_count }} + {% if order.pending_shipment_count > 0 %} + {% trans "Incomplete" %} + {% endif %} + + {% if order.link %} From e9796676c0e9e199dd7ffb0be317a5ab18e1e5f4 Mon Sep 17 00:00:00 2001 From: Oliver Date: Sat, 4 Dec 2021 10:44:48 +1100 Subject: [PATCH 114/129] Add a progress spinner to modal forms --- InvenTree/order/templates/order/sales_order_base.html | 9 +++++++-- InvenTree/templates/js/translated/forms.js | 6 ++++++ InvenTree/templates/js/translated/modals.js | 1 + 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/InvenTree/order/templates/order/sales_order_base.html b/InvenTree/order/templates/order/sales_order_base.html index 4a8457d074..2781b26a30 100644 --- a/InvenTree/order/templates/order/sales_order_base.html +++ b/InvenTree/order/templates/order/sales_order_base.html @@ -167,8 +167,13 @@ src="{% static 'img/blank_image.png' %}" {% if order.shipment_date %} - {% trans "Shipped" %} - {{ order.shipment_date }}{{ order.shipped_by }} + {% trans "Completed" %} + + {{ order.shipment_date }} + {% if order.shipped_by %} + {{ order.shipped_by }} + {% endif %} + {% endif %} {% if order.responsible %} diff --git a/InvenTree/templates/js/translated/forms.js b/InvenTree/templates/js/translated/forms.js index fdd8b60d28..def7e41358 100644 --- a/InvenTree/templates/js/translated/forms.js +++ b/InvenTree/templates/js/translated/forms.js @@ -730,6 +730,9 @@ function submitFormData(fields, options) { data = options.processBeforeUpload(data); } + // Show the progress spinner + $(options.modal).find('#modal-progress-spinner').show(); + // Submit data upload_func( options.url, @@ -737,10 +740,13 @@ function submitFormData(fields, options) { { method: options.method, success: function(response) { + $(options.modal).find('#modal-progress-spinner').hide(); handleFormSuccess(response, options); }, error: function(xhr) { + $(options.modal).find('#modal-progress-spinner').hide(); + switch (xhr.status) { case 400: handleFormErrors(xhr.responseJSON, fields, options); diff --git a/InvenTree/templates/js/translated/modals.js b/InvenTree/templates/js/translated/modals.js index 4cd0be8cec..c01bb6c34a 100644 --- a/InvenTree/templates/js/translated/modals.js +++ b/InvenTree/templates/js/translated/modals.js @@ -72,6 +72,7 @@ function createNewModal(options={}) {
    +

    From 6bc3e3ccbbba60371784cb1975e3cdc6bb526ffd Mon Sep 17 00:00:00 2001 From: Matthias Mair <66015116+matmair@users.noreply.github.com> Date: Sat, 4 Dec 2021 01:01:18 +0100 Subject: [PATCH 115/129] Workflow remaster (#2416) * Workflow remaster (#28) * set default ref * only trigger version number if pullrequest * try skipping just a step * Workflow remaster (#29) * set default ref * only trigger version number if pullrequest * always run style * try skipping just a step * try adding a step so everything continues * Workflow remaster (#30) * set default ref * only trigger version number if pullrequest * always run style * try skipping just a step * try adding a step so everything continues * maybe this does not fail them * skip ahead * do not skip the whole job, just the steps --- .github/workflows/qc_checks.yaml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/qc_checks.yaml b/.github/workflows/qc_checks.yaml index a9bb80f4ab..e772447025 100644 --- a/.github/workflows/qc_checks.yaml +++ b/.github/workflows/qc_checks.yaml @@ -35,8 +35,12 @@ jobs: - name: Checkout Code uses: actions/checkout@v2 - name: Check version number + if: ${{ github.event_name == 'pull_request' }} run: | python3 ci/check_version_number.py --branch ${{ github.base_ref }} + - name: Finish + if: always() + run: echo 'done' pep_style: name: PEP style (python) From 008c52ef39bf71738fa8eefd74464aaff638445f Mon Sep 17 00:00:00 2001 From: Oliver Date: Sat, 4 Dec 2021 13:08:00 +1100 Subject: [PATCH 116/129] Allocation by serial number now moved to the API --- InvenTree/order/api.py | 25 +++ InvenTree/order/forms.py | 44 +---- InvenTree/order/models.py | 1 + InvenTree/order/serializers.py | 172 ++++++++++++++++- .../order/so_allocate_by_serial.html | 12 -- InvenTree/order/urls.py | 5 - InvenTree/order/views.py | 173 ------------------ InvenTree/templates/js/translated/order.js | 27 ++- 8 files changed, 213 insertions(+), 246 deletions(-) delete mode 100644 InvenTree/order/templates/order/so_allocate_by_serial.html diff --git a/InvenTree/order/api.py b/InvenTree/order/api.py index 4a06bd76d5..a46215fb0d 100644 --- a/InvenTree/order/api.py +++ b/InvenTree/order/api.py @@ -699,6 +699,30 @@ class SalesOrderComplete(generics.CreateAPIView): return ctx +class SalesOrderAllocateSerials(generics.CreateAPIView): + """ + API endpoint to allocation stock items against a SalesOrder, + by specifying serial numbers. + """ + + queryset = models.SalesOrder.objects.none() + serializer_class = serializers.SOSerialAllocationSerializer + + def get_serializer_context(self): + + ctx = super().get_serializer_context() + + # Pass through the SalesOrder object to the serializer + try: + ctx['order'] = models.SalesOrder.objects.get(pk=self.kwargs.get('pk', None)) + except: + pass + + ctx['request'] = self.request + + return ctx + + class SalesOrderAllocate(generics.CreateAPIView): """ API endpoint to allocate stock items against a SalesOrder @@ -944,6 +968,7 @@ order_api_urls = [ url(r'^(?P\d+)/', include([ url(r'^complete/', SalesOrderComplete.as_view(), name='api-so-complete'), url(r'^allocate/', SalesOrderAllocate.as_view(), name='api-so-allocate'), + url(r'^allocate-serials/', SalesOrderAllocateSerials.as_view(), name='api-so-allocate-serials'), url(r'^.*$', SODetail.as_view(), name='api-so-detail'), ])), diff --git a/InvenTree/order/forms.py b/InvenTree/order/forms.py index a5a3ddc0f1..3eb5566a1e 100644 --- a/InvenTree/order/forms.py +++ b/InvenTree/order/forms.py @@ -15,10 +15,8 @@ from InvenTree.helpers import clean_decimal from common.forms import MatchItemForm -import part.models - from .models import PurchaseOrder -from .models import SalesOrder, SalesOrderLineItem +from .models import SalesOrder class IssuePurchaseOrderForm(HelperForm): @@ -65,46 +63,6 @@ class CancelSalesOrderForm(HelperForm): ] -class AllocateSerialsToSalesOrderForm(forms.Form): - """ - Form for assigning stock to a sales order, - by serial number lookup - - TODO: Refactor this form / view to use the new API forms interface - """ - - line = forms.ModelChoiceField( - queryset=SalesOrderLineItem.objects.all(), - ) - - part = forms.ModelChoiceField( - queryset=part.models.Part.objects.all(), - ) - - serials = forms.CharField( - label=_("Serial Numbers"), - required=True, - help_text=_('Enter stock item serial numbers'), - ) - - quantity = forms.IntegerField( - label=_('Quantity'), - required=True, - help_text=_('Enter quantity of stock items'), - initial=1, - min_value=1 - ) - - class Meta: - - fields = [ - 'line', - 'part', - 'serials', - 'quantity', - ] - - class OrderMatchItemForm(MatchItemForm): """ Override MatchItemForm fields """ diff --git a/InvenTree/order/models.py b/InvenTree/order/models.py index 4ab0d6621c..c036e15190 100644 --- a/InvenTree/order/models.py +++ b/InvenTree/order/models.py @@ -725,6 +725,7 @@ class SalesOrder(Order): def pending_shipment_count(self): return self.pending_shipments().count() + class PurchaseOrderAttachment(InvenTreeAttachment): """ Model for storing file attachments against a PurchaseOrder object diff --git a/InvenTree/order/serializers.py b/InvenTree/order/serializers.py index 1c2e9c76bd..fd43164833 100644 --- a/InvenTree/order/serializers.py +++ b/InvenTree/order/serializers.py @@ -21,7 +21,7 @@ from common.settings import currency_code_mappings from company.serializers import CompanyBriefSerializer, SupplierPartSerializer from InvenTree.serializers import InvenTreeAttachmentSerializer -from InvenTree.helpers import normalize +from InvenTree.helpers import normalize, extract_serial_numbers from InvenTree.serializers import InvenTreeModelSerializer from InvenTree.serializers import InvenTreeDecimalField from InvenTree.serializers import InvenTreeMoneySerializer @@ -724,7 +724,7 @@ class SOShipmentAllocationItemSerializer(serializers.Serializer): def validate(self, data): - super().validate(data) + data = super().validate(data) stock_item = data['stock_item'] quantity = data['quantity'] @@ -760,6 +760,169 @@ class SalesOrderCompleteSerializer(serializers.Serializer): order.complete_order(user) +class SOSerialAllocationSerializer(serializers.Serializer): + """ + DRF serializer for allocation of serial numbers against a sales order / shipment + """ + + class Meta: + fields = [ + 'line_item', + 'quantity', + 'serial_numbers', + 'shipment', + ] + + line_item = serializers.PrimaryKeyRelatedField( + queryset=order.models.SalesOrderLineItem.objects.all(), + many=False, + required=True, + allow_null=False, + label=_('Line Item'), + ) + + def validate_line_item(self, line_item): + """ + Ensure that the line_item is valid + """ + + order = self.context['order'] + + # Ensure that the line item points to the correct order + if line_item.order != order: + raise ValidationError(_("Line item is not associated with this order")) + + return line_item + + quantity = serializers.IntegerField( + min_value=1, + required=True, + allow_null=False, + label=_('Quantity'), + ) + + serial_numbers = serializers.CharField( + label=_("Serial Numbers"), + help_text=_("Enter serial numbers to allocate"), + required=True, + allow_blank=False, + ) + + shipment = serializers.PrimaryKeyRelatedField( + queryset=order.models.SalesOrderShipment.objects.all(), + many=False, + allow_null=False, + required=True, + label=_('Shipment'), + ) + + def validate_shipment(self, shipment): + """ + Validate the shipment: + + - Must point to the same order + - Must not be shipped + """ + + order = self.context['order'] + + if shipment.shipment_date is not None: + raise ValidationError(_("Shipment has already been shipped")) + + if shipment.order != order: + raise ValidationError(_("Shipment is not associated with this order")) + + return shipment + + def validate(self, data): + """ + Validation for the serializer: + + - Ensure the serial_numbers and quantity fields match + - Check that all serial numbers exist + - Check that the serial numbers are not yet allocated + """ + + data = super().validate(data) + + line_item = data['line_item'] + quantity = data['quantity'] + serial_numbers = data['serial_numbers'] + + part = line_item.part + + try: + data['serials'] = extract_serial_numbers(serial_numbers, quantity) + except DjangoValidationError as e: + raise ValidationError({ + 'serial_numbers': e.messages, + }) + + serials_not_exist = [] + serials_allocated = [] + stock_items_to_allocate = [] + + for serial in data['serials']: + items = stock.models.StockItem.objects.filter( + part=part, + serial=serial, + quantity=1, + ) + + if not items.exists(): + serials_not_exist.append(str(serial)) + continue + + stock_item = items[0] + + if stock_item.unallocated_quantity() == 1: + stock_items_to_allocate.append(stock_item) + else: + serials_allocated.append(str(serial)) + + if len(serials_not_exist) > 0: + + error_msg = _("No match found for the following serial numbers") + error_msg += ": " + error_msg += ",".join(serials_not_exist) + + raise ValidationError({ + 'serial_numbers': error_msg + }) + + if len(serials_allocated) > 0: + + error_msg = _("The following serial numbers are already allocated") + error_msg += ": " + error_msg += ",".join(serials_allocated) + + raise ValidationError({ + 'serial_numbers': error_msg, + }) + + data['stock_items'] = stock_items_to_allocate + + return data + + def save(self): + + data = self.validated_data + + line_item = data['line_item'] + stock_items = data['stock_items'] + shipment = data['shipment'] + + with transaction.atomic(): + for stock_item in stock_items: + # Create a new SalesOrderAllocation + order.models.SalesOrderAllocation.objects.create( + line=line_item, + item=stock_item, + quantity=1, + shipment=shipment + ) + + class SOShipmentAllocationSerializer(serializers.Serializer): """ DRF serializer for allocation of stock items against a sales order / shipment @@ -833,11 +996,6 @@ class SOShipmentAllocationSerializer(serializers.Serializer): shipment=shipment, ) - try: - pass - except (ValidationError, DjangoValidationError) as exc: - raise ValidationError(detail=serializers.as_serializer_error(exc)) - class SOAttachmentSerializer(InvenTreeAttachmentSerializer): """ diff --git a/InvenTree/order/templates/order/so_allocate_by_serial.html b/InvenTree/order/templates/order/so_allocate_by_serial.html deleted file mode 100644 index 3e11d658c7..0000000000 --- a/InvenTree/order/templates/order/so_allocate_by_serial.html +++ /dev/null @@ -1,12 +0,0 @@ -{% extends "modal_form.html" %} -{% load i18n %} - -{% block pre_form_content %} - -
    - {% include "hover_image.html" with image=part.image hover=true %}{{ part }} -
    - {% trans "Allocate stock items by serial number" %} -
    - -{% endblock %} \ No newline at end of file diff --git a/InvenTree/order/urls.py b/InvenTree/order/urls.py index 8cf472e0ae..504145892a 100644 --- a/InvenTree/order/urls.py +++ b/InvenTree/order/urls.py @@ -41,11 +41,6 @@ sales_order_detail_urls = [ ] sales_order_urls = [ - # URLs for sales order allocations - url(r'^allocation/', include([ - url(r'^assign-serials/', views.SalesOrderAssignSerials.as_view(), name='so-assign-serials'), - ])), - # Display detail view for a single SalesOrder url(r'^(?P\d+)/', include(sales_order_detail_urls)), diff --git a/InvenTree/order/views.py b/InvenTree/order/views.py index 6eec7145ee..c89d2a77b1 100644 --- a/InvenTree/order/views.py +++ b/InvenTree/order/views.py @@ -9,12 +9,10 @@ from django.db import transaction from django.db.utils import IntegrityError from django.http.response import JsonResponse from django.shortcuts import get_object_or_404 -from django.core.exceptions import ValidationError from django.urls import reverse from django.http import HttpResponseRedirect from django.utils.translation import ugettext_lazy as _ from django.views.generic import DetailView, ListView -from django.views.generic.edit import FormMixin from django.forms import HiddenInput, IntegerField import logging @@ -22,7 +20,6 @@ from decimal import Decimal, InvalidOperation from .models import PurchaseOrder, PurchaseOrderLineItem from .models import SalesOrder, SalesOrderLineItem -from .models import SalesOrderAllocation from .admin import POLineItemResource, SOLineItemResource from build.models import Build from company.models import Company, SupplierPart # ManufacturerPart @@ -38,7 +35,6 @@ from part.views import PartPricing from InvenTree.views import AjaxView, AjaxUpdateView from InvenTree.helpers import DownloadFile, str2bool -from InvenTree.helpers import extract_serial_numbers from InvenTree.views import InvenTreeRoleMixin from InvenTree.status_codes import PurchaseOrderStatus @@ -792,175 +788,6 @@ class OrderParts(AjaxView): order.add_line_item(supplier_part, quantity, purchase_price=purchase_price) -class SalesOrderAssignSerials(AjaxView, FormMixin): - """ - View for assigning stock items to a sales order, - by serial number lookup. - """ - # TODO: Remove this class and replace with an API endpoint - - model = SalesOrderAllocation - role_required = 'sales_order.change' - ajax_template_name = 'order/so_allocate_by_serial.html' - ajax_form_title = _('Allocate Serial Numbers') - form_class = order_forms.AllocateSerialsToSalesOrderForm - - # Keep track of SalesOrderLineItem and Part references - line = None - part = None - - def get_initial(self): - """ - Initial values are passed as query params - """ - - initials = super().get_initial() - - try: - self.line = SalesOrderLineItem.objects.get(pk=self.request.GET.get('line', None)) - initials['line'] = self.line - except (ValueError, SalesOrderLineItem.DoesNotExist): - pass - - try: - self.part = Part.objects.get(pk=self.request.GET.get('part', None)) - initials['part'] = self.part - except (ValueError, Part.DoesNotExist): - pass - - return initials - - def post(self, request, *args, **kwargs): - - self.form = self.get_form() - - # Validate the form - self.form.is_valid() - self.validate() - - valid = self.form.is_valid() - - if valid: - self.allocate_items() - - data = { - 'form_valid': valid, - 'form_errors': self.form.errors.as_json(), - 'non_field_errors': self.form.non_field_errors().as_json(), - 'success': _("Allocated {n} items").format(n=len(self.stock_items)) - } - - return self.renderJsonResponse(request, self.form, data) - - def validate(self): - - data = self.form.cleaned_data - - # Extract hidden fields from posted data - self.line = data.get('line', None) - self.part = data.get('part', None) - - if self.line: - self.form.fields['line'].widget = HiddenInput() - else: - self.form.add_error('line', _('Select line item')) - - if self.part: - self.form.fields['part'].widget = HiddenInput() - else: - self.form.add_error('part', _('Select part')) - - if not self.form.is_valid(): - return - - # Form is otherwise valid - check serial numbers - serials = data.get('serials', '') - quantity = data.get('quantity', 1) - - # Save a list of serial_numbers - self.serial_numbers = None - self.stock_items = [] - - try: - self.serial_numbers = extract_serial_numbers(serials, quantity) - - for serial in self.serial_numbers: - try: - # Find matching stock item - stock_item = StockItem.objects.get( - part=self.part, - serial=serial - ) - except StockItem.DoesNotExist: - self.form.add_error( - 'serials', - _('No matching item for serial {serial}').format(serial=serial) - ) - continue - - # Now we have a valid stock item - but can it be added to the sales order? - - # If not in stock, cannot be added to the order - if not stock_item.in_stock: - self.form.add_error( - 'serials', - _('{serial} is not in stock').format(serial=serial) - ) - continue - - # Already allocated to an order - if stock_item.is_allocated(): - self.form.add_error( - 'serials', - _('{serial} already allocated to an order').format(serial=serial) - ) - continue - - # Add it to the list! - self.stock_items.append(stock_item) - - except ValidationError as e: - self.form.add_error('serials', e.messages) - - def allocate_items(self): - """ - Create stock item allocations for each selected serial number - """ - - for stock_item in self.stock_items: - SalesOrderAllocation.objects.create( - item=stock_item, - line=self.line, - quantity=1, - ) - - def get_form(self): - - form = super().get_form() - - if self.line: - form.fields['line'].widget = HiddenInput() - - if self.part: - form.fields['part'].widget = HiddenInput() - - return form - - def get_context_data(self): - return { - 'line': self.line, - 'part': self.part, - } - - def get(self, request, *args, **kwargs): - - return self.renderJsonResponse( - request, - self.get_form(), - context=self.get_context_data(), - ) - - class LineItemPricing(PartPricing): """ View for inspecting part pricing information """ diff --git a/InvenTree/templates/js/translated/order.js b/InvenTree/templates/js/translated/order.js index 58c86d1894..df8821fe07 100644 --- a/InvenTree/templates/js/translated/order.js +++ b/InvenTree/templates/js/translated/order.js @@ -2357,15 +2357,30 @@ function loadSalesOrderLineItemTable(table, options={}) { $(table).find('.button-add-by-sn').click(function() { var pk = $(this).attr('pk'); - // TODO: Migrate this form to the API forms inventreeGet(`/api/order/so-line/${pk}/`, {}, { success: function(response) { - launchModalForm('{% url "so-assign-serials" %}', { - success: reloadTable, - data: { - line: pk, - part: response.part, + + constructForm(`/api/order/so/${options.order}/allocate-serials/`, { + method: 'POST', + title: '{% trans "Allocate Serial Numbers" %}', + fields: { + line_item: { + value: pk, + hidden: true, + }, + quantity: {}, + serial_numbers: {}, + shipment: { + filters: { + order: options.order, + shipped: false, + }, + auto_fill: true, + } + }, + onSuccess: function() { + $(table).bootstrapTable('refresh'); } }); } From 31398b4c10d2732fa132c539c222e9b19d22a2ca Mon Sep 17 00:00:00 2001 From: Oliver Date: Sat, 4 Dec 2021 13:50:11 +1100 Subject: [PATCH 117/129] Sales order can now be completed via the API --- InvenTree/order/api.py | 2 +- InvenTree/order/models.py | 44 ++++++++++++++----- InvenTree/order/serializers.py | 11 ++++- .../templates/order/sales_order_base.html | 9 +++- 4 files changed, 50 insertions(+), 16 deletions(-) diff --git a/InvenTree/order/api.py b/InvenTree/order/api.py index a46215fb0d..1ae6ae0184 100644 --- a/InvenTree/order/api.py +++ b/InvenTree/order/api.py @@ -683,7 +683,7 @@ class SalesOrderComplete(generics.CreateAPIView): """ queryset = models.SalesOrder.objects.all() - serializer_class = serializers.SalesOrderShipmentCompleteSerializer + serializer_class = serializers.SalesOrderCompleteSerializer def get_serializer_context(self): diff --git a/InvenTree/order/models.py b/InvenTree/order/models.py index c036e15190..434e6a9d15 100644 --- a/InvenTree/order/models.py +++ b/InvenTree/order/models.py @@ -621,23 +621,43 @@ class SalesOrder(Order): return self.lines.count() > 0 and all([line.is_completed() for line in self.lines.all()]) + def can_complete(self, raise_error=False): + """ + Test if this SalesOrder can be completed. + + Throws a ValidationError if cannot be completed. + """ + + # Order without line items cannot be completed + if self.lines.count() == 0: + if raise_error: + raise ValidationError(_('Order cannot be completed as no parts have been assigned')) + + # Only a PENDING order can be marked as SHIPPED + elif self.status != SalesOrderStatus.PENDING: + if raise_error: + raise ValidationError(_('Only a pending order can be marked as complete')) + + elif self.pending_shipment_count > 0: + if raise_error: + raise ValidationError(_("Order cannot be completed as there are incomplete shipments")) + + elif self.pending_line_count > 0: + if raise_error: + raise ValidationError(_("Order cannot be completed as there are incomplete line items")) + + else: + return True + + return False + def complete_order(self, user): """ Mark this order as "complete" """ - if self.lines.count() == 0: - # Order without line items cannot be completed - raise ValidationError(_('Order cannot be completed as no parts have been assigned')) - - if self.status != SalesOrderStatus.PENDING: - # Only a PENDING order can be marked as SHIPPED - raise ValidationError(_('Only a pending order can be marked as complete')) - - # Check if there are any incomplete shipments - for shipment in self.shipments.all(): - if not shipment.shipment_date: - raise ValidationError(_('Order cannot be completed as there are pending shipments')) + if not self.can_complete(): + return self.status = SalesOrderStatus.SHIPPED self.shipped_by = user diff --git a/InvenTree/order/serializers.py b/InvenTree/order/serializers.py index fd43164833..32e50943b1 100644 --- a/InvenTree/order/serializers.py +++ b/InvenTree/order/serializers.py @@ -749,11 +749,20 @@ class SalesOrderCompleteSerializer(serializers.Serializer): DRF serializer for manually marking a sales order as complete """ + def validate(self, data): + + data = super().validate(data) + + order = self.context['order'] + + order.can_complete(raise_error=True) + + return data + def save(self): request = self.context['request'] order = self.context['order'] - # data = self.validated_data user = getattr(request, 'user', None) diff --git a/InvenTree/order/templates/order/sales_order_base.html b/InvenTree/order/templates/order/sales_order_base.html index 2781b26a30..c8718d54d8 100644 --- a/InvenTree/order/templates/order/sales_order_base.html +++ b/InvenTree/order/templates/order/sales_order_base.html @@ -63,7 +63,7 @@ src="{% static 'img/blank_image.png' %}"
    {% if order.status == SalesOrderStatus.PENDING %} - {% endif %} @@ -224,7 +224,12 @@ $("#cancel-order").click(function() { }); $("#complete-order").click(function() { - completeSalesOrder({{ order.pk }}); + constructForm('{% url "api-so-complete" order.id %}', { + method: 'POST', + title: '{% trans "Complete Sales Order" %}', + confirm: true, + reload: true, + }); }); {% if report_enabled %} From 9e35c52b1d114ad61e6345bb5e99678eeb441153 Mon Sep 17 00:00:00 2001 From: Oliver Date: Sat, 4 Dec 2021 17:30:13 +1100 Subject: [PATCH 118/129] unit testing fixes --- InvenTree/order/models.py | 4 +++- InvenTree/order/test_sales_order.py | 16 +++++++++++----- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/InvenTree/order/models.py b/InvenTree/order/models.py index 434e6a9d15..3a7d39d7b5 100644 --- a/InvenTree/order/models.py +++ b/InvenTree/order/models.py @@ -657,7 +657,7 @@ class SalesOrder(Order): """ if not self.can_complete(): - return + return False self.status = SalesOrderStatus.SHIPPED self.shipped_by = user @@ -665,6 +665,8 @@ class SalesOrder(Order): self.save() + return True + def can_cancel(self): """ Return True if this order can be cancelled diff --git a/InvenTree/order/test_sales_order.py b/InvenTree/order/test_sales_order.py index a4fda63a46..d43c94996c 100644 --- a/InvenTree/order/test_sales_order.py +++ b/InvenTree/order/test_sales_order.py @@ -132,9 +132,12 @@ class SalesOrderTest(TestCase): self.assertEqual(SalesOrderAllocation.objects.count(), 0) self.assertEqual(self.order.status, status.SalesOrderStatus.CANCELLED) - # Now try to ship it - should fail with self.assertRaises(ValidationError): - self.order.complete_order(None) + self.order.can_complete(raise_error=True) + + # Now try to ship it - should fail + result = self.order.complete_order(None) + self.assertFalse(result) def test_complete_order(self): # Allocate line items, then ship the order @@ -149,8 +152,9 @@ class SalesOrderTest(TestCase): self.assertEqual(SalesOrderAllocation.objects.count(), 2) # Attempt to complete the order (but shipments are not completed!) - with self.assertRaises(ValidationError): - self.order.complete_order(None) + result = self.order.complete_order(None) + + self.assertFalse(result) self.assertIsNone(self.shipment.shipment_date) self.assertFalse(self.shipment.is_complete()) @@ -160,7 +164,9 @@ class SalesOrderTest(TestCase): self.assertTrue(self.shipment.is_complete()) # Now, should be OK to ship - self.order.complete_order(None) + result = self.order.complete_order(None) + + self.assertTrue(result) self.assertEqual(self.order.status, status.SalesOrderStatus.SHIPPED) self.assertIsNotNone(self.order.shipment_date) From 9ec5e39c503cb0817f80a09e0549d98fb858013c Mon Sep 17 00:00:00 2001 From: Oliver Date: Sat, 4 Dec 2021 17:50:25 +1100 Subject: [PATCH 119/129] js tweaks --- InvenTree/templates/js/translated/order.js | 26 +++++++++++++++++----- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/InvenTree/templates/js/translated/order.js b/InvenTree/templates/js/translated/order.js index df8821fe07..fefa82475c 100644 --- a/InvenTree/templates/js/translated/order.js +++ b/InvenTree/templates/js/translated/order.js @@ -2017,8 +2017,9 @@ function showFulfilledSubTable(index, row, element, options) { queryParams: { part: row.part, sales_order: options.order, + location_detail: true, }, - showHeader: false, + showHeader: true, columns: [ { field: 'pk', @@ -2026,6 +2027,7 @@ function showFulfilledSubTable(index, row, element, options) { }, { field: 'stock', + title: '{% trans "Stock Item" %}', formatter: function(value, row) { var text = ''; if (row.serial && row.quantity == 1) { @@ -2037,11 +2039,25 @@ function showFulfilledSubTable(index, row, element, options) { return renderLink(text, `/stock/item/${row.pk}/`); }, }, - /* { - field: 'po' - }, - */ + field: 'location', + title: '{% trans "Location" %}', + formatter: function(value, row) { + if (row.customer) { + return renderLink( + '{% trans "Shipped to customer" %}', + `/company/${row.customer}/` + ); + } else if (row.location && row.location_detail) { + return renderLink( + row.location_detail.pathstring, + `/stock/location/${row.location}`, + ); + } else { + return `{% trans "Stock location not specified" %}`; + } + } + } ], }); } From ab80980b5ac41701cedd488ea205bf6c9168131d Mon Sep 17 00:00:00 2001 From: Oliver Date: Sat, 4 Dec 2021 19:11:17 +1100 Subject: [PATCH 120/129] Translation merge (#2418) * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * updated translation base * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * updated translation base * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * updated translation base * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * updated translation base * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * updated translation base * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * updated translation base * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- InvenTree/locale/de/LC_MESSAGES/django.po | 1568 +++++++++-------- InvenTree/locale/el/LC_MESSAGES/django.po | 1562 ++++++++-------- InvenTree/locale/en/LC_MESSAGES/django.po | 766 ++++---- InvenTree/locale/es/LC_MESSAGES/django.po | 1588 +++++++++-------- InvenTree/locale/es_MX/LC_MESSAGES/django.po | 766 ++++---- InvenTree/locale/fr/LC_MESSAGES/django.po | 1562 ++++++++-------- InvenTree/locale/he/LC_MESSAGES/django.po | 1562 ++++++++-------- InvenTree/locale/id/LC_MESSAGES/django.po | 1562 ++++++++-------- InvenTree/locale/it/LC_MESSAGES/django.po | 1570 +++++++++-------- InvenTree/locale/ja/LC_MESSAGES/django.po | 1562 ++++++++-------- InvenTree/locale/ko/LC_MESSAGES/django.po | 1562 ++++++++-------- InvenTree/locale/nl/LC_MESSAGES/django.po | 1664 +++++++++--------- InvenTree/locale/no/LC_MESSAGES/django.po | 1562 ++++++++-------- InvenTree/locale/pl/LC_MESSAGES/django.po | 1562 ++++++++-------- InvenTree/locale/pt/LC_MESSAGES/django.po | 1562 ++++++++-------- InvenTree/locale/ru/LC_MESSAGES/django.po | 1654 ++++++++--------- InvenTree/locale/sv/LC_MESSAGES/django.po | 1562 ++++++++-------- InvenTree/locale/th/LC_MESSAGES/django.po | 1562 ++++++++-------- InvenTree/locale/tr/LC_MESSAGES/django.po | 1564 ++++++++-------- InvenTree/locale/vi/LC_MESSAGES/django.po | 1562 ++++++++-------- InvenTree/locale/zh/LC_MESSAGES/django.po | 1564 ++++++++-------- 21 files changed, 16297 insertions(+), 15151 deletions(-) diff --git a/InvenTree/locale/de/LC_MESSAGES/django.po b/InvenTree/locale/de/LC_MESSAGES/django.po index f85b16eccb..768f5a9304 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-11-30 21:49+0000\n" -"PO-Revision-Date: 2021-11-30 21:52\n" +"POT-Creation-Date: 2021-12-03 10:37+0000\n" +"PO-Revision-Date: 2021-12-03 11:26\n" "Last-Translator: \n" "Language-Team: German\n" "Language: de_DE\n" @@ -114,129 +114,130 @@ msgstr "Keine Seriennummern gefunden" msgid "Number of unique serial number ({s}) must match quantity ({q})" msgstr "Anzahl der eindeutigen Seriennummern ({s}) muss mit der Anzahl ({q}) übereinstimmen" -#: InvenTree/models.py:114 +#: InvenTree/models.py:120 msgid "Missing file" msgstr "Fehlende Datei" -#: InvenTree/models.py:115 +#: InvenTree/models.py:121 msgid "Missing external link" msgstr "Fehlender externer Link" -#: InvenTree/models.py:126 stock/models.py:1874 +#: InvenTree/models.py:132 stock/models.py:1864 #: templates/js/translated/attachment.js:117 msgid "Attachment" msgstr "Anhang" -#: InvenTree/models.py:127 +#: InvenTree/models.py:133 msgid "Select file to attach" msgstr "Datei zum Anhängen auswählen" -#: InvenTree/models.py:133 company/models.py:131 company/models.py:348 +#: InvenTree/models.py:139 company/models.py:131 company/models.py:348 #: company/models.py:564 order/models.py:163 part/models.py:797 #: report/templates/report/inventree_build_order_base.html:165 #: templates/js/translated/company.js:537 -#: templates/js/translated/company.js:826 templates/js/translated/part.js:1077 +#: templates/js/translated/company.js:826 templates/js/translated/part.js:1258 msgid "Link" msgstr "Link" -#: InvenTree/models.py:134 build/models.py:330 part/models.py:798 -#: stock/models.py:540 +#: InvenTree/models.py:140 build/models.py:330 part/models.py:798 +#: stock/models.py:530 msgid "Link to external URL" msgstr "Link zu einer externen URL" -#: InvenTree/models.py:137 templates/js/translated/attachment.js:161 +#: InvenTree/models.py:143 templates/js/translated/attachment.js:161 msgid "Comment" msgstr "Kommentar" -#: InvenTree/models.py:137 +#: InvenTree/models.py:143 msgid "File comment" msgstr "Datei-Kommentar" -#: InvenTree/models.py:143 InvenTree/models.py:144 common/models.py:1185 +#: InvenTree/models.py:149 InvenTree/models.py:150 common/models.py:1185 #: common/models.py:1186 part/models.py:2205 part/models.py:2225 #: report/templates/report/inventree_test_report_base.html:96 -#: templates/js/translated/stock.js:2084 +#: templates/js/translated/stock.js:2166 msgid "User" msgstr "Benutzer" -#: InvenTree/models.py:147 +#: InvenTree/models.py:153 msgid "upload date" msgstr "Hochladedatum" -#: InvenTree/models.py:170 +#: InvenTree/models.py:176 msgid "Filename must not be empty" msgstr "Dateiname darf nicht leer sein" -#: InvenTree/models.py:193 +#: InvenTree/models.py:199 msgid "Invalid attachment directory" msgstr "Ungültiges Verzeichnis für Anhang" -#: InvenTree/models.py:203 +#: InvenTree/models.py:209 #, python-brace-format msgid "Filename contains illegal character '{c}'" msgstr "Dateiname enthält ungültiges Zeichen '{c}'" -#: InvenTree/models.py:206 +#: InvenTree/models.py:212 msgid "Filename missing extension" msgstr "Dateiendung fehlt" -#: InvenTree/models.py:213 +#: InvenTree/models.py:219 msgid "Attachment with this filename already exists" msgstr "Anhang mit diesem Dateinamen bereits vorhanden" -#: InvenTree/models.py:220 +#: InvenTree/models.py:226 msgid "Error renaming file" msgstr "Fehler beim Umbenennen" -#: InvenTree/models.py:255 +#: InvenTree/models.py:261 msgid "Invalid choice" msgstr "Ungültige Auswahl" -#: InvenTree/models.py:271 InvenTree/models.py:272 company/models.py:415 +#: InvenTree/models.py:277 InvenTree/models.py:278 company/models.py:415 #: label/models.py:112 part/models.py:741 part/models.py:2389 -#: part/templates/part/detail.html:25 report/models.py:181 -#: templates/InvenTree/settings/settings.html:259 -#: templates/js/translated/company.js:638 templates/js/translated/part.js:499 -#: templates/js/translated/part.js:636 templates/js/translated/part.js:1384 -#: templates/js/translated/stock.js:1877 +#: report/models.py:181 templates/InvenTree/settings/settings.html:259 +#: templates/js/translated/company.js:638 templates/js/translated/part.js:506 +#: templates/js/translated/part.js:643 templates/js/translated/part.js:1565 +#: templates/js/translated/stock.js:1959 msgid "Name" msgstr "Name" -#: InvenTree/models.py:278 build/models.py:207 +#: InvenTree/models.py:284 build/models.py:207 #: build/templates/build/detail.html:25 company/models.py:354 -#: company/models.py:570 company/templates/company/manufacturer_part.html:80 -#: company/templates/company/supplier_part.html:81 label/models.py:119 -#: order/models.py:161 part/models.py:764 part/templates/part/detail.html:30 +#: company/models.py:570 company/templates/company/company_base.html:68 +#: company/templates/company/manufacturer_part.html:76 +#: company/templates/company/supplier_part.html:73 label/models.py:119 +#: order/models.py:161 part/models.py:764 part/templates/part/category.html:70 +#: part/templates/part/part_base.html:163 #: part/templates/part/set_category.html:14 report/models.py:194 #: report/models.py:553 report/models.py:592 #: report/templates/report/inventree_build_order_base.html:118 -#: stock/templates/stock/location.html:108 templates/js/translated/bom.js:215 +#: stock/templates/stock/location.html:89 templates/js/translated/bom.js:215 #: templates/js/translated/bom.js:428 templates/js/translated/build.js:1621 #: templates/js/translated/company.js:345 #: templates/js/translated/company.js:548 -#: templates/js/translated/company.js:837 templates/js/translated/order.js:673 -#: templates/js/translated/order.js:855 templates/js/translated/order.js:1091 -#: templates/js/translated/part.js:558 templates/js/translated/part.js:752 -#: templates/js/translated/part.js:837 templates/js/translated/part.js:1007 -#: templates/js/translated/part.js:1403 templates/js/translated/part.js:1472 -#: templates/js/translated/stock.js:1151 templates/js/translated/stock.js:1889 -#: templates/js/translated/stock.js:1934 +#: templates/js/translated/company.js:837 templates/js/translated/order.js:680 +#: templates/js/translated/order.js:854 templates/js/translated/order.js:1090 +#: templates/js/translated/part.js:565 templates/js/translated/part.js:933 +#: templates/js/translated/part.js:1018 templates/js/translated/part.js:1188 +#: templates/js/translated/part.js:1584 templates/js/translated/part.js:1653 +#: templates/js/translated/stock.js:1233 templates/js/translated/stock.js:1971 +#: templates/js/translated/stock.js:2016 msgid "Description" msgstr "Beschreibung" -#: InvenTree/models.py:279 +#: InvenTree/models.py:285 msgid "Description (optional)" msgstr "Beschreibung (optional)" -#: InvenTree/models.py:287 +#: InvenTree/models.py:293 msgid "parent" msgstr "Eltern" -#: InvenTree/serializers.py:62 part/models.py:2674 +#: InvenTree/serializers.py:65 part/models.py:2674 msgid "Must be a valid number" msgstr "Muss eine gültige Nummer sein" -#: InvenTree/serializers.py:285 +#: InvenTree/serializers.py:299 msgid "Filename" msgstr "Dateiname" @@ -361,7 +362,7 @@ msgid "Returned" msgstr "Zurückgegeben" #: InvenTree/status_codes.py:143 -#: order/templates/order/sales_order_base.html:147 +#: order/templates/order/sales_order_base.html:148 msgid "Shipped" msgstr "Versendet" @@ -566,7 +567,7 @@ msgid "Barcode associated with StockItem" msgstr "Barcode Lagerartikel zugeordnet" #: build/forms.py:36 build/models.py:1283 -#: build/templates/build/build_base.html:124 +#: build/templates/build/build_base.html:132 #: build/templates/build/detail.html:35 common/models.py:1225 #: company/forms.py:42 company/templates/company/supplier_part.html:251 #: order/forms.py:102 order/models.py:729 order/models.py:991 @@ -574,26 +575,27 @@ msgstr "Barcode Lagerartikel zugeordnet" #: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:223 #: part/forms.py:239 part/forms.py:255 part/models.py:2576 #: part/templates/part/bom_upload/match_parts.html:31 -#: part/templates/part/detail.html:1076 part/templates/part/detail.html:1162 +#: part/templates/part/detail.html:967 part/templates/part/detail.html:1053 #: part/templates/part/part_pricing.html:16 #: report/templates/report/inventree_build_order_base.html:114 #: report/templates/report/inventree_po_report.html:91 #: report/templates/report/inventree_so_report.html:91 #: report/templates/report/inventree_test_report_base.html:81 #: report/templates/report/inventree_test_report_base.html:139 -#: stock/forms.py:156 stock/serializers.py:286 -#: stock/templates/stock/item_base.html:256 +#: stock/forms.py:156 stock/serializers.py:291 +#: stock/templates/stock/item_base.html:174 #: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:443 #: templates/js/translated/build.js:235 templates/js/translated/build.js:435 #: templates/js/translated/build.js:629 templates/js/translated/build.js:639 #: templates/js/translated/build.js:1015 templates/js/translated/build.js:1362 #: templates/js/translated/model_renderers.js:99 -#: templates/js/translated/order.js:892 templates/js/translated/order.js:1205 -#: templates/js/translated/order.js:1283 templates/js/translated/order.js:1290 -#: templates/js/translated/order.js:1379 templates/js/translated/order.js:1479 -#: templates/js/translated/part.js:1615 templates/js/translated/part.js:1738 -#: templates/js/translated/part.js:1816 templates/js/translated/stock.js:377 -#: templates/js/translated/stock.js:2069 templates/js/translated/stock.js:2171 +#: templates/js/translated/order.js:891 templates/js/translated/order.js:1204 +#: templates/js/translated/order.js:1282 templates/js/translated/order.js:1289 +#: templates/js/translated/order.js:1378 templates/js/translated/order.js:1478 +#: templates/js/translated/part.js:843 templates/js/translated/part.js:1796 +#: templates/js/translated/part.js:1919 templates/js/translated/part.js:1997 +#: templates/js/translated/stock.js:378 templates/js/translated/stock.js:2151 +#: templates/js/translated/stock.js:2253 msgid "Quantity" msgstr "Anzahl" @@ -602,8 +604,8 @@ msgid "Enter quantity for build output" msgstr "Menge der Endprodukte angeben" #: build/forms.py:41 order/forms.py:96 stock/forms.py:95 -#: stock/serializers.py:307 templates/js/translated/stock.js:224 -#: templates/js/translated/stock.js:378 +#: stock/serializers.py:312 templates/js/translated/stock.js:225 +#: templates/js/translated/stock.js:379 msgid "Serial Numbers" msgstr "Seriennummer" @@ -646,7 +648,7 @@ msgstr "Bauauftrag" #: build/templates/build/index.html:8 build/templates/build/index.html:12 #: order/templates/order/sales_order_detail.html:42 #: order/templates/order/so_sidebar.html:7 -#: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:221 +#: part/templates/part/part_sidebar.html:20 templates/InvenTree/index.html:221 #: templates/InvenTree/search.html:145 #: templates/InvenTree/settings/sidebar.html:42 users/models.py:44 msgid "Build Orders" @@ -662,7 +664,7 @@ msgstr "Bauauftragsreferenz" #: report/templates/report/inventree_po_report.html:92 #: report/templates/report/inventree_so_report.html:92 #: templates/js/translated/bom.js:435 templates/js/translated/build.js:1119 -#: templates/js/translated/order.js:886 templates/js/translated/order.js:1473 +#: templates/js/translated/order.js:885 templates/js/translated/order.js:1472 msgid "Reference" msgstr "Referenz" @@ -670,7 +672,7 @@ msgstr "Referenz" msgid "Brief description of the build" msgstr "Kurze Beschreibung des Baus" -#: build/models.py:219 build/templates/build/build_base.html:156 +#: build/models.py:219 build/templates/build/build_base.html:164 #: build/templates/build/detail.html:88 msgid "Parent Build" msgstr "Eltern-Bauauftrag" @@ -679,7 +681,7 @@ msgstr "Eltern-Bauauftrag" msgid "BuildOrder to which this build is allocated" msgstr "Bauauftrag, zu dem dieser Bauauftrag zugwiesen ist" -#: build/models.py:225 build/templates/build/build_base.html:119 +#: build/models.py:225 build/templates/build/build_base.html:77 #: build/templates/build/detail.html:30 company/models.py:705 #: order/models.py:789 order/models.py:860 #: order/templates/order/order_wizard/select_parts.html:32 part/models.py:357 @@ -700,10 +702,10 @@ msgstr "Bauauftrag, zu dem dieser Bauauftrag zugwiesen ist" #: templates/js/translated/build.js:988 templates/js/translated/build.js:1359 #: templates/js/translated/build.js:1626 templates/js/translated/company.js:489 #: templates/js/translated/company.js:746 templates/js/translated/order.js:426 -#: templates/js/translated/order.js:840 templates/js/translated/order.js:1457 -#: templates/js/translated/part.js:737 templates/js/translated/part.js:818 -#: templates/js/translated/part.js:985 templates/js/translated/stock.js:508 -#: templates/js/translated/stock.js:1108 templates/js/translated/stock.js:2159 +#: templates/js/translated/order.js:839 templates/js/translated/order.js:1456 +#: templates/js/translated/part.js:918 templates/js/translated/part.js:999 +#: templates/js/translated/part.js:1166 templates/js/translated/stock.js:590 +#: templates/js/translated/stock.js:1190 templates/js/translated/stock.js:2241 msgid "Part" msgstr "Teil" @@ -751,7 +753,7 @@ msgstr "Fertiggestellte Teile" msgid "Number of stock items which have been completed" msgstr "Anzahl der fertigen Lagerartikel" -#: build/models.py:277 part/templates/part/part_base.html:216 +#: build/models.py:277 part/templates/part/part_base.html:234 msgid "Build Status" msgstr "Bauauftrags-Status" @@ -759,7 +761,7 @@ msgstr "Bauauftrags-Status" msgid "Build status code" msgstr "Bau-Statuscode" -#: build/models.py:285 stock/models.py:544 +#: build/models.py:285 stock/models.py:534 msgid "Batch Code" msgstr "Losnummer" @@ -768,7 +770,7 @@ msgid "Batch code for this build output" msgstr "Losnummer für dieses Endprodukt" #: build/models.py:292 order/models.py:165 part/models.py:936 -#: part/templates/part/detail.html:86 templates/js/translated/order.js:1104 +#: part/templates/part/part_base.html:313 templates/js/translated/order.js:1103 msgid "Creation Date" msgstr "Erstelldatum" @@ -797,12 +799,12 @@ msgstr "Aufgegeben von" msgid "User who issued this build order" msgstr "Nutzer der diesen Bauauftrag erstellt hat" -#: build/models.py:323 build/templates/build/build_base.html:177 +#: build/models.py:323 build/templates/build/build_base.html:185 #: build/templates/build/detail.html:116 order/models.py:179 -#: order/templates/order/order_base.html:154 -#: order/templates/order/sales_order_base.html:161 part/models.py:940 +#: order/templates/order/order_base.html:158 +#: order/templates/order/sales_order_base.html:162 part/models.py:940 #: report/templates/report/inventree_build_order_base.html:159 -#: templates/js/translated/build.js:1680 templates/js/translated/order.js:700 +#: templates/js/translated/build.js:1680 templates/js/translated/order.js:699 msgid "Responsible" msgstr "Verantwortlicher Benutzer" @@ -811,10 +813,10 @@ msgid "User responsible for this build order" msgstr "Nutzer der für diesen Bauauftrag zuständig ist" #: build/models.py:329 build/templates/build/detail.html:102 -#: company/templates/company/manufacturer_part.html:87 -#: company/templates/company/supplier_part.html:88 -#: part/templates/part/detail.html:80 stock/models.py:538 -#: stock/templates/stock/item_base.html:346 +#: company/templates/company/manufacturer_part.html:102 +#: company/templates/company/supplier_part.html:126 +#: part/templates/part/part_base.html:354 stock/models.py:528 +#: stock/templates/stock/item_base.html:374 msgid "External Link" msgstr "Externer Link" @@ -824,15 +826,15 @@ msgstr "Externer Link" #: order/models.py:183 order/models.py:738 #: order/templates/order/po_sidebar.html:11 #: order/templates/order/so_sidebar.html:11 part/models.py:925 -#: part/templates/part/detail.html:223 part/templates/part/part_sidebar.html:52 +#: part/templates/part/detail.html:116 part/templates/part/part_sidebar.html:50 #: report/templates/report/inventree_build_order_base.html:173 -#: stock/forms.py:154 stock/forms.py:204 stock/forms.py:238 stock/models.py:610 -#: stock/models.py:1774 stock/models.py:1880 stock/serializers.py:325 -#: stock/serializers.py:583 stock/templates/stock/stock_sidebar.html:21 +#: stock/forms.py:154 stock/forms.py:204 stock/forms.py:238 stock/models.py:600 +#: stock/models.py:1764 stock/models.py:1870 stock/serializers.py:330 +#: stock/serializers.py:588 stock/templates/stock/stock_sidebar.html:21 #: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:599 -#: templates/js/translated/company.js:842 templates/js/translated/order.js:985 -#: templates/js/translated/order.js:1583 templates/js/translated/stock.js:891 -#: templates/js/translated/stock.js:1370 +#: templates/js/translated/company.js:842 templates/js/translated/order.js:984 +#: templates/js/translated/order.js:1582 templates/js/translated/stock.js:973 +#: templates/js/translated/stock.js:1452 msgid "Notes" msgstr "Notizen" @@ -877,7 +879,7 @@ msgstr "Anzahl muss 1 für Objekte mit Seriennummer sein" msgid "Selected stock item not found in BOM" msgstr "Ausgewähltes Bestands-Objekt nicht in Stückliste für Teil '{p}' gefunden" -#: build/models.py:1253 stock/templates/stock/item_base.html:318 +#: build/models.py:1253 stock/templates/stock/item_base.html:346 #: templates/InvenTree/search.html:143 templates/js/translated/build.js:1599 #: templates/navbar.html:33 msgid "Build" @@ -890,11 +892,11 @@ msgstr "Bauauftrag starten um Teile zuzuweisen" #: build/models.py:1270 build/serializers.py:328 #: stock/templates/stock/item_base.html:8 #: stock/templates/stock/item_base.html:16 -#: stock/templates/stock/item_base.html:340 +#: stock/templates/stock/item_base.html:368 #: templates/js/translated/build.js:408 templates/js/translated/build.js:413 #: templates/js/translated/build.js:1361 templates/js/translated/build.js:1742 -#: templates/js/translated/order.js:1178 templates/js/translated/order.js:1183 -#: templates/js/translated/stock.js:2020 +#: templates/js/translated/order.js:1177 templates/js/translated/order.js:1182 +#: templates/js/translated/stock.js:2102 msgid "Stock Item" msgstr "Lagerartikel" @@ -934,16 +936,16 @@ msgstr "Dieses Endprodukt wurde bereits fertiggestellt" msgid "This build output is not fully allocated" msgstr "Dieses Endprodukt ist nicht vollständig zugewiesen" -#: build/serializers.py:190 order/serializers.py:219 order/serializers.py:287 -#: stock/forms.py:236 stock/serializers.py:318 stock/serializers.py:685 -#: stock/templates/stock/item_base.html:286 +#: build/serializers.py:190 order/serializers.py:228 order/serializers.py:296 +#: stock/forms.py:236 stock/serializers.py:323 stock/serializers.py:690 +#: stock/templates/stock/item_base.html:314 #: templates/js/translated/barcode.js:384 #: templates/js/translated/barcode.js:557 templates/js/translated/build.js:420 #: templates/js/translated/build.js:1027 templates/js/translated/order.js:348 -#: templates/js/translated/order.js:1190 templates/js/translated/order.js:1298 -#: templates/js/translated/order.js:1304 templates/js/translated/part.js:181 -#: templates/js/translated/stock.js:510 templates/js/translated/stock.js:1251 -#: templates/js/translated/stock.js:1961 +#: templates/js/translated/order.js:1189 templates/js/translated/order.js:1297 +#: templates/js/translated/order.js:1303 templates/js/translated/part.js:177 +#: templates/js/translated/stock.js:592 templates/js/translated/stock.js:1333 +#: templates/js/translated/stock.js:2043 msgid "Location" msgstr "Lagerort" @@ -951,13 +953,13 @@ msgstr "Lagerort" msgid "Location for completed build outputs" msgstr "Lagerort für fertige Endprodukte" -#: build/serializers.py:197 build/templates/build/build_base.html:129 +#: build/serializers.py:197 build/templates/build/build_base.html:137 #: build/templates/build/detail.html:63 order/models.py:572 -#: order/serializers.py:240 stock/templates/stock/item_base.html:409 +#: order/serializers.py:249 stock/templates/stock/item_base.html:180 #: templates/js/translated/barcode.js:140 templates/js/translated/build.js:1655 -#: templates/js/translated/order.js:431 templates/js/translated/order.js:677 -#: templates/js/translated/order.js:1096 templates/js/translated/stock.js:1226 -#: templates/js/translated/stock.js:2038 templates/js/translated/stock.js:2187 +#: templates/js/translated/order.js:431 templates/js/translated/order.js:1095 +#: templates/js/translated/stock.js:1308 templates/js/translated/stock.js:2120 +#: templates/js/translated/stock.js:2269 msgid "Status" msgstr "Status" @@ -986,8 +988,8 @@ msgstr "bom_item.part muss auf dasselbe Teil verweisen wie der Bauauftrag" msgid "Item must be in stock" msgstr "Teil muss auf Lager sein" -#: build/serializers.py:348 order/models.py:316 order/serializers.py:233 -#: stock/models.py:381 stock/models.py:1103 stock/serializers.py:298 +#: build/serializers.py:348 order/models.py:316 order/serializers.py:242 +#: stock/models.py:371 stock/models.py:1093 stock/serializers.py:303 msgid "Quantity must be greater than zero" msgstr "Anzahl muss größer Null sein" @@ -1031,7 +1033,7 @@ msgid "Edit Build" msgstr "Bauauftrag bearbeiten" #: build/templates/build/build_base.html:56 -#: build/templates/build/build_base.html:207 build/views.py:56 +#: build/templates/build/build_base.html:215 build/views.py:56 msgid "Cancel Build" msgstr "Bauauftrag abbrechen" @@ -1041,93 +1043,95 @@ msgstr "Bauauftrag löschen" #: build/templates/build/build_base.html:64 #: build/templates/build/build_base.html:65 -#: build/templates/build/build_base.html:223 +#: build/templates/build/build_base.html:231 msgid "Complete Build" msgstr "Bauauftrag fertigstellen" -#: build/templates/build/build_base.html:79 +#: build/templates/build/build_base.html:82 +msgid "Build Description" +msgstr "Baubeschreibung" + +#: build/templates/build/build_base.html:91 #, python-format msgid "This Build Order is allocated to Sales Order %(link)s" msgstr "Dieser Bauauftrag ist dem Auftrag %(link)s zugeordnet" -#: build/templates/build/build_base.html:86 +#: build/templates/build/build_base.html:98 #, python-format msgid "This Build Order is a child of Build Order %(link)s" msgstr "Dieser Bauauftrag ist dem Bauauftrag %(link)s untergeordnet" -#: build/templates/build/build_base.html:93 +#: build/templates/build/build_base.html:105 msgid "Build Order is ready to mark as completed" msgstr "Bauauftrag ist bereit abgeschlossen zu werden" -#: build/templates/build/build_base.html:98 +#: build/templates/build/build_base.html:110 msgid "Build Order cannot be completed as outstanding outputs remain" msgstr "Bauauftrag kann nicht abgeschlossen werden, da es noch ausstehende Endprodukte gibt" -#: build/templates/build/build_base.html:103 +#: build/templates/build/build_base.html:115 msgid "Required build quantity has not yet been completed" msgstr "Benötigte Teil-Anzahl wurde noch nicht fertiggestellt" -#: build/templates/build/build_base.html:108 +#: build/templates/build/build_base.html:120 msgid "Stock has not been fully allocated to this Build Order" msgstr "Bestand wurde Bauauftrag noch nicht vollständig zugewiesen" -#: build/templates/build/build_base.html:138 +#: build/templates/build/build_base.html:146 #: build/templates/build/detail.html:132 -#: order/templates/order/order_base.html:140 -#: order/templates/order/sales_order_base.html:140 +#: order/templates/order/order_base.html:144 +#: order/templates/order/sales_order_base.html:141 #: report/templates/report/inventree_build_order_base.html:126 -#: templates/js/translated/build.js:1692 templates/js/translated/order.js:690 -#: templates/js/translated/order.js:1109 +#: templates/js/translated/build.js:1692 templates/js/translated/order.js:689 +#: templates/js/translated/order.js:1108 msgid "Target Date" msgstr "Zieldatum" -#: build/templates/build/build_base.html:143 +#: build/templates/build/build_base.html:151 #, python-format msgid "This build was due on %(target)s" msgstr "Bauauftrag war fällig am %(target)s" -#: build/templates/build/build_base.html:143 -#: build/templates/build/build_base.html:188 -#: order/templates/order/order_base.html:81 -#: order/templates/order/order_base.html:102 -#: order/templates/order/sales_order_base.html:78 -#: order/templates/order/sales_order_base.html:107 +#: build/templates/build/build_base.html:151 +#: build/templates/build/build_base.html:196 +#: order/templates/order/order_base.html:98 +#: order/templates/order/sales_order_base.html:93 #: templates/js/translated/table_filters.js:294 #: templates/js/translated/table_filters.js:322 #: templates/js/translated/table_filters.js:339 msgid "Overdue" msgstr "Überfällig" -#: build/templates/build/build_base.html:150 +#: build/templates/build/build_base.html:158 #: build/templates/build/detail.html:68 build/templates/build/detail.html:143 #: templates/js/translated/build.js:1641 #: templates/js/translated/table_filters.js:304 msgid "Completed" msgstr "Fertig" -#: build/templates/build/build_base.html:163 +#: build/templates/build/build_base.html:171 #: build/templates/build/detail.html:95 order/models.py:857 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: order/templates/order/sales_order_ship.html:25 #: report/templates/report/inventree_build_order_base.html:136 #: report/templates/report/inventree_so_report.html:77 -#: stock/templates/stock/item_base.html:280 -#: templates/js/translated/order.js:1051 +#: stock/templates/stock/item_base.html:308 +#: templates/js/translated/order.js:1050 msgid "Sales Order" msgstr "Auftrag" -#: build/templates/build/build_base.html:170 +#: build/templates/build/build_base.html:178 #: build/templates/build/detail.html:109 #: report/templates/report/inventree_build_order_base.html:153 msgid "Issued By" msgstr "Aufgegeben von" -#: build/templates/build/build_base.html:215 +#: build/templates/build/build_base.html:223 msgid "Incomplete Outputs" msgstr "Unfertige Endprodukte" -#: build/templates/build/build_base.html:216 +#: build/templates/build/build_base.html:224 msgid "Build Order cannot be completed as incomplete build outputs remain" msgstr "Bauauftrag kann nicht abgeschlossen werden, da es noch unvollständige Endprodukte gibt" @@ -1188,7 +1192,7 @@ msgid "Stock can be taken from any available location." msgstr "Bestand kann jedem verfügbaren Lagerort entnommen werden." #: build/templates/build/detail.html:50 order/models.py:811 stock/forms.py:150 -#: templates/js/translated/order.js:432 templates/js/translated/order.js:974 +#: templates/js/translated/order.js:432 templates/js/translated/order.js:973 msgid "Destination" msgstr "Ziel-Lager" @@ -1201,16 +1205,16 @@ msgid "Allocated Parts" msgstr "Zugewiesene Teile" #: build/templates/build/detail.html:81 -#: stock/templates/stock/item_base.html:304 -#: templates/js/translated/stock.js:1240 templates/js/translated/stock.js:2194 +#: stock/templates/stock/item_base.html:332 +#: templates/js/translated/stock.js:1322 templates/js/translated/stock.js:2276 #: templates/js/translated/table_filters.js:151 #: templates/js/translated/table_filters.js:233 msgid "Batch" msgstr "Losnummer" #: build/templates/build/detail.html:127 -#: order/templates/order/order_base.html:127 -#: order/templates/order/sales_order_base.html:134 +#: order/templates/order/order_base.html:131 +#: order/templates/order/sales_order_base.html:135 #: templates/js/translated/build.js:1663 msgid "Created" msgstr "Erstellt" @@ -1254,7 +1258,7 @@ msgstr "Benötigte Teile bestellen" #: build/templates/build/detail.html:185 #: company/templates/company/detail.html:38 #: company/templates/company/detail.html:85 order/views.py:509 -#: part/templates/part/category.html:166 +#: part/templates/part/category.html:173 msgid "Order Parts" msgstr "Teile bestellen" @@ -1306,8 +1310,8 @@ msgstr "Fertiggestellte Endprodukte" #: order/templates/order/po_sidebar.html:9 #: order/templates/order/purchase_order_detail.html:60 #: order/templates/order/sales_order_detail.html:52 -#: order/templates/order/so_sidebar.html:9 part/templates/part/detail.html:300 -#: part/templates/part/part_sidebar.html:50 stock/templates/stock/item.html:95 +#: order/templates/order/so_sidebar.html:9 part/templates/part/detail.html:193 +#: part/templates/part/part_sidebar.html:48 stock/templates/stock/item.html:95 #: stock/templates/stock/stock_sidebar.html:19 msgid "Attachments" msgstr "Anhänge" @@ -1323,7 +1327,7 @@ msgstr "Bauauftrags-Notizen" #: order/templates/order/purchase_order_detail.html:108 #: order/templates/order/sales_order_detail.html:72 #: order/templates/order/sales_order_detail.html:99 -#: part/templates/part/detail.html:227 stock/templates/stock/item.html:115 +#: part/templates/part/detail.html:120 stock/templates/stock/item.html:115 #: stock/templates/stock/item.html:205 msgid "Edit Notes" msgstr "Anmerkungen bearbeiten" @@ -1336,7 +1340,7 @@ msgstr "Zuordnung abgeschlossen" msgid "All untracked stock items have been allocated" msgstr "Alle nicht verfolgten Lagerartikel wurden zugewiesen" -#: build/templates/build/index.html:18 part/templates/part/detail.html:407 +#: build/templates/build/index.html:18 part/templates/part/detail.html:300 msgid "New Build Order" msgstr "Neuer Bauauftrag" @@ -1380,7 +1384,7 @@ msgstr "Endprodukt anlegen" msgid "Maximum output quantity is " msgstr "Maximale Endproduktmenge ist " -#: build/views.py:122 stock/serializers.py:356 stock/views.py:1290 +#: build/views.py:122 stock/serializers.py:361 stock/views.py:1290 msgid "Serial numbers already exist" msgstr "Seriennummern existieren bereits" @@ -1675,7 +1679,7 @@ msgid "Parts are trackable by default" msgstr "Artikel sind grundsätzlich verfolgbar" #: common/models.py:745 part/models.py:920 -#: part/templates/part/part_base.html:144 +#: part/templates/part/part_base.html:147 #: templates/js/translated/table_filters.js:42 msgid "Virtual" msgstr "Virtuell" @@ -2142,7 +2146,7 @@ msgstr "Preisstaffelungs Anzahl" #: common/models.py:1233 company/serializers.py:264 #: company/templates/company/supplier_part.html:256 -#: templates/js/translated/part.js:1620 +#: templates/js/translated/part.js:852 templates/js/translated/part.js:1801 msgid "Price" msgstr "Preis" @@ -2206,7 +2210,7 @@ msgstr "Firmenbeschreibung" msgid "Description of the company" msgstr "Firmenbeschreibung" -#: company/models.py:112 company/templates/company/company_base.html:70 +#: company/models.py:112 company/templates/company/company_base.html:97 #: templates/js/translated/company.js:349 msgid "Website" msgstr "Website" @@ -2215,7 +2219,7 @@ msgstr "Website" msgid "Company website URL" msgstr "Firmenwebsite Adresse/URL" -#: company/models.py:117 company/templates/company/company_base.html:88 +#: company/models.py:117 company/templates/company/company_base.html:115 msgid "Address" msgstr "Adresse" @@ -2231,7 +2235,7 @@ msgstr "Kontakt-Tel." msgid "Contact phone number" msgstr "Kontakt-Telefon" -#: company/models.py:125 company/templates/company/company_base.html:102 +#: company/models.py:125 company/templates/company/company_base.html:129 #: templates/InvenTree/settings/user.html:47 msgid "Email" msgstr "Email" @@ -2240,7 +2244,7 @@ msgstr "Email" msgid "Contact email address" msgstr "Kontakt-Email" -#: company/models.py:128 company/templates/company/company_base.html:109 +#: company/models.py:128 company/templates/company/company_base.html:136 msgid "Contact" msgstr "Kontakt" @@ -2281,7 +2285,7 @@ msgid "Does this company manufacture parts?" msgstr "Produziert diese Firma Teile?" #: company/models.py:152 company/serializers.py:270 -#: company/templates/company/company_base.html:76 stock/serializers.py:172 +#: company/templates/company/company_base.html:103 stock/serializers.py:177 msgid "Currency" msgstr "Währung" @@ -2289,8 +2293,8 @@ msgstr "Währung" msgid "Default currency used for this company" msgstr "Standard-Währung für diese Firma" -#: company/models.py:320 company/models.py:535 stock/models.py:484 -#: stock/templates/stock/item_base.html:224 +#: company/models.py:320 company/models.py:535 stock/models.py:474 +#: stock/templates/stock/item_base.html:135 msgid "Base Part" msgstr "Basisteil" @@ -2298,29 +2302,29 @@ msgstr "Basisteil" msgid "Select part" msgstr "Teil auswählen" -#: company/models.py:335 company/templates/company/company_base.html:116 -#: company/templates/company/manufacturer_part.html:93 -#: company/templates/company/supplier_part.html:104 -#: stock/templates/stock/item_base.html:353 +#: company/models.py:335 company/templates/company/company_base.html:73 +#: company/templates/company/manufacturer_part.html:91 +#: company/templates/company/supplier_part.html:97 +#: stock/templates/stock/item_base.html:381 #: templates/js/translated/company.js:333 #: templates/js/translated/company.js:514 -#: templates/js/translated/company.js:797 templates/js/translated/part.js:229 +#: templates/js/translated/company.js:797 templates/js/translated/part.js:232 msgid "Manufacturer" msgstr "Hersteller" -#: company/models.py:336 templates/js/translated/part.js:230 +#: company/models.py:336 templates/js/translated/part.js:233 msgid "Select manufacturer" msgstr "Hersteller auswählen" -#: company/models.py:342 company/templates/company/manufacturer_part.html:97 -#: company/templates/company/supplier_part.html:112 +#: company/models.py:342 company/templates/company/manufacturer_part.html:96 +#: company/templates/company/supplier_part.html:105 #: templates/js/translated/company.js:530 -#: templates/js/translated/company.js:815 templates/js/translated/order.js:874 -#: templates/js/translated/part.js:240 +#: templates/js/translated/company.js:815 templates/js/translated/order.js:873 +#: templates/js/translated/part.js:243 templates/js/translated/part.js:832 msgid "MPN" msgstr "MPN" -#: company/models.py:343 templates/js/translated/part.js:241 +#: company/models.py:343 templates/js/translated/part.js:244 msgid "Manufacturer Part Number" msgstr "Hersteller-Teilenummer" @@ -2335,7 +2339,7 @@ msgstr "Teilbeschreibung des Herstellers" #: company/models.py:409 company/models.py:558 #: company/templates/company/manufacturer_part.html:6 #: company/templates/company/manufacturer_part.html:23 -#: stock/templates/stock/item_base.html:363 +#: stock/templates/stock/item_base.html:391 msgid "Manufacturer Part" msgstr "Herstellerteil" @@ -2345,8 +2349,8 @@ msgstr "Parametername" #: company/models.py:422 #: report/templates/report/inventree_test_report_base.html:95 -#: stock/models.py:1867 templates/js/translated/company.js:644 -#: templates/js/translated/part.js:645 templates/js/translated/stock.js:878 +#: stock/models.py:1857 templates/js/translated/company.js:644 +#: templates/js/translated/part.js:652 templates/js/translated/stock.js:960 msgid "Value" msgstr "Wert" @@ -2355,9 +2359,9 @@ msgid "Parameter value" msgstr "Parameterwert" #: company/models.py:429 part/models.py:882 part/models.py:2397 -#: part/templates/part/detail.html:59 +#: part/templates/part/part_base.html:288 #: templates/InvenTree/settings/settings.html:264 -#: templates/js/translated/company.js:650 templates/js/translated/part.js:651 +#: templates/js/translated/company.js:650 templates/js/translated/part.js:658 msgid "Units" msgstr "Einheiten" @@ -2369,28 +2373,28 @@ msgstr "Parametereinheit" msgid "Linked manufacturer part must reference the same base part" msgstr "Verlinktes Herstellerteil muss dasselbe Basisteil referenzieren" -#: company/models.py:545 company/templates/company/company_base.html:121 -#: company/templates/company/supplier_part.html:94 order/models.py:263 -#: order/templates/order/order_base.html:108 +#: company/models.py:545 company/templates/company/company_base.html:78 +#: company/templates/company/supplier_part.html:87 order/models.py:263 +#: order/templates/order/order_base.html:112 #: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:219 -#: part/bom.py:247 stock/templates/stock/item_base.html:370 +#: part/bom.py:247 stock/templates/stock/item_base.html:398 #: templates/js/translated/company.js:337 -#: templates/js/translated/company.js:771 templates/js/translated/order.js:660 -#: templates/js/translated/part.js:210 +#: templates/js/translated/company.js:771 templates/js/translated/order.js:667 +#: templates/js/translated/part.js:213 templates/js/translated/part.js:800 msgid "Supplier" msgstr "Zulieferer" -#: company/models.py:546 templates/js/translated/part.js:211 +#: company/models.py:546 templates/js/translated/part.js:214 msgid "Select supplier" msgstr "Zulieferer auswählen" -#: company/models.py:551 company/templates/company/supplier_part.html:98 -#: part/bom.py:220 part/bom.py:248 templates/js/translated/order.js:861 -#: templates/js/translated/part.js:221 +#: company/models.py:551 company/templates/company/supplier_part.html:91 +#: part/bom.py:220 part/bom.py:248 templates/js/translated/order.js:860 +#: templates/js/translated/part.js:224 templates/js/translated/part.js:818 msgid "SKU" msgstr "SKU (Lagerbestandseinheit)" -#: company/models.py:552 templates/js/translated/part.js:222 +#: company/models.py:552 templates/js/translated/part.js:225 msgid "Supplier stock keeping unit" msgstr "Lagerbestandseinheit (SKU) des Zulieferers" @@ -2406,7 +2410,7 @@ msgstr "Teil-URL des Zulieferers" msgid "Supplier part description" msgstr "Zuliefererbeschreibung des Teils" -#: company/models.py:576 company/templates/company/supplier_part.html:126 +#: company/models.py:576 company/templates/company/supplier_part.html:119 #: part/models.py:2588 report/templates/report/inventree_po_report.html:93 #: report/templates/report/inventree_so_report.html:93 msgid "Note" @@ -2420,9 +2424,9 @@ msgstr "Basiskosten" msgid "Minimum charge (e.g. stocking fee)" msgstr "Mindestpreis" -#: company/models.py:582 company/templates/company/supplier_part.html:119 -#: stock/models.py:507 stock/templates/stock/item_base.html:311 -#: templates/js/translated/company.js:847 templates/js/translated/stock.js:1366 +#: company/models.py:582 company/templates/company/supplier_part.html:112 +#: stock/models.py:497 stock/templates/stock/item_base.html:339 +#: templates/js/translated/company.js:847 templates/js/translated/stock.js:1448 msgid "Packaging" msgstr "Verpackungen" @@ -2457,43 +2461,56 @@ msgstr "Firma" msgid "Create Purchase Order" msgstr "Bestellung anlegen" -#: company/templates/company/company_base.html:27 +#: company/templates/company/company_base.html:26 +msgid "Company actions" +msgstr "Firmenaktionen" + +#: company/templates/company/company_base.html:31 msgid "Edit company information" msgstr "Firmeninformation bearbeiten" #: company/templates/company/company_base.html:32 -#: company/templates/company/company_base.html:148 +#: templates/js/translated/company.js:265 +msgid "Edit Company" +msgstr "Firma bearbeiten" + +#: company/templates/company/company_base.html:36 +msgid "Delete company" +msgstr "Unternehmen löschen" + +#: company/templates/company/company_base.html:37 +#: company/templates/company/company_base.html:159 msgid "Delete Company" msgstr "Firma löschen" -#: company/templates/company/company_base.html:48 +#: company/templates/company/company_base.html:53 #: part/templates/part/part_thumb.html:12 msgid "Upload new image" msgstr "Neues Bild hochladen" -#: company/templates/company/company_base.html:51 +#: company/templates/company/company_base.html:56 #: part/templates/part/part_thumb.html:14 msgid "Download image from URL" msgstr "Bild von URL herunterladen" -#: company/templates/company/company_base.html:81 -msgid "Uses default currency" -msgstr "verwendet Standard-Währung" - -#: company/templates/company/company_base.html:95 -msgid "Phone" -msgstr "Telefon" - -#: company/templates/company/company_base.html:126 order/models.py:567 -#: order/templates/order/sales_order_base.html:114 stock/models.py:525 -#: stock/models.py:526 stock/templates/stock/item_base.html:263 -#: templates/js/translated/company.js:329 templates/js/translated/order.js:1073 -#: templates/js/translated/stock.js:2002 +#: company/templates/company/company_base.html:83 order/models.py:567 +#: order/templates/order/sales_order_base.html:115 stock/models.py:515 +#: stock/models.py:516 stock/templates/stock/item_base.html:291 +#: templates/js/translated/company.js:329 templates/js/translated/order.js:1072 +#: templates/js/translated/stock.js:2084 msgid "Customer" msgstr "Kunde" -#: company/templates/company/company_base.html:194 -#: part/templates/part/part_base.html:342 +#: company/templates/company/company_base.html:108 +msgid "Uses default currency" +msgstr "verwendet Standard-Währung" + +#: company/templates/company/company_base.html:122 +msgid "Phone" +msgstr "Telefon" + +#: company/templates/company/company_base.html:205 +#: part/templates/part/part_base.html:471 msgid "Upload Image" msgstr "Bild hochladen" @@ -2509,23 +2526,23 @@ msgid "Create new supplier part" msgstr "Neues Zuliefererteil anlegen" #: company/templates/company/detail.html:20 -#: company/templates/company/manufacturer_part.html:112 -#: part/templates/part/detail.html:440 +#: company/templates/company/manufacturer_part.html:118 +#: part/templates/part/detail.html:333 msgid "New Supplier Part" msgstr "Neues Zuliefererteil" #: company/templates/company/detail.html:32 #: company/templates/company/detail.html:79 -#: company/templates/company/manufacturer_part.html:121 -#: company/templates/company/manufacturer_part.html:150 -#: part/templates/part/category.html:160 part/templates/part/detail.html:449 -#: part/templates/part/detail.html:477 +#: company/templates/company/manufacturer_part.html:127 +#: company/templates/company/manufacturer_part.html:156 +#: part/templates/part/category.html:167 part/templates/part/detail.html:342 +#: part/templates/part/detail.html:370 msgid "Options" msgstr "Optionen" #: company/templates/company/detail.html:37 #: company/templates/company/detail.html:84 -#: part/templates/part/category.html:166 +#: part/templates/part/category.html:173 msgid "Order parts" msgstr "Teile bestellen" @@ -2547,7 +2564,7 @@ msgstr "Herstellerteile" msgid "Create new manufacturer part" msgstr "Neues Herstellerteil anlegen" -#: company/templates/company/detail.html:67 part/templates/part/detail.html:467 +#: company/templates/company/detail.html:67 part/templates/part/detail.html:360 msgid "New Manufacturer Part" msgstr "Neues Herstellerteil" @@ -2561,7 +2578,7 @@ msgstr "Zulieferer-Bestand" #: order/templates/order/order_base.html:13 #: order/templates/order/purchase_orders.html:8 #: order/templates/order/purchase_orders.html:12 -#: part/templates/part/detail.html:171 part/templates/part/part_sidebar.html:35 +#: part/templates/part/detail.html:64 part/templates/part/part_sidebar.html:33 #: templates/InvenTree/index.html:252 templates/InvenTree/search.html:203 #: templates/InvenTree/settings/sidebar.html:44 templates/navbar.html:45 #: users/models.py:45 @@ -2583,7 +2600,7 @@ msgstr "Neue Bestellung" #: order/templates/order/sales_order_base.html:13 #: order/templates/order/sales_orders.html:8 #: order/templates/order/sales_orders.html:15 -#: part/templates/part/detail.html:194 part/templates/part/part_sidebar.html:39 +#: part/templates/part/detail.html:87 part/templates/part/part_sidebar.html:37 #: templates/InvenTree/index.html:283 templates/InvenTree/search.html:223 #: templates/InvenTree/settings/sidebar.html:46 templates/navbar.html:56 #: users/models.py:46 @@ -2610,14 +2627,14 @@ msgid "Company Notes" msgstr "Firmenbemerkungen" #: company/templates/company/detail.html:383 -#: company/templates/company/manufacturer_part.html:209 -#: part/templates/part/detail.html:520 +#: company/templates/company/manufacturer_part.html:215 +#: part/templates/part/detail.html:413 msgid "Delete Supplier Parts?" msgstr "Zuliefererteil entfernen?" #: company/templates/company/detail.html:384 -#: company/templates/company/manufacturer_part.html:210 -#: part/templates/part/detail.html:521 +#: company/templates/company/manufacturer_part.html:216 +#: part/templates/part/detail.html:414 msgid "All selected supplier parts will be deleted" msgstr "Alle ausgewählten Zulieferteile werden gelöscht" @@ -2634,7 +2651,7 @@ msgstr "Hersteller" #: company/templates/company/manufacturer_part.html:35 #: company/templates/company/supplier_part.html:34 #: company/templates/company/supplier_part.html:159 -#: part/templates/part/detail.html:174 part/templates/part/part_base.html:76 +#: part/templates/part/detail.html:67 part/templates/part/part_base.html:76 msgid "Order part" msgstr "Teil bestellen" @@ -2648,60 +2665,60 @@ msgstr "Herstellerteil bearbeiten" msgid "Delete manufacturer part" msgstr "Herstellerteil löschen" -#: company/templates/company/manufacturer_part.html:70 -#: company/templates/company/supplier_part.html:71 +#: company/templates/company/manufacturer_part.html:66 +#: company/templates/company/supplier_part.html:63 msgid "Internal Part" msgstr "Internes Teil" -#: company/templates/company/manufacturer_part.html:108 +#: company/templates/company/manufacturer_part.html:114 #: company/templates/company/supplier_part.html:15 company/views.py:49 -#: part/templates/part/part_sidebar.html:33 part/templates/part/prices.html:163 +#: part/templates/part/part_sidebar.html:31 part/templates/part/prices.html:163 #: templates/InvenTree/search.html:194 templates/navbar.html:43 msgid "Suppliers" msgstr "Zulieferer" -#: company/templates/company/manufacturer_part.html:123 -#: part/templates/part/detail.html:451 +#: company/templates/company/manufacturer_part.html:129 +#: part/templates/part/detail.html:344 msgid "Delete supplier parts" msgstr "Zuliefererteil entfernen" -#: company/templates/company/manufacturer_part.html:123 -#: company/templates/company/manufacturer_part.html:152 -#: company/templates/company/manufacturer_part.html:248 -#: part/templates/part/detail.html:451 part/templates/part/detail.html:479 +#: company/templates/company/manufacturer_part.html:129 +#: company/templates/company/manufacturer_part.html:158 +#: company/templates/company/manufacturer_part.html:254 +#: part/templates/part/detail.html:344 part/templates/part/detail.html:372 #: templates/js/translated/company.js:425 templates/js/translated/helpers.js:31 #: users/models.py:204 msgid "Delete" msgstr "Löschen" -#: company/templates/company/manufacturer_part.html:137 +#: company/templates/company/manufacturer_part.html:143 #: company/templates/company/manufacturer_part_sidebar.html:5 #: part/templates/part/category_sidebar.html:17 -#: part/templates/part/detail.html:277 part/templates/part/part_sidebar.html:10 +#: part/templates/part/detail.html:170 part/templates/part/part_sidebar.html:8 msgid "Parameters" msgstr "Parameter" -#: company/templates/company/manufacturer_part.html:141 -#: part/templates/part/detail.html:282 +#: company/templates/company/manufacturer_part.html:147 +#: part/templates/part/detail.html:175 #: templates/InvenTree/settings/category.html:12 #: templates/InvenTree/settings/part.html:65 msgid "New Parameter" msgstr "Neuer Parameter" -#: company/templates/company/manufacturer_part.html:152 +#: company/templates/company/manufacturer_part.html:158 msgid "Delete parameters" msgstr "Parameter löschen" -#: company/templates/company/manufacturer_part.html:185 -#: part/templates/part/detail.html:976 +#: company/templates/company/manufacturer_part.html:191 +#: part/templates/part/detail.html:867 msgid "Add Parameter" msgstr "Parameter hinzufügen" -#: company/templates/company/manufacturer_part.html:233 +#: company/templates/company/manufacturer_part.html:239 msgid "Selected parameters will be deleted" msgstr "Ausgewählte Parameter werden gelöscht" -#: company/templates/company/manufacturer_part.html:245 +#: company/templates/company/manufacturer_part.html:251 msgid "Delete Parameters" msgstr "Parameter löschen" @@ -2722,9 +2739,9 @@ msgid "Assigned Stock Items" msgstr "Zugewiesene Lagerartikel" #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 stock/models.py:492 -#: stock/templates/stock/item_base.html:375 -#: templates/js/translated/company.js:787 templates/js/translated/stock.js:1323 +#: company/templates/company/supplier_part.html:24 stock/models.py:482 +#: stock/templates/stock/item_base.html:403 +#: templates/js/translated/company.js:787 templates/js/translated/stock.js:1405 msgid "Supplier Part" msgstr "Zuliefererteil" @@ -2744,13 +2761,13 @@ msgid "Supplier Part Stock" msgstr "Zulieferer-Bestand" #: company/templates/company/supplier_part.html:141 -#: part/templates/part/detail.html:127 stock/templates/stock/location.html:147 +#: part/templates/part/detail.html:20 stock/templates/stock/location.html:162 msgid "Create new stock item" msgstr "Neuen Lagerartikel hinzufügen" #: company/templates/company/supplier_part.html:142 -#: part/templates/part/detail.html:128 stock/templates/stock/location.html:148 -#: templates/js/translated/stock.js:354 +#: part/templates/part/detail.html:21 stock/templates/stock/location.html:163 +#: templates/js/translated/stock.js:355 msgid "New Stock Item" msgstr "Neuer Lagerartikel" @@ -2760,7 +2777,7 @@ msgid "Supplier Part Orders" msgstr "Zulieferer-Bestellungen" #: company/templates/company/supplier_part.html:160 -#: part/templates/part/detail.html:175 +#: part/templates/part/detail.html:68 msgid "Order Part" msgstr "Teil bestellen" @@ -2796,15 +2813,15 @@ msgid "Delete price break" msgstr "Preisstaffel löschen" #: company/templates/company/supplier_part_navbar.html:15 -#: part/templates/part/part_sidebar.html:16 +#: part/templates/part/part_sidebar.html:14 #: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:14 #: stock/templates/stock/stock_app_base.html:10 #: templates/InvenTree/search.html:156 #: templates/InvenTree/settings/sidebar.html:40 -#: templates/js/translated/bom.js:216 templates/js/translated/part.js:427 -#: templates/js/translated/part.js:562 templates/js/translated/part.js:878 -#: templates/js/translated/part.js:1039 templates/js/translated/stock.js:509 -#: templates/js/translated/stock.js:1162 templates/navbar.html:26 +#: templates/js/translated/bom.js:216 templates/js/translated/part.js:434 +#: templates/js/translated/part.js:569 templates/js/translated/part.js:1059 +#: templates/js/translated/part.js:1220 templates/js/translated/stock.js:591 +#: templates/js/translated/stock.js:1244 templates/navbar.html:26 msgid "Stock" msgstr "Bestand" @@ -2818,16 +2835,16 @@ msgid "Supplier Part Pricing" msgstr "Zuliefererteil Bepreisung" #: company/templates/company/supplier_part_navbar.html:29 -#: part/templates/part/part_sidebar.html:30 +#: part/templates/part/part_sidebar.html:28 msgid "Pricing" msgstr "Bepreisung" #: company/templates/company/supplier_part_sidebar.html:5 -#: stock/templates/stock/location.html:118 -#: stock/templates/stock/location.html:132 -#: stock/templates/stock/location.html:144 +#: stock/templates/stock/location.html:133 +#: stock/templates/stock/location.html:147 +#: stock/templates/stock/location.html:159 #: stock/templates/stock/location_sidebar.html:7 -#: templates/InvenTree/search.html:158 templates/js/translated/stock.js:1901 +#: templates/InvenTree/search.html:158 templates/js/translated/stock.js:1983 #: templates/stats.html:93 templates/stats.html:102 users/models.py:43 msgid "Stock Items" msgstr "Lagerartikel" @@ -2947,7 +2964,7 @@ msgstr "Teile-Abfragefilter (kommagetrennte Liste mit Schlüssel=Wert-Paaren)" msgid "Place order" msgstr "Bestellung aufgeben" -#: order/forms.py:37 order/templates/order/order_base.html:59 +#: order/forms.py:37 order/templates/order/order_base.html:60 msgid "Mark order as complete" msgstr "Bestellung als vollständig markieren" @@ -3000,8 +3017,8 @@ msgstr "Bestellungs-Status" msgid "Company from which the items are being ordered" msgstr "Firma bei der die Teile bestellt werden" -#: order/models.py:267 order/templates/order/order_base.html:114 -#: templates/js/translated/order.js:669 +#: order/models.py:267 order/templates/order/order_base.html:118 +#: templates/js/translated/order.js:676 msgid "Supplier Reference" msgstr "Zulieferer-Referenz" @@ -3061,7 +3078,7 @@ msgstr "Bestellreferenz" msgid "Target date for order completion. Order will be overdue after this date." msgstr "Zieldatum für Auftrags-Fertigstellung." -#: order/models.py:582 templates/js/translated/order.js:1114 +#: order/models.py:582 templates/js/translated/order.js:1113 msgid "Shipment Date" msgstr "Versanddatum" @@ -3086,16 +3103,16 @@ msgid "Line item notes" msgstr "Position - Notizen" #: order/models.py:768 order/models.py:856 -#: templates/js/translated/order.js:1166 +#: templates/js/translated/order.js:1165 msgid "Order" msgstr "Bestellung" #: order/models.py:769 order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_po_report.html:77 -#: stock/templates/stock/item_base.html:325 -#: templates/js/translated/order.js:638 templates/js/translated/stock.js:1300 -#: templates/js/translated/stock.js:1983 +#: stock/templates/stock/item_base.html:353 +#: templates/js/translated/order.js:638 templates/js/translated/part.js:775 +#: templates/js/translated/stock.js:1382 templates/js/translated/stock.js:2065 msgid "Purchase Order" msgstr "Bestellung" @@ -3103,9 +3120,10 @@ msgstr "Bestellung" msgid "Supplier part" msgstr "Zuliefererteil" -#: order/models.py:797 order/templates/order/order_base.html:147 -#: order/templates/order/sales_order_base.html:154 -#: templates/js/translated/order.js:429 templates/js/translated/order.js:954 +#: order/models.py:797 order/templates/order/order_base.html:151 +#: order/templates/order/sales_order_base.html:155 +#: templates/js/translated/order.js:429 templates/js/translated/order.js:953 +#: templates/js/translated/part.js:847 templates/js/translated/part.js:873 msgid "Received" msgstr "Empfangen" @@ -3113,9 +3131,9 @@ msgstr "Empfangen" msgid "Number of items received" msgstr "Empfangene Objekt-Anzahl" -#: order/models.py:805 part/templates/part/prices.html:176 stock/models.py:619 -#: stock/serializers.py:163 stock/templates/stock/item_base.html:332 -#: templates/js/translated/stock.js:1354 +#: order/models.py:805 part/templates/part/prices.html:176 stock/models.py:609 +#: stock/serializers.py:168 stock/templates/stock/item_base.html:360 +#: templates/js/translated/stock.js:1436 msgid "Purchase Price" msgstr "Preis" @@ -3176,47 +3194,47 @@ msgstr "Lagerartikel für Zuordnung auswählen" msgid "Enter stock allocation quantity" msgstr "Anzahl für Bestandszuordnung eingeben" -#: order/serializers.py:169 +#: order/serializers.py:175 msgid "Purchase price currency" msgstr "Kaufpreiswährung" -#: order/serializers.py:204 +#: order/serializers.py:213 msgid "Line Item" msgstr "Position" -#: order/serializers.py:210 +#: order/serializers.py:219 msgid "Line item does not match purchase order" msgstr "Position stimmt nicht mit Kaufauftrag überein" -#: order/serializers.py:220 order/serializers.py:288 +#: order/serializers.py:229 order/serializers.py:297 msgid "Select destination location for received items" msgstr "Zielort für empfangene Teile auswählen" -#: order/serializers.py:244 +#: order/serializers.py:253 msgid "Barcode Hash" msgstr "Barcode-Hash" -#: order/serializers.py:245 +#: order/serializers.py:254 msgid "Unique identifier field" msgstr "Einzigartiger Identifikator" -#: order/serializers.py:262 +#: order/serializers.py:271 msgid "Barcode is already in use" msgstr "Barcode ist bereits in Verwendung" -#: order/serializers.py:300 +#: order/serializers.py:309 msgid "Line items must be provided" msgstr "Positionen müssen angegeben werden" -#: order/serializers.py:317 +#: order/serializers.py:326 msgid "Destination location must be specified" msgstr "Ziel-Lagerort muss angegeben werden" -#: order/serializers.py:328 +#: order/serializers.py:337 msgid "Supplied barcode values must be unique" msgstr "Barcode muss eindeutig sein" -#: order/serializers.py:569 +#: order/serializers.py:578 msgid "Sale price currency" msgstr "Verkaufspreis-Währung" @@ -3248,22 +3266,36 @@ msgstr "Auftrag bearbeiten" msgid "Receive items" msgstr "Elemente empfangen" -#: order/templates/order/order_base.html:93 -#: order/templates/order/sales_order_base.html:98 +#: order/templates/order/order_base.html:58 +#: order/templates/order/purchase_order_detail.html:31 +msgid "Receive Items" +msgstr "Teile empfangen" + +#: order/templates/order/order_base.html:62 order/views.py:185 +msgid "Complete Order" +msgstr "Auftrag fertigstellen" + +#: order/templates/order/order_base.html:84 +#: order/templates/order/sales_order_base.html:79 msgid "Order Reference" msgstr "Bestellreferenz" -#: order/templates/order/order_base.html:98 -#: order/templates/order/sales_order_base.html:103 +#: order/templates/order/order_base.html:89 +#: order/templates/order/sales_order_base.html:84 +msgid "Order Description" +msgstr "Bestellungsbeschreibung" + +#: order/templates/order/order_base.html:94 +#: order/templates/order/sales_order_base.html:89 msgid "Order Status" msgstr "Bestellstatus" -#: order/templates/order/order_base.html:133 +#: order/templates/order/order_base.html:137 #: report/templates/report/inventree_build_order_base.html:122 msgid "Issued" msgstr "Aufgegeben" -#: order/templates/order/order_base.html:203 +#: order/templates/order/order_base.html:207 msgid "Edit Purchase Order" msgstr "Bestellung bearbeiten" @@ -3421,7 +3453,7 @@ msgid "Select existing purchase orders, or create new orders." msgstr "Bestellungen auswählen oder anlegen." #: order/templates/order/order_wizard/select_pos.html:31 -#: templates/js/translated/order.js:695 templates/js/translated/order.js:1119 +#: templates/js/translated/order.js:694 templates/js/translated/order.js:1118 msgid "Items" msgstr "Positionen" @@ -3465,10 +3497,6 @@ msgstr "Position hinzufügen" msgid "Receive selected items" msgstr "Ausgewählte Positionen erhalten" -#: order/templates/order/purchase_order_detail.html:31 -msgid "Receive Items" -msgstr "Teile empfangen" - #: order/templates/order/purchase_order_detail.html:50 msgid "Received Items" msgstr "Empfangene Teile" @@ -3496,16 +3524,16 @@ msgstr "Paketliste drucken" msgid "Ship Order" msgstr "Versenden" -#: order/templates/order/sales_order_base.html:86 +#: order/templates/order/sales_order_base.html:102 msgid "This Sales Order has not been fully allocated" msgstr "Dieser Auftrag ist nicht vollständig zugeordnet" -#: order/templates/order/sales_order_base.html:121 -#: templates/js/translated/order.js:1086 +#: order/templates/order/sales_order_base.html:122 +#: templates/js/translated/order.js:1085 msgid "Customer Reference" msgstr "Kundenreferenz" -#: order/templates/order/sales_order_base.html:194 +#: order/templates/order/sales_order_base.html:195 msgid "Edit Sales Order" msgstr "Auftrag bearbeiten" @@ -3576,10 +3604,6 @@ msgstr "Bestellungstätigung bestätigen" msgid "Purchase order issued" msgstr "Bestellung plaziert" -#: order/views.py:185 -msgid "Complete Order" -msgstr "Auftrag fertigstellen" - #: order/views.py:201 msgid "Confirm order completion" msgstr "Fertigstellung bestätigen" @@ -3672,11 +3696,11 @@ msgid "This field is required" msgstr "Dieses Feld ist erforderlich" #: part/bom.py:125 part/models.py:81 part/models.py:816 -#: part/templates/part/category.html:90 part/templates/part/detail.html:104 +#: part/templates/part/category.html:104 part/templates/part/part_base.html:338 msgid "Default Location" msgstr "Standard-Lagerort" -#: part/bom.py:126 part/templates/part/part_base.html:167 +#: part/bom.py:126 part/templates/part/part_base.html:185 msgid "Available Stock" msgstr "Verfügbarer Bestand" @@ -3793,19 +3817,19 @@ msgstr "Standard-Stichworte für Teile dieser Kategorie" msgid "Part Category" msgstr "Teil-Kategorie" -#: part/models.py:96 part/templates/part/category.html:117 +#: part/models.py:96 part/templates/part/category.html:124 #: templates/InvenTree/search.html:101 templates/stats.html:84 #: users/models.py:40 msgid "Part Categories" msgstr "Teil-Kategorien" #: part/models.py:358 part/templates/part/cat_link.html:3 -#: part/templates/part/category.html:13 part/templates/part/category.html:122 -#: part/templates/part/category.html:142 +#: part/templates/part/category.html:13 part/templates/part/category.html:129 +#: part/templates/part/category.html:149 #: part/templates/part/category_sidebar.html:9 #: templates/InvenTree/index.html:85 templates/InvenTree/search.html:88 #: templates/InvenTree/settings/sidebar.html:36 -#: templates/js/translated/part.js:1416 templates/navbar.html:19 +#: templates/js/translated/part.js:1597 templates/navbar.html:19 #: templates/stats.html:80 templates/stats.html:89 users/models.py:41 msgid "Parts" msgstr "Teile" @@ -3859,8 +3883,8 @@ msgstr "Variante von" msgid "Part description" msgstr "Beschreibung des Teils" -#: part/models.py:770 part/templates/part/category.html:97 -#: part/templates/part/detail.html:73 +#: part/models.py:770 part/templates/part/category.html:82 +#: part/templates/part/part_base.html:302 msgid "Keywords" msgstr "Schlüsselwörter" @@ -3869,9 +3893,10 @@ msgid "Part keywords to improve visibility in search results" msgstr "Schlüsselworte um die Sichtbarkeit in Suchergebnissen zu verbessern" #: part/models.py:778 part/models.py:2223 part/models.py:2472 -#: part/templates/part/detail.html:36 part/templates/part/set_category.html:15 +#: part/templates/part/part_base.html:265 +#: part/templates/part/set_category.html:15 #: templates/InvenTree/settings/settings.html:163 -#: templates/js/translated/part.js:1021 +#: templates/js/translated/part.js:1202 msgid "Category" msgstr "Kategorie" @@ -3879,9 +3904,9 @@ msgstr "Kategorie" msgid "Part category" msgstr "Teile-Kategorie" -#: part/models.py:784 part/templates/part/detail.html:45 -#: templates/js/translated/part.js:550 templates/js/translated/part.js:974 -#: templates/js/translated/stock.js:1134 +#: part/models.py:784 part/templates/part/part_base.html:274 +#: templates/js/translated/part.js:557 templates/js/translated/part.js:1155 +#: templates/js/translated/stock.js:1216 msgid "IPN" msgstr "IPN (Interne Produktnummer)" @@ -3893,8 +3918,8 @@ msgstr "Interne Teilenummer" msgid "Part revision or version number" msgstr "Revisions- oder Versionsnummer" -#: part/models.py:792 part/templates/part/detail.html:52 report/models.py:200 -#: templates/js/translated/part.js:554 +#: part/models.py:792 part/templates/part/part_base.html:281 +#: report/models.py:200 templates/js/translated/part.js:561 msgid "Revision" msgstr "Revision" @@ -3902,7 +3927,7 @@ msgstr "Revision" msgid "Where is this item normally stored?" msgstr "Wo wird dieses Teil normalerweise gelagert?" -#: part/models.py:861 part/templates/part/detail.html:113 +#: part/models.py:861 part/templates/part/part_base.html:347 msgid "Default Supplier" msgstr "Standard Zulieferer" @@ -3918,7 +3943,7 @@ msgstr "Standard Ablaufzeit" msgid "Expiry time (in days) for stock items of this part" msgstr "Ablauf-Zeit (in Tagen) für Bestand dieses Teils" -#: part/models.py:875 part/templates/part/part_base.html:178 +#: part/models.py:875 part/templates/part/part_base.html:196 msgid "Minimum Stock" msgstr "Minimaler Bestand" @@ -4001,8 +4026,8 @@ msgstr "Test-Vorlagen können nur für verfolgbare Teile angelegt werden" 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:2310 templates/js/translated/part.js:1467 -#: templates/js/translated/stock.js:858 +#: part/models.py:2310 templates/js/translated/part.js:1648 +#: templates/js/translated/stock.js:940 msgid "Test Name" msgstr "Test-Name" @@ -4018,7 +4043,7 @@ msgstr "Test-Beschreibung" msgid "Enter description for this test" msgstr "Beschreibung für diesen Test eingeben" -#: part/models.py:2322 templates/js/translated/part.js:1476 +#: part/models.py:2322 templates/js/translated/part.js:1657 #: templates/js/translated/table_filters.js:276 msgid "Required" msgstr "Benötigt" @@ -4027,7 +4052,7 @@ msgstr "Benötigt" msgid "Is this test required to pass?" msgstr "Muss dieser Test erfolgreich sein?" -#: part/models.py:2328 templates/js/translated/part.js:1484 +#: part/models.py:2328 templates/js/translated/part.js:1665 msgid "Requires Value" msgstr "Erfordert Wert" @@ -4035,7 +4060,7 @@ msgstr "Erfordert Wert" 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:2334 templates/js/translated/part.js:1491 +#: part/models.py:2334 templates/js/translated/part.js:1672 msgid "Requires Attachment" msgstr "Anhang muss eingegeben werden" @@ -4150,7 +4175,7 @@ msgstr "Varianten zulassen" msgid "Stock items for variant parts can be used for this BOM item" msgstr "Bestand von Varianten kann für diese Stücklisten-Position verwendet werden" -#: part/models.py:2686 stock/models.py:371 +#: part/models.py:2686 stock/models.py:361 msgid "Quantity must be integer value for trackable parts" msgstr "Menge muss eine Ganzzahl sein" @@ -4213,7 +4238,7 @@ msgstr "Die Stückliste für %(part)s wurde zuletzt von %(checker)s am msgid "The BOM for %(part)s has not been validated." msgstr "Die Stückliste für %(part)s wurde noch nicht kontrolliert." -#: part/templates/part/bom.html:30 part/templates/part/detail.html:357 +#: part/templates/part/bom.html:30 part/templates/part/detail.html:250 msgid "BOM actions" msgstr "Stücklisten-Aktionen" @@ -4298,68 +4323,64 @@ msgstr "Teil-Kategorie anlegen" msgid "New Category" msgstr "Neue Kategorie" -#: part/templates/part/category.html:67 -msgid "Top level part category" -msgstr "Oberste Teil-Kategorie" - -#: part/templates/part/category.html:79 +#: part/templates/part/category.html:76 part/templates/part/category.html:89 msgid "Category Path" msgstr "Pfad zur Kategorie" -#: part/templates/part/category.html:84 -msgid "Category Description" -msgstr "Kategorie-Beschreibung" +#: part/templates/part/category.html:90 +msgid "Top level part category" +msgstr "Oberste Teil-Kategorie" -#: part/templates/part/category.html:103 part/templates/part/category.html:194 +#: part/templates/part/category.html:110 part/templates/part/category.html:201 #: part/templates/part/category_sidebar.html:7 msgid "Subcategories" msgstr "Unter-Kategorien" -#: part/templates/part/category.html:108 +#: part/templates/part/category.html:115 msgid "Parts (Including subcategories)" msgstr "Teile (inklusive Unter-Kategorien)" -#: part/templates/part/category.html:145 +#: part/templates/part/category.html:152 msgid "Export Part Data" msgstr "Teile-Daten exportieren" -#: part/templates/part/category.html:146 part/templates/part/category.html:170 +#: part/templates/part/category.html:153 part/templates/part/category.html:177 msgid "Export" msgstr "Exportieren" -#: part/templates/part/category.html:149 +#: part/templates/part/category.html:156 msgid "Create new part" msgstr "Neues Teil anlegen" -#: part/templates/part/category.html:150 templates/js/translated/bom.js:40 +#: part/templates/part/category.html:157 templates/js/translated/bom.js:40 msgid "New Part" msgstr "Neues Teil" -#: part/templates/part/category.html:164 +#: part/templates/part/category.html:171 msgid "Set category" msgstr "Teil-Kategorie auswählen" -#: part/templates/part/category.html:164 +#: part/templates/part/category.html:171 msgid "Set Category" msgstr "Teil-Kategorie auswählen" -#: part/templates/part/category.html:168 +#: part/templates/part/category.html:175 msgid "Print Labels" msgstr "Label drucken" -#: part/templates/part/category.html:170 +#: part/templates/part/category.html:177 msgid "Export Data" msgstr "Exportieren" -#: part/templates/part/category.html:184 +#: part/templates/part/category.html:191 msgid "Part Parameters" msgstr "Teilparameter" -#: part/templates/part/category.html:261 +#: part/templates/part/category.html:268 msgid "Create Part Category" msgstr "Teil-Kategorie hinzufügen" -#: part/templates/part/category.html:288 +#: part/templates/part/category.html:295 msgid "Create Part" msgstr "Teil hinzufügen" @@ -4402,7 +4423,7 @@ msgstr "Wenn diese Kat. gelöscht wird, werden diese Teile in die oberste Kat. v msgid "Import Parts" msgstr "Teile importieren" -#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:366 +#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:373 msgid "Duplicate Part" msgstr "Teil duplizieren" @@ -4426,167 +4447,155 @@ 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:16 -msgid "Part Details" -msgstr "Teile-Details" - -#: part/templates/part/detail.html:66 -msgid "Minimum stock level" -msgstr "Minimaler Bestand" - -#: part/templates/part/detail.html:97 -msgid "Latest Serial Number" -msgstr "letzte Seriennummer" - -#: part/templates/part/detail.html:124 +#: part/templates/part/detail.html:17 msgid "Part Stock" msgstr "Teilbestand" -#: part/templates/part/detail.html:136 +#: part/templates/part/detail.html:29 #, python-format msgid "Showing stock for all variants of %(full_name)s" msgstr "Bestand aller Varianten von %(full_name)s" -#: part/templates/part/detail.html:146 +#: part/templates/part/detail.html:39 msgid "Part Test Templates" msgstr "Teil Test-Vorlagen" -#: part/templates/part/detail.html:151 +#: part/templates/part/detail.html:44 msgid "Add Test Template" msgstr "Test Vorlage hinzufügen" -#: part/templates/part/detail.html:208 +#: part/templates/part/detail.html:101 msgid "Sales Order Allocations" msgstr "Verkaufsauftragszuweisungen" -#: part/templates/part/detail.html:249 +#: part/templates/part/detail.html:142 msgid "Part Variants" msgstr "Teil Varianten" -#: part/templates/part/detail.html:253 +#: part/templates/part/detail.html:146 msgid "Create new variant" msgstr "Neue Variante anlegen" -#: part/templates/part/detail.html:254 +#: part/templates/part/detail.html:147 msgid "New Variant" msgstr "neue Variante anlegen" -#: part/templates/part/detail.html:281 +#: part/templates/part/detail.html:174 msgid "Add new parameter" msgstr "Parameter hinzufügen" -#: part/templates/part/detail.html:315 part/templates/part/part_sidebar.html:47 +#: part/templates/part/detail.html:208 part/templates/part/part_sidebar.html:45 msgid "Related Parts" msgstr "Verknüpfte Teile" -#: part/templates/part/detail.html:319 part/templates/part/detail.html:320 +#: part/templates/part/detail.html:212 part/templates/part/detail.html:213 msgid "Add Related" msgstr "Verknüpftes Teil hinzufügen" -#: part/templates/part/detail.html:340 part/templates/part/part_sidebar.html:19 +#: part/templates/part/detail.html:233 part/templates/part/part_sidebar.html:17 msgid "Bill of Materials" msgstr "Stückliste" -#: part/templates/part/detail.html:345 +#: part/templates/part/detail.html:238 msgid "Export actions" msgstr "Export-Aktionen" -#: part/templates/part/detail.html:349 +#: part/templates/part/detail.html:242 msgid "Export BOM" msgstr "Stückliste exportieren" -#: part/templates/part/detail.html:351 +#: part/templates/part/detail.html:244 msgid "Print BOM Report" msgstr "Stücklisten-Bericht drucken" -#: part/templates/part/detail.html:361 +#: part/templates/part/detail.html:254 msgid "Upload BOM" msgstr "Stückliste hochladen" -#: part/templates/part/detail.html:363 templates/js/translated/part.js:267 +#: part/templates/part/detail.html:256 templates/js/translated/part.js:270 msgid "Copy BOM" msgstr "Stückliste kopieren" -#: part/templates/part/detail.html:365 part/views.py:755 +#: part/templates/part/detail.html:258 part/views.py:755 msgid "Validate BOM" msgstr "Stückliste überprüfen" -#: part/templates/part/detail.html:370 +#: part/templates/part/detail.html:263 msgid "New BOM Item" msgstr "Neue Stücklisten-Position" -#: part/templates/part/detail.html:371 +#: part/templates/part/detail.html:264 msgid "Add BOM Item" msgstr "Stücklisten-Position hinzufügen" -#: part/templates/part/detail.html:384 +#: part/templates/part/detail.html:277 msgid "Assemblies" msgstr "Baugruppen" -#: part/templates/part/detail.html:401 +#: part/templates/part/detail.html:294 msgid "Part Builds" msgstr "Gefertigte Teile" -#: part/templates/part/detail.html:426 +#: part/templates/part/detail.html:319 msgid "Build Order Allocations" msgstr "Bauauftragszuweisungen" -#: part/templates/part/detail.html:436 +#: part/templates/part/detail.html:329 msgid "Part Suppliers" msgstr "Zulieferer" -#: part/templates/part/detail.html:463 +#: part/templates/part/detail.html:356 msgid "Part Manufacturers" msgstr "Teil-Hersteller" -#: part/templates/part/detail.html:479 +#: part/templates/part/detail.html:372 msgid "Delete manufacturer parts" msgstr "Herstellerteile löschen" -#: part/templates/part/detail.html:660 +#: part/templates/part/detail.html:553 msgid "Delete selected BOM items?" msgstr "Ausgewählte Stücklistenpositionen löschen?" -#: part/templates/part/detail.html:661 +#: part/templates/part/detail.html:554 msgid "All selected BOM items will be deleted" msgstr "Alle ausgewählte Stücklistenpositionen werden gelöscht" -#: part/templates/part/detail.html:712 +#: part/templates/part/detail.html:605 msgid "Create BOM Item" msgstr "Stücklisten-Position anlegen" -#: part/templates/part/detail.html:764 +#: part/templates/part/detail.html:657 msgid "Related Part" msgstr "verknüpftes Teil" -#: part/templates/part/detail.html:772 +#: part/templates/part/detail.html:665 msgid "Add Related Part" msgstr "verknüpftes Teil hinzufügen" -#: part/templates/part/detail.html:869 +#: part/templates/part/detail.html:760 msgid "Add Test Result Template" msgstr "Testergebnis-Vorlage hinzufügen" -#: part/templates/part/detail.html:926 +#: part/templates/part/detail.html:817 msgid "Edit Part Notes" msgstr "Teilenotizen bearbeiten" -#: part/templates/part/detail.html:1039 +#: part/templates/part/detail.html:930 #, python-format msgid "Purchase Unit Price - %(currency)s" msgstr "Stückpreis Einkauf - %(currency)s" -#: part/templates/part/detail.html:1051 +#: part/templates/part/detail.html:942 #, python-format msgid "Unit Price-Cost Difference - %(currency)s" msgstr "Stückpreis Differenz - %(currency)s" -#: part/templates/part/detail.html:1063 +#: part/templates/part/detail.html:954 #, python-format msgid "Supplier Unit Cost - %(currency)s" msgstr "Stückpreis Zulieferer - %(currency)s" -#: part/templates/part/detail.html:1152 +#: part/templates/part/detail.html:1043 #, python-format msgid "Unit Price - %(currency)s" msgstr "Stückpreis - %(currency)s" @@ -4668,86 +4677,108 @@ msgstr "Teil bearbeiten" msgid "Delete part" msgstr "Teil löschen" -#: part/templates/part/part_base.html:109 +#: part/templates/part/part_base.html:112 msgid "Part is a template part (variants can be made from this part)" msgstr "Teil ist Vorlage (Varianten können von diesem Teil erstellt werden)" -#: part/templates/part/part_base.html:113 +#: part/templates/part/part_base.html:116 msgid "Part can be assembled from other parts" msgstr "Teil kann aus anderen Teilen angefertigt werden" -#: part/templates/part/part_base.html:117 +#: part/templates/part/part_base.html:120 msgid "Part can be used in assemblies" msgstr "Teil kann in Baugruppen benutzt werden" -#: part/templates/part/part_base.html:121 +#: part/templates/part/part_base.html:124 msgid "Part stock is tracked by serial number" msgstr "Teil wird per Seriennummer verfolgt" -#: part/templates/part/part_base.html:125 +#: part/templates/part/part_base.html:128 msgid "Part can be purchased from external suppliers" msgstr "Teil kann von externen Zulieferern gekauft werden" -#: part/templates/part/part_base.html:129 +#: part/templates/part/part_base.html:132 msgid "Part can be sold to customers" msgstr "Teil kann an Kunden verkauft werden" -#: part/templates/part/part_base.html:135 -#: part/templates/part/part_base.html:143 +#: part/templates/part/part_base.html:138 +#: part/templates/part/part_base.html:146 msgid "Part is virtual (not a physical part)" msgstr "Teil ist virtuell (kein physisches Teil)" -#: part/templates/part/part_base.html:136 +#: part/templates/part/part_base.html:139 #: templates/js/translated/company.js:505 #: templates/js/translated/company.js:762 #: templates/js/translated/model_renderers.js:175 -#: templates/js/translated/part.js:465 templates/js/translated/part.js:542 +#: templates/js/translated/part.js:472 templates/js/translated/part.js:549 msgid "Inactive" msgstr "Inaktiv" -#: part/templates/part/part_base.html:155 +#: part/templates/part/part_base.html:156 +#: part/templates/part/part_base.html:579 +msgid "Show Part Details" +msgstr "Teildetails anzeigen" + +#: part/templates/part/part_base.html:173 #, python-format msgid "This part is a variant of %(link)s" msgstr "Dieses Teil ist eine Variante von %(link)s" -#: part/templates/part/part_base.html:172 templates/js/translated/order.js:1546 +#: part/templates/part/part_base.html:190 templates/js/translated/order.js:1545 #: templates/js/translated/table_filters.js:188 msgid "In Stock" msgstr "Auf Lager" -#: part/templates/part/part_base.html:185 templates/js/translated/part.js:1054 +#: part/templates/part/part_base.html:203 templates/js/translated/part.js:1235 msgid "On Order" msgstr "Bestellt" -#: part/templates/part/part_base.html:192 templates/InvenTree/index.html:178 +#: part/templates/part/part_base.html:210 templates/InvenTree/index.html:178 msgid "Required for Build Orders" msgstr "Für Bauaufträge benötigt" -#: part/templates/part/part_base.html:199 +#: part/templates/part/part_base.html:217 msgid "Required for Sales Orders" msgstr "Benötigt für Aufträge" -#: part/templates/part/part_base.html:206 +#: part/templates/part/part_base.html:224 msgid "Allocated to Orders" msgstr "Zu Bauaufträgen zugeordnet" -#: part/templates/part/part_base.html:221 templates/js/translated/bom.js:566 +#: part/templates/part/part_base.html:239 templates/js/translated/bom.js:566 msgid "Can Build" msgstr "Herstellbar" -#: part/templates/part/part_base.html:227 templates/js/translated/part.js:885 -#: templates/js/translated/part.js:1058 +#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1066 +#: templates/js/translated/part.js:1239 msgid "Building" msgstr "Im Bau" -#: part/templates/part/part_base.html:320 part/templates/part/prices.html:144 +#: part/templates/part/part_base.html:295 +msgid "Minimum stock level" +msgstr "Minimaler Bestand" + +#: part/templates/part/part_base.html:324 +msgid "Latest Serial Number" +msgstr "letzte Seriennummer" + +#: part/templates/part/part_base.html:328 +#: stock/templates/stock/item_base.html:159 +msgid "Search for serial number" +msgstr "Nach Seriennummer suchen" + +#: part/templates/part/part_base.html:449 part/templates/part/prices.html:144 msgid "Calculate" msgstr "Berechnen" -#: part/templates/part/part_base.html:363 +#: part/templates/part/part_base.html:492 msgid "No matching images found" msgstr "Keine passenden Bilder gefunden" +#: part/templates/part/part_base.html:573 +msgid "Hide Part Details" +msgstr "Teildetails ausblenden" + #: part/templates/part/part_pricing.html:22 part/templates/part/prices.html:21 msgid "Supplier Pricing" msgstr "Zulieferer-Preise" @@ -4805,20 +4836,15 @@ msgstr "Interner Preis" msgid "No pricing information is available for this part." msgstr "Keine Preise für dieses Teil verfügbar" -#: part/templates/part/part_sidebar.html:8 -#: templates/js/translated/stock.js:1949 -msgid "Details" -msgstr "Details" - -#: part/templates/part/part_sidebar.html:13 +#: part/templates/part/part_sidebar.html:11 msgid "Variants" msgstr "Varianten" -#: part/templates/part/part_sidebar.html:27 +#: part/templates/part/part_sidebar.html:25 msgid "Used In" msgstr "Benutzt in" -#: part/templates/part/part_sidebar.html:43 +#: part/templates/part/part_sidebar.html:41 msgid "Test Templates" msgstr "Testvorlagen" @@ -4936,8 +4962,8 @@ msgid "Set category for the following parts" msgstr "Kategorie für Teile setzen" #: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:476 -#: templates/js/translated/part.js:429 templates/js/translated/part.js:875 -#: templates/js/translated/part.js:1062 +#: templates/js/translated/part.js:436 templates/js/translated/part.js:1056 +#: templates/js/translated/part.js:1243 msgid "No Stock" msgstr "Kein Bestand" @@ -5039,7 +5065,7 @@ msgstr "Teilparametervorlage bearbeiten" msgid "Delete Part Parameter Template" msgstr "Teilparametervorlage löschen" -#: part/views.py:1489 templates/js/translated/part.js:310 +#: part/views.py:1489 templates/js/translated/part.js:313 msgid "Edit Part Category" msgstr "Teil-Kategorie bearbeiten" @@ -5173,11 +5199,12 @@ msgid "Stock Item Test Report" msgstr "Lagerartikel Test-Bericht" #: report/templates/report/inventree_test_report_base.html:79 -#: stock/models.py:530 stock/templates/stock/item_base.html:238 +#: stock/models.py:520 stock/templates/stock/item_base.html:149 #: templates/js/translated/build.js:233 templates/js/translated/build.js:637 #: templates/js/translated/build.js:1013 #: templates/js/translated/model_renderers.js:95 -#: templates/js/translated/order.js:1288 templates/js/translated/order.js:1377 +#: templates/js/translated/order.js:1287 templates/js/translated/order.js:1376 +#: templates/js/translated/stock.js:410 msgid "Serial Number" msgstr "Seriennummer" @@ -5186,17 +5213,17 @@ msgid "Test Results" msgstr "Testergebnisse" #: report/templates/report/inventree_test_report_base.html:93 -#: stock/models.py:1855 +#: stock/models.py:1845 msgid "Test" msgstr "Test" #: report/templates/report/inventree_test_report_base.html:94 -#: stock/models.py:1861 +#: stock/models.py:1851 msgid "Result" msgstr "Ergebnis" #: report/templates/report/inventree_test_report_base.html:97 -#: templates/js/translated/order.js:685 templates/js/translated/stock.js:1917 +#: templates/js/translated/order.js:684 templates/js/translated/stock.js:1999 msgid "Date" msgstr "Datum" @@ -5214,7 +5241,7 @@ msgid "Installed Items" msgstr "Verbaute Objekte" #: report/templates/report/inventree_test_report_base.html:137 -#: templates/js/translated/stock.js:2177 +#: templates/js/translated/stock.js:2259 msgid "Serial" msgstr "Seriennummer" @@ -5222,9 +5249,9 @@ msgstr "Seriennummer" msgid "Quantity is required" msgstr "Menge ist erforderlich" -#: stock/forms.py:91 stock/forms.py:265 stock/models.py:587 -#: stock/templates/stock/item_base.html:382 -#: templates/js/translated/stock.js:1276 +#: stock/forms.py:91 stock/forms.py:265 stock/models.py:577 +#: stock/templates/stock/item_base.html:186 +#: templates/js/translated/stock.js:1358 msgid "Expiry Date" msgstr "Ablaufdatum" @@ -5272,241 +5299,241 @@ msgstr "nicht mehr verbauen bestätigen" msgid "Confirm removal of installed stock items" msgstr "Entfernen der verbauten Lagerartikel bestätigen" -#: stock/models.py:60 stock/models.py:624 -#: stock/templates/stock/item_base.html:422 +#: stock/models.py:60 stock/models.py:614 +#: stock/templates/stock/item_base.html:417 msgid "Owner" msgstr "Besitzer" -#: stock/models.py:61 stock/models.py:625 +#: stock/models.py:61 stock/models.py:615 msgid "Select Owner" msgstr "Besitzer auswählen" -#: stock/models.py:352 +#: stock/models.py:342 msgid "StockItem with this serial number already exists" msgstr "Ein Lagerartikel mit dieser Seriennummer existiert bereits" -#: stock/models.py:388 +#: stock/models.py:378 #, python-brace-format msgid "Part type ('{pf}') must be {pe}" msgstr "Teile-Typ ('{pf}') muss {pe} sein" -#: stock/models.py:398 stock/models.py:407 +#: stock/models.py:388 stock/models.py:397 msgid "Quantity must be 1 for item with a serial number" msgstr "Anzahl muss für Objekte mit Seriennummer 1 sein" -#: stock/models.py:399 +#: stock/models.py:389 msgid "Serial number cannot be set if quantity greater than 1" msgstr "Seriennummer kann nicht gesetzt werden wenn die Anzahl größer als 1 ist" -#: stock/models.py:421 +#: stock/models.py:411 msgid "Item cannot belong to itself" msgstr "Teil kann nicht zu sich selbst gehören" -#: stock/models.py:427 +#: stock/models.py:417 msgid "Item must have a build reference if is_building=True" msgstr "Teil muss eine Referenz haben wenn is_building wahr ist" -#: stock/models.py:434 +#: stock/models.py:424 msgid "Build reference does not point to the same part object" msgstr "Referenz verweist nicht auf das gleiche Teil" -#: stock/models.py:476 +#: stock/models.py:466 msgid "Parent Stock Item" msgstr "Eltern-Lagerartikel" -#: stock/models.py:485 +#: stock/models.py:475 msgid "Base part" msgstr "Basis-Teil" -#: stock/models.py:493 +#: stock/models.py:483 msgid "Select a matching supplier part for this stock item" msgstr "Passendes Zuliefererteil für diesen Lagerartikel auswählen" -#: stock/models.py:498 stock/templates/stock/location.html:12 +#: stock/models.py:488 stock/templates/stock/location.html:12 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" msgstr "Bestand-Lagerort" -#: stock/models.py:501 +#: stock/models.py:491 msgid "Where is this stock item located?" msgstr "Wo wird dieses Teil normalerweise gelagert?" -#: stock/models.py:508 +#: stock/models.py:498 msgid "Packaging this stock item is stored in" msgstr "Die Verpackung dieses Lagerartikel ist gelagert in" -#: stock/models.py:513 stock/templates/stock/item_base.html:271 +#: stock/models.py:503 stock/templates/stock/item_base.html:299 msgid "Installed In" msgstr "verbaut in" -#: stock/models.py:516 +#: stock/models.py:506 msgid "Is this item installed in another item?" msgstr "Ist dieses Teil in einem anderen verbaut?" -#: stock/models.py:532 +#: stock/models.py:522 msgid "Serial number for this item" msgstr "Seriennummer für dieses Teil" -#: stock/models.py:546 +#: stock/models.py:536 msgid "Batch code for this stock item" msgstr "Losnummer für diesen Lagerartikel" -#: stock/models.py:550 +#: stock/models.py:540 msgid "Stock Quantity" msgstr "Bestand" -#: stock/models.py:559 +#: stock/models.py:549 msgid "Source Build" msgstr "Quellbau" -#: stock/models.py:561 +#: stock/models.py:551 msgid "Build for this stock item" msgstr "Bauauftrag für diesen Lagerartikel" -#: stock/models.py:572 +#: stock/models.py:562 msgid "Source Purchase Order" msgstr "Quelle Bestellung" -#: stock/models.py:575 +#: stock/models.py:565 msgid "Purchase order for this stock item" msgstr "Bestellung für diesen Lagerartikel" -#: stock/models.py:581 +#: stock/models.py:571 msgid "Destination Sales Order" msgstr "Ziel-Auftrag" -#: stock/models.py:588 +#: stock/models.py:578 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "Ablaufdatum für Lagerartikel. Bestand wird danach als abgelaufen gekennzeichnet" -#: stock/models.py:601 +#: stock/models.py:591 msgid "Delete on deplete" msgstr "Löschen wenn leer" -#: stock/models.py:601 +#: stock/models.py:591 msgid "Delete this Stock Item when stock is depleted" msgstr "Diesen Lagerartikel löschen wenn der Bestand aufgebraucht ist" -#: stock/models.py:611 stock/templates/stock/item.html:111 +#: stock/models.py:601 stock/templates/stock/item.html:111 msgid "Stock Item Notes" msgstr "Lagerartikel-Notizen" -#: stock/models.py:620 +#: stock/models.py:610 msgid "Single unit purchase price at time of purchase" msgstr "Preis für eine Einheit bei Einkauf" -#: stock/models.py:630 +#: stock/models.py:620 msgid "Scheduled for deletion" msgstr "Zur Löschung vorgesehen" -#: stock/models.py:631 +#: stock/models.py:621 msgid "This StockItem will be deleted by the background worker" msgstr "Dieser Lagerartikel wird vom Hintergrund-Prozess gelöscht" -#: stock/models.py:1094 +#: stock/models.py:1084 msgid "Part is not set as trackable" msgstr "Teil ist nicht verfolgbar" -#: stock/models.py:1100 +#: stock/models.py:1090 msgid "Quantity must be integer" msgstr "Anzahl muss eine Ganzzahl sein" -#: stock/models.py:1106 +#: stock/models.py:1096 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({n})" msgstr "Anzahl darf nicht die verfügbare Anzahl überschreiten ({n})" -#: stock/models.py:1109 +#: stock/models.py:1099 msgid "Serial numbers must be a list of integers" msgstr "Seriennummern muss eine Liste von Ganzzahlen sein" -#: stock/models.py:1112 +#: stock/models.py:1102 msgid "Quantity does not match serial numbers" msgstr "Anzahl stimmt nicht mit den Seriennummern überein" -#: stock/models.py:1119 +#: stock/models.py:1109 #, python-brace-format msgid "Serial numbers already exist: {exists}" msgstr "Seriennummern {exists} existieren bereits" -#: stock/models.py:1277 +#: stock/models.py:1267 msgid "StockItem cannot be moved as it is not in stock" msgstr "Lagerartikel kann nicht bewegt werden, da kein Bestand vorhanden ist" -#: stock/models.py:1775 +#: stock/models.py:1765 msgid "Entry notes" msgstr "Eintrags-Notizen" -#: stock/models.py:1832 +#: stock/models.py:1822 msgid "Value must be provided for this test" msgstr "Wert muss für diesen Test angegeben werden" -#: stock/models.py:1838 +#: stock/models.py:1828 msgid "Attachment must be uploaded for this test" msgstr "Anhang muss für diesen Test hochgeladen werden" -#: stock/models.py:1856 +#: stock/models.py:1846 msgid "Test name" msgstr "Name des Tests" -#: stock/models.py:1862 templates/js/translated/table_filters.js:266 +#: stock/models.py:1852 templates/js/translated/table_filters.js:266 msgid "Test result" msgstr "Testergebnis" -#: stock/models.py:1868 +#: stock/models.py:1858 msgid "Test output value" msgstr "Test Ausgabe Wert" -#: stock/models.py:1875 +#: stock/models.py:1865 msgid "Test result attachment" msgstr "Test Ergebnis Anhang" -#: stock/models.py:1881 +#: stock/models.py:1871 msgid "Test notes" msgstr "Test Notizen" -#: stock/serializers.py:166 +#: stock/serializers.py:171 msgid "Purchase price of this stock item" msgstr "Kaufpreis für diesen Lagerartikel" -#: stock/serializers.py:173 +#: stock/serializers.py:178 msgid "Purchase currency of this stock item" msgstr "Kaufwährung dieses Lagerartikels" -#: stock/serializers.py:287 +#: stock/serializers.py:292 msgid "Enter number of stock items to serialize" msgstr "Anzahl der zu serialisierenden Lagerartikel eingeben" -#: stock/serializers.py:302 +#: stock/serializers.py:307 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "Anzahl darf nicht die verfügbare Menge überschreiten ({q})" -#: stock/serializers.py:308 +#: stock/serializers.py:313 msgid "Enter serial numbers for new items" msgstr "Seriennummern für neue Teile eingeben" -#: stock/serializers.py:319 stock/serializers.py:686 +#: stock/serializers.py:324 stock/serializers.py:691 msgid "Destination stock location" msgstr "Ziel-Bestand" -#: stock/serializers.py:326 +#: stock/serializers.py:331 msgid "Optional note field" msgstr "Optionales Notizfeld" -#: stock/serializers.py:339 +#: stock/serializers.py:344 msgid "Serial numbers cannot be assigned to this part" msgstr "Seriennummern können diesem Teil nicht zugewiesen werden" -#: stock/serializers.py:556 +#: stock/serializers.py:561 msgid "StockItem primary key value" msgstr "Primärschlüssel Lagerelement" -#: stock/serializers.py:584 +#: stock/serializers.py:589 msgid "Stock transaction notes" msgstr "Bestandsbewegungsnotizen" -#: stock/serializers.py:594 +#: stock/serializers.py:599 msgid "A list of stock items must be provided" msgstr "Eine Liste der Lagerbestände muss angegeben werden" @@ -5631,125 +5658,131 @@ msgstr "Lagerartikel installieren" msgid "Install" msgstr "Installieren" -#: stock/templates/stock/item_base.html:106 +#: stock/templates/stock/item_base.html:108 msgid "Convert to variant" msgstr "in Variante ändern" -#: stock/templates/stock/item_base.html:109 +#: stock/templates/stock/item_base.html:111 msgid "Duplicate stock item" msgstr "Lagerartikel duplizieren" -#: stock/templates/stock/item_base.html:111 +#: stock/templates/stock/item_base.html:113 msgid "Edit stock item" msgstr "Lagerartikel bearbeiten" -#: stock/templates/stock/item_base.html:114 +#: stock/templates/stock/item_base.html:116 msgid "Delete stock item" msgstr "Lagerartikel löschen" -#: stock/templates/stock/item_base.html:136 -#: stock/templates/stock/item_base.html:386 -#: templates/js/translated/table_filters.js:247 -msgid "Expired" -msgstr "abgelaufen" - -#: stock/templates/stock/item_base.html:146 -#: stock/templates/stock/item_base.html:388 -#: templates/js/translated/table_filters.js:253 -msgid "Stale" -msgstr "überfällig" - -#: stock/templates/stock/item_base.html:161 -msgid "You are not in the list of owners of this item. This stock item cannot be edited." -msgstr "Sie gehören nicht zu den Eigentümern dieses Objekts und können es nicht ändern." - -#: stock/templates/stock/item_base.html:168 -msgid "This stock item is in production and cannot be edited." -msgstr "Dieser Lagerartikel wird gerade hergestellt und kann nicht geändert werden." - -#: stock/templates/stock/item_base.html:169 -msgid "Edit the stock item from the build view." -msgstr "Ändern des Lagerartikel in der Bauauftrag-Ansicht." - -#: stock/templates/stock/item_base.html:182 -msgid "This stock item has not passed all required tests" -msgstr "Dieser Lagerartikel hat nicht alle Tests bestanden" - -#: stock/templates/stock/item_base.html:190 -#, python-format -msgid "This stock item is allocated to Sales Order %(link)s (Quantity: %(qty)s)" -msgstr "Dieser Lagerartikel ist dem Auftrag %(link)s zugewiesen (Menge: %(qty)s)" - -#: stock/templates/stock/item_base.html:198 -#, python-format -msgid "This stock item is allocated to Build %(link)s (Quantity: %(qty)s)" -msgstr "Dieser Lagerartikel ist dem Bauauftrag %(link)s zugewiesen (Menge: %(qty)s)" - -#: stock/templates/stock/item_base.html:204 -msgid "This stock item is serialized - it has a unique serial number and the quantity cannot be adjusted." -msgstr "Diesesr Lagerartikel ist serialisiert. Es hat eine eindeutige Seriennummer und die Anzahl kann nicht angepasst werden." - -#: stock/templates/stock/item_base.html:208 -msgid "This stock item cannot be deleted as it has child items" -msgstr "Dieser Lagerartikel kann nicht gelöscht werden, da es Kinder besitzt" - -#: stock/templates/stock/item_base.html:212 -msgid "This stock item will be automatically deleted when all stock is depleted." -msgstr "Dieser Bestand wird automatisch gelöscht wenn der Bestand aufgebraucht ist." - -#: stock/templates/stock/item_base.html:241 +#: stock/templates/stock/item_base.html:154 msgid "previous page" msgstr "vorherige Seite" -#: stock/templates/stock/item_base.html:247 +#: stock/templates/stock/item_base.html:154 +msgid "Navigate to previous serial number" +msgstr "Zur vorherigen Seriennummer wechseln" + +#: stock/templates/stock/item_base.html:163 msgid "next page" msgstr "nächste Seite" -#: stock/templates/stock/item_base.html:290 -#: templates/js/translated/build.js:1035 -msgid "No location set" -msgstr "Kein Lagerort gesetzt" +#: stock/templates/stock/item_base.html:163 +msgid "Navigate to next serial number" +msgstr "Zur nächsten Seriennummer wechseln" -#: stock/templates/stock/item_base.html:297 -msgid "Barcode Identifier" -msgstr "Barcode-Bezeichner" - -#: stock/templates/stock/item_base.html:339 -msgid "Parent Item" -msgstr "Elternposition" - -#: stock/templates/stock/item_base.html:357 -msgid "No manufacturer set" -msgstr "Kein Hersteller ausgewählt" - -#: stock/templates/stock/item_base.html:386 +#: stock/templates/stock/item_base.html:190 #, python-format msgid "This StockItem expired on %(item.expiry_date)s" msgstr "Dieser Lagerartikel lief am %(item.expiry_date)s ab" -#: stock/templates/stock/item_base.html:388 +#: stock/templates/stock/item_base.html:190 +#: templates/js/translated/table_filters.js:247 +msgid "Expired" +msgstr "abgelaufen" + +#: stock/templates/stock/item_base.html:192 #, python-format msgid "This StockItem expires on %(item.expiry_date)s" msgstr "Dieser Lagerartikel läuft am %(item.expiry_date)s ab" -#: stock/templates/stock/item_base.html:395 -#: templates/js/translated/stock.js:1289 +#: stock/templates/stock/item_base.html:192 +#: templates/js/translated/table_filters.js:253 +msgid "Stale" +msgstr "überfällig" + +#: stock/templates/stock/item_base.html:199 +#: templates/js/translated/stock.js:1371 msgid "Last Updated" msgstr "Zuletzt aktualisiert" -#: stock/templates/stock/item_base.html:400 +#: stock/templates/stock/item_base.html:204 msgid "Last Stocktake" msgstr "Letzte Inventur" -#: stock/templates/stock/item_base.html:404 +#: stock/templates/stock/item_base.html:208 msgid "No stocktake performed" msgstr "Keine Inventur ausgeführt" -#: stock/templates/stock/item_base.html:415 +#: stock/templates/stock/item_base.html:226 +msgid "You are not in the list of owners of this item. This stock item cannot be edited." +msgstr "Sie gehören nicht zu den Eigentümern dieses Objekts und können es nicht ändern." + +#: stock/templates/stock/item_base.html:233 +msgid "This stock item is in production and cannot be edited." +msgstr "Dieser Lagerartikel wird gerade hergestellt und kann nicht geändert werden." + +#: stock/templates/stock/item_base.html:234 +msgid "Edit the stock item from the build view." +msgstr "Ändern des Lagerartikel in der Bauauftrag-Ansicht." + +#: stock/templates/stock/item_base.html:247 +msgid "This stock item has not passed all required tests" +msgstr "Dieser Lagerartikel hat nicht alle Tests bestanden" + +#: stock/templates/stock/item_base.html:255 +#, python-format +msgid "This stock item is allocated to Sales Order %(link)s (Quantity: %(qty)s)" +msgstr "Dieser Lagerartikel ist dem Auftrag %(link)s zugewiesen (Menge: %(qty)s)" + +#: stock/templates/stock/item_base.html:263 +#, python-format +msgid "This stock item is allocated to Build %(link)s (Quantity: %(qty)s)" +msgstr "Dieser Lagerartikel ist dem Bauauftrag %(link)s zugewiesen (Menge: %(qty)s)" + +#: stock/templates/stock/item_base.html:269 +msgid "This stock item is serialized - it has a unique serial number and the quantity cannot be adjusted." +msgstr "Diesesr Lagerartikel ist serialisiert. Es hat eine eindeutige Seriennummer und die Anzahl kann nicht angepasst werden." + +#: stock/templates/stock/item_base.html:273 +msgid "This stock item cannot be deleted as it has child items" +msgstr "Dieser Lagerartikel kann nicht gelöscht werden, da es Kinder besitzt" + +#: stock/templates/stock/item_base.html:277 +msgid "This stock item will be automatically deleted when all stock is depleted." +msgstr "Dieser Bestand wird automatisch gelöscht wenn der Bestand aufgebraucht ist." + +#: stock/templates/stock/item_base.html:318 +#: templates/js/translated/build.js:1035 +msgid "No location set" +msgstr "Kein Lagerort gesetzt" + +#: stock/templates/stock/item_base.html:325 +msgid "Barcode Identifier" +msgstr "Barcode-Bezeichner" + +#: stock/templates/stock/item_base.html:367 +msgid "Parent Item" +msgstr "Elternposition" + +#: stock/templates/stock/item_base.html:385 +msgid "No manufacturer set" +msgstr "Kein Hersteller ausgewählt" + +#: stock/templates/stock/item_base.html:410 msgid "Tests" msgstr "Tests" -#: stock/templates/stock/item_base.html:505 +#: stock/templates/stock/item_base.html:500 msgid "Edit Stock Status" msgstr "Bestandsstatus bearbeiten" @@ -5827,30 +5860,35 @@ msgstr "Neuen Lagerort anlegen" msgid "New Location" msgstr "Neuer Lagerort" -#: stock/templates/stock/location.html:86 +#: stock/templates/stock/location.html:95 +#: stock/templates/stock/location.html:101 +msgid "Location Path" +msgstr "Lagerortpfad" + +#: stock/templates/stock/location.html:102 msgid "Top level stock location" msgstr "Oberster Lagerstandort" -#: stock/templates/stock/location.html:95 +#: stock/templates/stock/location.html:115 msgid "You are not in the list of owners of this location. This stock location cannot be edited." msgstr "Sie sind nicht auf der Liste der Besitzer dieses Lagerorts. Der Bestands-Lagerort kann nicht verändert werden." -#: stock/templates/stock/location.html:113 -#: stock/templates/stock/location.html:160 +#: stock/templates/stock/location.html:128 +#: stock/templates/stock/location.html:175 #: stock/templates/stock/location_sidebar.html:5 msgid "Sublocations" msgstr "Unter-Lagerorte" -#: stock/templates/stock/location.html:127 templates/InvenTree/search.html:170 +#: stock/templates/stock/location.html:142 templates/InvenTree/search.html:170 #: templates/stats.html:97 users/models.py:42 msgid "Stock Locations" msgstr "Bestand-Lagerorte" -#: stock/templates/stock/location.html:167 templates/stock_table.html:30 +#: stock/templates/stock/location.html:182 templates/stock_table.html:30 msgid "Printing Actions" msgstr "Druck Aktionen" -#: stock/templates/stock/location.html:171 templates/stock_table.html:34 +#: stock/templates/stock/location.html:186 templates/stock_table.html:34 msgid "Print labels" msgstr "Label drucken" @@ -5944,7 +5982,7 @@ msgstr "Lagerartikel-QR-Code" msgid "Uninstall Stock Items" msgstr "Lagerartikel deinstallieren" -#: stock/views.py:760 templates/js/translated/stock.js:648 +#: stock/views.py:760 templates/js/translated/stock.js:730 msgid "Confirm stock adjustment" msgstr "Bestands-Anpassung bestätigen" @@ -5952,7 +5990,7 @@ msgstr "Bestands-Anpassung bestätigen" msgid "Uninstalled stock items" msgstr "Lagerartikel deinstalliert" -#: stock/views.py:793 templates/js/translated/stock.js:318 +#: stock/views.py:793 templates/js/translated/stock.js:319 msgid "Edit Stock Item" msgstr "Lagerartikel bearbeiten" @@ -5964,7 +6002,7 @@ msgstr "Neuen Lagerort erstellen" msgid "Create new Stock Item" msgstr "Neuen Lagerartikel hinzufügen" -#: stock/views.py:1186 templates/js/translated/stock.js:298 +#: stock/views.py:1186 templates/js/translated/stock.js:299 msgid "Duplicate Stock Item" msgstr "Bestand duplizieren" @@ -6870,7 +6908,7 @@ msgstr "Dadurch wird die Verknüpfung zwischen diesem Lagerartikel und dem Barco msgid "Unlink" msgstr "Entfernen" -#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:600 +#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:682 msgid "Remove stock item" msgstr "Lagerartikel entfernen" @@ -6965,7 +7003,7 @@ msgid "View BOM" msgstr "Stückliste anzeigen" #: templates/js/translated/bom.js:608 templates/js/translated/build.js:1183 -#: templates/js/translated/order.js:1320 +#: templates/js/translated/order.js:1319 msgid "Actions" msgstr "Aktionen" @@ -7057,7 +7095,7 @@ msgstr "Endprodukte fertigstellen" msgid "No build order allocations found" msgstr "Keine Allokationen für Bauauftrag gefunden" -#: templates/js/translated/build.js:424 templates/js/translated/order.js:1194 +#: templates/js/translated/build.js:424 templates/js/translated/order.js:1193 msgid "Location not specified" msgstr "Standort nicht angegeben" @@ -7066,12 +7104,12 @@ msgid "No active build outputs found" msgstr "Keine aktiven Endprodukte gefunden" #: templates/js/translated/build.js:1052 templates/js/translated/build.js:1760 -#: templates/js/translated/order.js:1327 +#: templates/js/translated/order.js:1326 msgid "Edit stock allocation" msgstr "Bestands-Zuordnung bearbeiten" #: templates/js/translated/build.js:1054 templates/js/translated/build.js:1761 -#: templates/js/translated/order.js:1328 +#: templates/js/translated/order.js:1327 msgid "Delete stock allocation" msgstr "Bestands-Zuordnung löschen" @@ -7092,11 +7130,11 @@ msgid "Quantity Per" msgstr "Anzahl pro" #: templates/js/translated/build.js:1134 templates/js/translated/build.js:1360 -#: templates/js/translated/build.js:1756 templates/js/translated/order.js:1557 +#: templates/js/translated/build.js:1756 templates/js/translated/order.js:1556 msgid "Allocated" msgstr "Zugeordnet" -#: templates/js/translated/build.js:1190 templates/js/translated/order.js:1611 +#: templates/js/translated/build.js:1190 templates/js/translated/order.js:1610 msgid "Build stock" msgstr "Bestand bauen" @@ -7104,7 +7142,7 @@ msgstr "Bestand bauen" msgid "Order stock" msgstr "Bestand bestellen" -#: templates/js/translated/build.js:1197 templates/js/translated/order.js:1604 +#: templates/js/translated/build.js:1197 templates/js/translated/order.js:1603 msgid "Allocate stock" msgstr "Bestand zuweisen" @@ -7145,9 +7183,9 @@ msgstr "Keine passenden Lagerbestände" msgid "No builds matching query" msgstr "Keine Bauaufträge passen zur Anfrage" -#: templates/js/translated/build.js:1593 templates/js/translated/part.js:966 -#: templates/js/translated/part.js:1377 templates/js/translated/stock.js:1094 -#: templates/js/translated/stock.js:1871 +#: templates/js/translated/build.js:1593 templates/js/translated/part.js:1147 +#: templates/js/translated/part.js:1558 templates/js/translated/stock.js:1176 +#: templates/js/translated/stock.js:1953 msgid "Select" msgstr "Auswählen" @@ -7155,7 +7193,7 @@ msgstr "Auswählen" msgid "Build order is overdue" msgstr "Bauauftrag ist überfällig" -#: templates/js/translated/build.js:1674 templates/js/translated/stock.js:2090 +#: templates/js/translated/build.js:1674 templates/js/translated/stock.js:2172 msgid "No user information" msgstr "Keine Benutzerinformation" @@ -7199,10 +7237,6 @@ msgstr "Zuliefererteil bearbeiten" msgid "Delete Supplier Part" msgstr "Zuliefererteil entfernen" -#: templates/js/translated/company.js:265 -msgid "Edit Company" -msgstr "Firma bearbeiten" - #: templates/js/translated/company.js:286 msgid "Add new Company" msgstr "Neue Firma hinzufügen" @@ -7232,34 +7266,34 @@ msgid "No manufacturer parts found" msgstr "Keine Herstellerteile gefunden" #: templates/js/translated/company.js:497 -#: templates/js/translated/company.js:754 templates/js/translated/part.js:449 -#: templates/js/translated/part.js:534 +#: templates/js/translated/company.js:754 templates/js/translated/part.js:456 +#: templates/js/translated/part.js:541 msgid "Template part" msgstr "Vorlagenteil" #: templates/js/translated/company.js:501 -#: templates/js/translated/company.js:758 templates/js/translated/part.js:453 -#: templates/js/translated/part.js:538 +#: templates/js/translated/company.js:758 templates/js/translated/part.js:460 +#: templates/js/translated/part.js:545 msgid "Assembled part" msgstr "Baugruppe" -#: templates/js/translated/company.js:628 templates/js/translated/part.js:626 +#: templates/js/translated/company.js:628 templates/js/translated/part.js:633 msgid "No parameters found" msgstr "Keine Parameter gefunden" -#: templates/js/translated/company.js:665 templates/js/translated/part.js:668 +#: templates/js/translated/company.js:665 templates/js/translated/part.js:675 msgid "Edit parameter" msgstr "Parameter bearbeiten" -#: templates/js/translated/company.js:666 templates/js/translated/part.js:669 +#: templates/js/translated/company.js:666 templates/js/translated/part.js:676 msgid "Delete parameter" msgstr "Parameter löschen" -#: templates/js/translated/company.js:685 templates/js/translated/part.js:686 +#: templates/js/translated/company.js:685 templates/js/translated/part.js:693 msgid "Edit Parameter" msgstr "Parameter bearbeiten" -#: templates/js/translated/company.js:696 templates/js/translated/part.js:698 +#: templates/js/translated/company.js:696 templates/js/translated/part.js:705 msgid "Delete Parameter" msgstr "Parameter löschen" @@ -7348,7 +7382,7 @@ msgid "NO" msgstr "NEIN" #: templates/js/translated/label.js:29 templates/js/translated/report.js:118 -#: templates/js/translated/stock.js:624 +#: templates/js/translated/stock.js:706 msgid "Select Stock Items" msgstr "Lagerartikel auswählen" @@ -7504,11 +7538,11 @@ msgstr "Auftrag anlegen" msgid "Export Order" msgstr "Bestellung exportieren" -#: templates/js/translated/order.js:211 templates/js/translated/stock.js:423 +#: templates/js/translated/order.js:211 templates/js/translated/stock.js:505 msgid "Format" msgstr "Format" -#: templates/js/translated/order.js:212 templates/js/translated/stock.js:424 +#: templates/js/translated/order.js:212 templates/js/translated/stock.js:506 msgid "Select file format" msgstr "Dateiformat auswählen" @@ -7524,7 +7558,7 @@ msgstr "Mindestens eine Position muss ausgewählt werden" msgid "Quantity to receive" msgstr "Zu erhaltende Menge" -#: templates/js/translated/order.js:360 templates/js/translated/stock.js:1673 +#: templates/js/translated/order.js:360 templates/js/translated/stock.js:1755 msgid "Stock Status" msgstr "Status" @@ -7548,321 +7582,321 @@ msgstr "Empfang der Teile bestätigen" msgid "Receive Purchase Order Items" msgstr "Bestellpositionen erhalten" -#: templates/js/translated/order.js:627 +#: templates/js/translated/order.js:627 templates/js/translated/part.js:746 msgid "No purchase orders found" msgstr "Keine Bestellungen gefunden" -#: templates/js/translated/order.js:652 templates/js/translated/order.js:1063 +#: templates/js/translated/order.js:659 templates/js/translated/order.js:1062 msgid "Order is overdue" msgstr "Bestellung überfällig" -#: templates/js/translated/order.js:772 templates/js/translated/order.js:1646 +#: templates/js/translated/order.js:771 templates/js/translated/order.js:1645 msgid "Edit Line Item" msgstr "Position bearbeiten" -#: templates/js/translated/order.js:784 templates/js/translated/order.js:1657 +#: templates/js/translated/order.js:783 templates/js/translated/order.js:1656 msgid "Delete Line Item" msgstr "Position löschen" -#: templates/js/translated/order.js:823 +#: templates/js/translated/order.js:822 msgid "No line items found" msgstr "Keine Positionen gefunden" -#: templates/js/translated/order.js:850 templates/js/translated/order.js:1467 +#: templates/js/translated/order.js:849 templates/js/translated/order.js:1466 msgid "Total" msgstr "Summe" -#: templates/js/translated/order.js:904 templates/js/translated/order.js:1492 -#: templates/js/translated/part.js:1594 templates/js/translated/part.js:1805 +#: templates/js/translated/order.js:903 templates/js/translated/order.js:1491 +#: templates/js/translated/part.js:1775 templates/js/translated/part.js:1986 msgid "Unit Price" msgstr "Stück-Preis" -#: templates/js/translated/order.js:919 templates/js/translated/order.js:1508 +#: templates/js/translated/order.js:918 templates/js/translated/order.js:1507 msgid "Total Price" msgstr "Gesamtpreis" -#: templates/js/translated/order.js:997 templates/js/translated/order.js:1617 +#: templates/js/translated/order.js:996 templates/js/translated/order.js:1616 msgid "Edit line item" msgstr "Position bearbeiten" -#: templates/js/translated/order.js:998 +#: templates/js/translated/order.js:997 msgid "Delete line item" msgstr "Position löschen" -#: templates/js/translated/order.js:1002 +#: templates/js/translated/order.js:1001 templates/js/translated/part.js:878 msgid "Receive line item" msgstr "Position empfangen" -#: templates/js/translated/order.js:1039 +#: templates/js/translated/order.js:1038 msgid "No sales orders found" msgstr "Keine Aufträge gefunden" -#: templates/js/translated/order.js:1077 +#: templates/js/translated/order.js:1076 msgid "Invalid Customer" msgstr "Ungültiger Kunde" -#: templates/js/translated/order.js:1155 +#: templates/js/translated/order.js:1154 msgid "No sales order allocations found" msgstr "Keine Allokationen für Verkaufsaufträge gefunden" -#: templates/js/translated/order.js:1248 +#: templates/js/translated/order.js:1247 msgid "Edit Stock Allocation" msgstr "Bestandszuordnung bearbeiten" -#: templates/js/translated/order.js:1265 +#: templates/js/translated/order.js:1264 msgid "Confirm Delete Operation" msgstr "Löschvorgang bestätigen" -#: templates/js/translated/order.js:1266 +#: templates/js/translated/order.js:1265 msgid "Delete Stock Allocation" msgstr "Bestands-Zuordnung löschen" -#: templates/js/translated/order.js:1308 +#: templates/js/translated/order.js:1307 msgid "Stock location not specified" msgstr "Lagerstandort nicht angegeben" -#: templates/js/translated/order.js:1557 +#: templates/js/translated/order.js:1556 msgid "Fulfilled" msgstr "Erledigt" -#: templates/js/translated/order.js:1601 +#: templates/js/translated/order.js:1600 msgid "Allocate serial numbers" msgstr "Seriennummern zuweisen" -#: templates/js/translated/order.js:1607 +#: templates/js/translated/order.js:1606 msgid "Purchase stock" msgstr "Bestand kaufen" -#: templates/js/translated/order.js:1614 templates/js/translated/order.js:1793 +#: templates/js/translated/order.js:1613 templates/js/translated/order.js:1792 msgid "Calculate price" msgstr "Preis berechnen" -#: templates/js/translated/order.js:1618 +#: templates/js/translated/order.js:1617 msgid "Delete line item " msgstr "Position löschen " -#: templates/js/translated/order.js:1741 +#: templates/js/translated/order.js:1740 msgid "Allocate Stock Item" msgstr "Bestand zuweisen" -#: templates/js/translated/order.js:1801 +#: templates/js/translated/order.js:1800 msgid "Update Unit Price" msgstr "Stückpreis aktualisieren" -#: templates/js/translated/order.js:1815 +#: templates/js/translated/order.js:1814 msgid "No matching line items" msgstr "Keine passenden Positionen gefunden" -#: templates/js/translated/part.js:51 +#: templates/js/translated/part.js:52 msgid "Part Attributes" msgstr "Teileigenschaften" -#: templates/js/translated/part.js:55 +#: templates/js/translated/part.js:56 msgid "Part Creation Options" msgstr "Erstellungsoptionen für Teile" -#: templates/js/translated/part.js:59 +#: templates/js/translated/part.js:60 msgid "Part Duplication Options" msgstr "Einstellungen für Teilkopien" -#: templates/js/translated/part.js:63 +#: templates/js/translated/part.js:64 msgid "Supplier Options" msgstr "Zuliefereroptionen" -#: templates/js/translated/part.js:77 +#: templates/js/translated/part.js:78 msgid "Add Part Category" msgstr "Teil-Kategorie hinzufügen" -#: templates/js/translated/part.js:166 +#: templates/js/translated/part.js:162 msgid "Create Initial Stock" msgstr "Anfänglichen Bestand erstellen" -#: templates/js/translated/part.js:167 +#: templates/js/translated/part.js:163 msgid "Create an initial stock item for this part" msgstr "Anfänglichen Bestand für dieses Teil erstellen" -#: templates/js/translated/part.js:174 +#: templates/js/translated/part.js:170 msgid "Initial Stock Quantity" msgstr "Start-Bestandsmenge" -#: templates/js/translated/part.js:175 +#: templates/js/translated/part.js:171 msgid "Specify initial stock quantity for this part" msgstr "Menge des anfänglichen Bestands für dieses Teil angeben" -#: templates/js/translated/part.js:182 +#: templates/js/translated/part.js:178 msgid "Select destination stock location" msgstr "Zielstandort auswählen" -#: templates/js/translated/part.js:193 +#: templates/js/translated/part.js:196 msgid "Copy Category Parameters" msgstr "Kategorieparameter kopieren" -#: templates/js/translated/part.js:194 +#: templates/js/translated/part.js:197 msgid "Copy parameter templates from selected part category" msgstr "Parametervorlagen aus der ausgewählten Bauteilkategorie kopieren" -#: templates/js/translated/part.js:202 +#: templates/js/translated/part.js:205 msgid "Add Supplier Data" msgstr "Zuliefererdaten hinzufügen" -#: templates/js/translated/part.js:203 +#: templates/js/translated/part.js:206 msgid "Create initial supplier data for this part" msgstr "Erstelle ersten Lieferanten für dieses Teil" -#: templates/js/translated/part.js:259 +#: templates/js/translated/part.js:262 msgid "Copy Image" msgstr "Bild kopieren" -#: templates/js/translated/part.js:260 +#: templates/js/translated/part.js:263 msgid "Copy image from original part" msgstr "Bild vom Originalteil kopieren" -#: templates/js/translated/part.js:268 +#: templates/js/translated/part.js:271 msgid "Copy bill of materials from original part" msgstr "Stückliste vom Originalteil kopieren" -#: templates/js/translated/part.js:275 +#: templates/js/translated/part.js:278 msgid "Copy Parameters" msgstr "Parameter kopieren" -#: templates/js/translated/part.js:276 +#: templates/js/translated/part.js:279 msgid "Copy parameter data from original part" msgstr "Parameterdaten vom Originalteil kopieren" -#: templates/js/translated/part.js:289 +#: templates/js/translated/part.js:292 msgid "Parent part category" msgstr "Übergeordnete Teilkategorie" -#: templates/js/translated/part.js:333 +#: templates/js/translated/part.js:336 msgid "Edit Part" msgstr "Teil bearbeiten" -#: templates/js/translated/part.js:335 +#: templates/js/translated/part.js:338 msgid "Part edited" msgstr "Teil bearbeitet" -#: templates/js/translated/part.js:403 +#: templates/js/translated/part.js:410 msgid "You are subscribed to notifications for this item" msgstr "Sie haben Benachrichtigungen für dieses Teil abonniert" -#: templates/js/translated/part.js:405 +#: templates/js/translated/part.js:412 msgid "You have subscribed to notifications for this item" msgstr "Sie haben Benachrichtigungen für dieses Teil abonniert" -#: templates/js/translated/part.js:410 +#: templates/js/translated/part.js:417 msgid "Subscribe to notifications for this item" msgstr "Benachrichtigungen für dieses Teil abonnieren" -#: templates/js/translated/part.js:412 +#: templates/js/translated/part.js:419 msgid "You have unsubscribed to notifications for this item" msgstr "Sie haben Benachrichtigungen für dieses Teil abgemeldet" -#: templates/js/translated/part.js:441 templates/js/translated/part.js:526 +#: templates/js/translated/part.js:448 templates/js/translated/part.js:533 msgid "Trackable part" msgstr "Nachverfolgbares Teil" -#: templates/js/translated/part.js:445 templates/js/translated/part.js:530 +#: templates/js/translated/part.js:452 templates/js/translated/part.js:537 msgid "Virtual part" msgstr "virtuelles Teil" -#: templates/js/translated/part.js:457 +#: templates/js/translated/part.js:464 msgid "Subscribed part" msgstr "Abonnierter Teil" -#: templates/js/translated/part.js:461 +#: templates/js/translated/part.js:468 msgid "Salable part" msgstr "Verkäufliches Teil" -#: templates/js/translated/part.js:576 +#: templates/js/translated/part.js:583 msgid "No variants found" msgstr "Keine Varianten gefunden" -#: templates/js/translated/part.js:765 +#: templates/js/translated/part.js:946 msgid "Delete part relationship" msgstr "Teile-Beziehung löschen" -#: templates/js/translated/part.js:789 +#: templates/js/translated/part.js:970 msgid "Delete Part Relationship" msgstr "Teile-Beziehung löschen" -#: templates/js/translated/part.js:856 templates/js/translated/part.js:1116 +#: templates/js/translated/part.js:1037 templates/js/translated/part.js:1297 msgid "No parts found" msgstr "Keine Teile gefunden" -#: templates/js/translated/part.js:1026 +#: templates/js/translated/part.js:1207 msgid "No category" msgstr "Keine Kategorie" -#: templates/js/translated/part.js:1049 +#: templates/js/translated/part.js:1230 #: templates/js/translated/table_filters.js:381 msgid "Low stock" msgstr "Bestand niedrig" -#: templates/js/translated/part.js:1140 templates/js/translated/part.js:1312 -#: templates/js/translated/stock.js:1832 +#: templates/js/translated/part.js:1321 templates/js/translated/part.js:1493 +#: templates/js/translated/stock.js:1914 msgid "Display as list" msgstr "Listenansicht" -#: templates/js/translated/part.js:1156 +#: templates/js/translated/part.js:1337 msgid "Display as grid" msgstr "Rasteransicht" -#: templates/js/translated/part.js:1331 templates/js/translated/stock.js:1851 +#: templates/js/translated/part.js:1512 templates/js/translated/stock.js:1933 msgid "Display as tree" msgstr "Baumansicht" -#: templates/js/translated/part.js:1395 +#: templates/js/translated/part.js:1576 msgid "Subscribed category" msgstr "Abonnierte Kategorie" -#: templates/js/translated/part.js:1409 templates/js/translated/stock.js:1895 +#: templates/js/translated/part.js:1590 templates/js/translated/stock.js:1977 msgid "Path" msgstr "Pfad" -#: templates/js/translated/part.js:1453 +#: templates/js/translated/part.js:1634 msgid "No test templates matching query" msgstr "Keine zur Anfrage passenden Testvorlagen" -#: templates/js/translated/part.js:1504 templates/js/translated/stock.js:816 +#: templates/js/translated/part.js:1685 templates/js/translated/stock.js:898 msgid "Edit test result" msgstr "Testergebnis bearbeiten" -#: templates/js/translated/part.js:1505 templates/js/translated/stock.js:817 +#: templates/js/translated/part.js:1686 templates/js/translated/stock.js:899 msgid "Delete test result" msgstr "Testergebnis löschen" -#: templates/js/translated/part.js:1511 +#: templates/js/translated/part.js:1692 msgid "This test is defined for a parent part" msgstr "Dieses Testergebnis ist für ein Hauptteil" -#: templates/js/translated/part.js:1533 +#: templates/js/translated/part.js:1714 msgid "Edit Test Result Template" msgstr "Testergebnis-Vorlage bearbeiten" -#: templates/js/translated/part.js:1547 +#: templates/js/translated/part.js:1728 msgid "Delete Test Result Template" msgstr "Testergebnis-Vorlage löschen" -#: templates/js/translated/part.js:1572 +#: templates/js/translated/part.js:1753 #, python-brace-format msgid "No ${human_name} information found" msgstr "Keine ${human_name} Informationen gefunden" -#: templates/js/translated/part.js:1627 +#: templates/js/translated/part.js:1808 #, python-brace-format msgid "Edit ${human_name}" msgstr "${human_name} bearbeiten" -#: templates/js/translated/part.js:1628 +#: templates/js/translated/part.js:1809 #, python-brace-format msgid "Delete ${human_name}" msgstr "${human_name} löschen" -#: templates/js/translated/part.js:1729 +#: templates/js/translated/part.js:1910 msgid "Single Price" msgstr "Einzelpreis" -#: templates/js/translated/part.js:1748 +#: templates/js/translated/part.js:1929 msgid "Single Price Difference" msgstr "Einzelpreisdifferenz" @@ -7932,276 +7966,300 @@ msgstr "Aufträge auswählen" msgid "Sales Order(s) must be selected before printing report" msgstr "Auftrag muss vor dem Berichtsdruck ausgewählt werden" -#: templates/js/translated/stock.js:70 +#: templates/js/translated/stock.js:71 msgid "Serialize Stock Item" msgstr "Lagerartikel serialisieren" -#: templates/js/translated/stock.js:88 templates/js/translated/stock.js:167 +#: templates/js/translated/stock.js:89 templates/js/translated/stock.js:168 msgid "Next available serial number" msgstr "Nächste verfügbare Seriennummer" -#: templates/js/translated/stock.js:90 templates/js/translated/stock.js:169 +#: templates/js/translated/stock.js:91 templates/js/translated/stock.js:170 msgid "Latest serial number" msgstr "Letzte Seriennummer" -#: templates/js/translated/stock.js:104 +#: templates/js/translated/stock.js:105 msgid "Parent stock location" msgstr "Übergeordneter Lagerort" -#: templates/js/translated/stock.js:140 +#: templates/js/translated/stock.js:141 msgid "New Stock Location" msgstr "Neuer Lagerstandort" -#: templates/js/translated/stock.js:180 +#: templates/js/translated/stock.js:181 msgid "This part cannot be serialized" msgstr "Dieser Teil kann nicht serialisiert werden" -#: templates/js/translated/stock.js:219 +#: templates/js/translated/stock.js:220 msgid "Enter initial quantity for this stock item" msgstr "Ausgangsmenge für diesen Lagerartikel eingeben" -#: templates/js/translated/stock.js:225 +#: templates/js/translated/stock.js:226 msgid "Enter serial numbers for new stock (or leave blank)" msgstr "Seriennummern für neue Lagerartikel eingeben (oder leer lassen)" -#: templates/js/translated/stock.js:368 +#: templates/js/translated/stock.js:369 msgid "Created new stock item" msgstr "Neuer Lagerartikel erstellt" -#: templates/js/translated/stock.js:381 +#: templates/js/translated/stock.js:382 msgid "Created multiple stock items" msgstr "Mehrere Lagerartikel erstellt" -#: templates/js/translated/stock.js:420 +#: templates/js/translated/stock.js:407 +msgid "Find Serial Number" +msgstr "Seriennummer finden" + +#: templates/js/translated/stock.js:411 templates/js/translated/stock.js:412 +msgid "Enter serial number" +msgstr "Seriennummer eingeben" + +#: templates/js/translated/stock.js:428 +msgid "Enter a serial number" +msgstr "Eine Seriennummer eingeben" + +#: templates/js/translated/stock.js:448 +msgid "No matching serial number" +msgstr "Keine passende Seriennummer" + +#: templates/js/translated/stock.js:457 +msgid "More than one matching result found" +msgstr "Mehrere Ergebnisse gefunden" + +#: templates/js/translated/stock.js:502 msgid "Export Stock" msgstr "Bestand exportieren" -#: templates/js/translated/stock.js:431 +#: templates/js/translated/stock.js:513 msgid "Include Sublocations" msgstr "Einschließlich Unterstandorte" -#: templates/js/translated/stock.js:432 +#: templates/js/translated/stock.js:514 msgid "Include stock items in sublocations" msgstr "Lagerartikel in untergeordneten Lagerorten einschließen" -#: templates/js/translated/stock.js:474 +#: templates/js/translated/stock.js:556 msgid "Transfer Stock" msgstr "Bestand verschieben" -#: templates/js/translated/stock.js:475 +#: templates/js/translated/stock.js:557 msgid "Move" msgstr "Verschieben" -#: templates/js/translated/stock.js:481 +#: templates/js/translated/stock.js:563 msgid "Count Stock" msgstr "Bestand zählen" -#: templates/js/translated/stock.js:482 +#: templates/js/translated/stock.js:564 msgid "Count" msgstr "Anzahl" -#: templates/js/translated/stock.js:486 +#: templates/js/translated/stock.js:568 msgid "Remove Stock" msgstr "Bestand entfernen" -#: templates/js/translated/stock.js:487 +#: templates/js/translated/stock.js:569 msgid "Take" msgstr "Entfernen" -#: templates/js/translated/stock.js:491 +#: templates/js/translated/stock.js:573 msgid "Add Stock" msgstr "Bestand hinzufügen" -#: templates/js/translated/stock.js:492 users/models.py:200 +#: templates/js/translated/stock.js:574 users/models.py:200 msgid "Add" msgstr "Hinzufügen" -#: templates/js/translated/stock.js:496 templates/stock_table.html:56 +#: templates/js/translated/stock.js:578 templates/stock_table.html:56 msgid "Delete Stock" msgstr "Bestand löschen" -#: templates/js/translated/stock.js:585 +#: templates/js/translated/stock.js:667 msgid "Quantity cannot be adjusted for serialized stock" msgstr "Menge von serialisiertem Bestand kann nicht bearbeitet werden" -#: templates/js/translated/stock.js:585 +#: templates/js/translated/stock.js:667 msgid "Specify stock quantity" msgstr "Bestandsanzahl angeben" -#: templates/js/translated/stock.js:625 +#: templates/js/translated/stock.js:707 msgid "You must select at least one available stock item" msgstr "Sie müssen mindestens einen Lagerartikel auswählen" -#: templates/js/translated/stock.js:783 +#: templates/js/translated/stock.js:865 msgid "PASS" msgstr "ERFOLGREICH" -#: templates/js/translated/stock.js:785 +#: templates/js/translated/stock.js:867 msgid "FAIL" msgstr "FEHLGESCHLAGEN" -#: templates/js/translated/stock.js:790 +#: templates/js/translated/stock.js:872 msgid "NO RESULT" msgstr "KEIN ERGEBNIS" -#: templates/js/translated/stock.js:812 +#: templates/js/translated/stock.js:894 msgid "Add test result" msgstr "Testergebnis hinzufügen" -#: templates/js/translated/stock.js:838 +#: templates/js/translated/stock.js:920 msgid "No test results found" msgstr "Keine Testergebnisse gefunden" -#: templates/js/translated/stock.js:895 +#: templates/js/translated/stock.js:977 msgid "Test Date" msgstr "Testdatum" -#: templates/js/translated/stock.js:1002 +#: templates/js/translated/stock.js:1084 msgid "In production" msgstr "In Arbeit" -#: templates/js/translated/stock.js:1006 +#: templates/js/translated/stock.js:1088 msgid "Installed in Stock Item" msgstr "In Lagerartikel installiert" -#: templates/js/translated/stock.js:1010 +#: templates/js/translated/stock.js:1092 msgid "Shipped to customer" msgstr "an Kunde versand" -#: templates/js/translated/stock.js:1014 +#: templates/js/translated/stock.js:1096 msgid "Assigned to Sales Order" msgstr "Auftrag zugewiesen" -#: templates/js/translated/stock.js:1020 +#: templates/js/translated/stock.js:1102 msgid "No stock location set" msgstr "Kein Lagerort gesetzt" -#: templates/js/translated/stock.js:1178 +#: templates/js/translated/stock.js:1260 msgid "Stock item is in production" msgstr "Lagerartikel wird produziert" -#: templates/js/translated/stock.js:1183 +#: templates/js/translated/stock.js:1265 msgid "Stock item assigned to sales order" msgstr "Lagerartikel wurde Auftrag zugewiesen" -#: templates/js/translated/stock.js:1186 +#: templates/js/translated/stock.js:1268 msgid "Stock item assigned to customer" msgstr "Lagerartikel wurde Kunden zugewiesen" -#: templates/js/translated/stock.js:1190 +#: templates/js/translated/stock.js:1272 msgid "Stock item has expired" msgstr "Lagerartikel ist abgelaufen" -#: templates/js/translated/stock.js:1192 +#: templates/js/translated/stock.js:1274 msgid "Stock item will expire soon" msgstr "Lagerartikel läuft demnächst ab" -#: templates/js/translated/stock.js:1196 +#: templates/js/translated/stock.js:1278 msgid "Stock item has been allocated" msgstr "Lagerartikel zugewiesen" -#: templates/js/translated/stock.js:1200 +#: templates/js/translated/stock.js:1282 msgid "Stock item has been installed in another item" msgstr "Lagerartikel in anderem Element verbaut" -#: templates/js/translated/stock.js:1207 +#: templates/js/translated/stock.js:1289 msgid "Stock item has been rejected" msgstr "Lagerartikel abgewiesen" -#: templates/js/translated/stock.js:1209 +#: templates/js/translated/stock.js:1291 msgid "Stock item is lost" msgstr "Lagerartikel verloren" -#: templates/js/translated/stock.js:1211 +#: templates/js/translated/stock.js:1293 msgid "Stock item is destroyed" msgstr "Lagerartikel zerstört" -#: templates/js/translated/stock.js:1215 +#: templates/js/translated/stock.js:1297 #: templates/js/translated/table_filters.js:183 msgid "Depleted" msgstr "gelöscht" -#: templates/js/translated/stock.js:1265 +#: templates/js/translated/stock.js:1347 msgid "Stocktake" msgstr "Inventur" -#: templates/js/translated/stock.js:1338 +#: templates/js/translated/stock.js:1420 msgid "Supplier part not specified" msgstr "Zuliefererteil nicht angegeben" -#: templates/js/translated/stock.js:1376 +#: templates/js/translated/stock.js:1458 msgid "No stock items matching query" msgstr "Keine zur Anfrage passenden Lagerartikel" -#: templates/js/translated/stock.js:1397 templates/js/translated/stock.js:1445 +#: templates/js/translated/stock.js:1479 templates/js/translated/stock.js:1527 msgid "items" msgstr "Teile" -#: templates/js/translated/stock.js:1485 +#: templates/js/translated/stock.js:1567 msgid "batches" msgstr "lose" -#: templates/js/translated/stock.js:1512 +#: templates/js/translated/stock.js:1594 msgid "locations" msgstr "Lagerorte" -#: templates/js/translated/stock.js:1514 +#: templates/js/translated/stock.js:1596 msgid "Undefined location" msgstr "unbekannter Lagerort" -#: templates/js/translated/stock.js:1688 +#: templates/js/translated/stock.js:1770 msgid "Set Stock Status" msgstr "Status setzen" -#: templates/js/translated/stock.js:1702 +#: templates/js/translated/stock.js:1784 msgid "Select Status Code" msgstr "Status Code setzen" -#: templates/js/translated/stock.js:1703 +#: templates/js/translated/stock.js:1785 msgid "Status code must be selected" msgstr "Status Code muss ausgewählt werden" -#: templates/js/translated/stock.js:1927 +#: templates/js/translated/stock.js:2009 msgid "Invalid date" msgstr "Ungültiges Datum" -#: templates/js/translated/stock.js:1974 +#: templates/js/translated/stock.js:2031 +msgid "Details" +msgstr "Details" + +#: templates/js/translated/stock.js:2056 msgid "Location no longer exists" msgstr "Standort nicht mehr vorhanden" -#: templates/js/translated/stock.js:1993 +#: templates/js/translated/stock.js:2075 msgid "Purchase order no longer exists" msgstr "Bestellung existiert nicht mehr" -#: templates/js/translated/stock.js:2012 +#: templates/js/translated/stock.js:2094 msgid "Customer no longer exists" msgstr "Kunde existiert nicht mehr" -#: templates/js/translated/stock.js:2030 +#: templates/js/translated/stock.js:2112 msgid "Stock item no longer exists" msgstr "Lagerartikel existiert nicht mehr" -#: templates/js/translated/stock.js:2053 +#: templates/js/translated/stock.js:2135 msgid "Added" msgstr "Hinzugefügt" -#: templates/js/translated/stock.js:2061 +#: templates/js/translated/stock.js:2143 msgid "Removed" msgstr "Entfernt" -#: templates/js/translated/stock.js:2102 +#: templates/js/translated/stock.js:2184 msgid "Edit tracking entry" msgstr "Tracking-Eintrag bearbeiten" -#: templates/js/translated/stock.js:2103 +#: templates/js/translated/stock.js:2185 msgid "Delete tracking entry" msgstr "Tracking-Eintrag löschen" -#: templates/js/translated/stock.js:2154 +#: templates/js/translated/stock.js:2236 msgid "No installed items" msgstr "Keine installierten Elemente" -#: templates/js/translated/stock.js:2205 +#: templates/js/translated/stock.js:2287 msgid "Uninstall Stock Item" msgstr "Lagerartikel entfernen" diff --git a/InvenTree/locale/el/LC_MESSAGES/django.po b/InvenTree/locale/el/LC_MESSAGES/django.po index 2c99640814..3b6d4f01a4 100644 --- a/InvenTree/locale/el/LC_MESSAGES/django.po +++ b/InvenTree/locale/el/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-11-30 21:49+0000\n" -"PO-Revision-Date: 2021-11-30 21:52\n" +"POT-Creation-Date: 2021-12-03 10:37+0000\n" +"PO-Revision-Date: 2021-12-03 11:26\n" "Last-Translator: \n" "Language-Team: Greek\n" "Language: el_GR\n" @@ -114,129 +114,130 @@ msgstr "" msgid "Number of unique serial number ({s}) must match quantity ({q})" msgstr "" -#: InvenTree/models.py:114 +#: InvenTree/models.py:120 msgid "Missing file" msgstr "" -#: InvenTree/models.py:115 +#: InvenTree/models.py:121 msgid "Missing external link" msgstr "" -#: InvenTree/models.py:126 stock/models.py:1874 +#: InvenTree/models.py:132 stock/models.py:1864 #: templates/js/translated/attachment.js:117 msgid "Attachment" msgstr "" -#: InvenTree/models.py:127 +#: InvenTree/models.py:133 msgid "Select file to attach" msgstr "" -#: InvenTree/models.py:133 company/models.py:131 company/models.py:348 +#: InvenTree/models.py:139 company/models.py:131 company/models.py:348 #: company/models.py:564 order/models.py:163 part/models.py:797 #: report/templates/report/inventree_build_order_base.html:165 #: templates/js/translated/company.js:537 -#: templates/js/translated/company.js:826 templates/js/translated/part.js:1077 +#: templates/js/translated/company.js:826 templates/js/translated/part.js:1258 msgid "Link" msgstr "" -#: InvenTree/models.py:134 build/models.py:330 part/models.py:798 -#: stock/models.py:540 +#: InvenTree/models.py:140 build/models.py:330 part/models.py:798 +#: stock/models.py:530 msgid "Link to external URL" msgstr "" -#: InvenTree/models.py:137 templates/js/translated/attachment.js:161 +#: InvenTree/models.py:143 templates/js/translated/attachment.js:161 msgid "Comment" msgstr "" -#: InvenTree/models.py:137 +#: InvenTree/models.py:143 msgid "File comment" msgstr "" -#: InvenTree/models.py:143 InvenTree/models.py:144 common/models.py:1185 +#: InvenTree/models.py:149 InvenTree/models.py:150 common/models.py:1185 #: common/models.py:1186 part/models.py:2205 part/models.py:2225 #: report/templates/report/inventree_test_report_base.html:96 -#: templates/js/translated/stock.js:2084 +#: templates/js/translated/stock.js:2166 msgid "User" msgstr "" -#: InvenTree/models.py:147 +#: InvenTree/models.py:153 msgid "upload date" msgstr "" -#: InvenTree/models.py:170 +#: InvenTree/models.py:176 msgid "Filename must not be empty" msgstr "" -#: InvenTree/models.py:193 +#: InvenTree/models.py:199 msgid "Invalid attachment directory" msgstr "" -#: InvenTree/models.py:203 +#: InvenTree/models.py:209 #, python-brace-format msgid "Filename contains illegal character '{c}'" msgstr "" -#: InvenTree/models.py:206 +#: InvenTree/models.py:212 msgid "Filename missing extension" msgstr "" -#: InvenTree/models.py:213 +#: InvenTree/models.py:219 msgid "Attachment with this filename already exists" msgstr "" -#: InvenTree/models.py:220 +#: InvenTree/models.py:226 msgid "Error renaming file" msgstr "" -#: InvenTree/models.py:255 +#: InvenTree/models.py:261 msgid "Invalid choice" msgstr "" -#: InvenTree/models.py:271 InvenTree/models.py:272 company/models.py:415 +#: InvenTree/models.py:277 InvenTree/models.py:278 company/models.py:415 #: label/models.py:112 part/models.py:741 part/models.py:2389 -#: part/templates/part/detail.html:25 report/models.py:181 -#: templates/InvenTree/settings/settings.html:259 -#: templates/js/translated/company.js:638 templates/js/translated/part.js:499 -#: templates/js/translated/part.js:636 templates/js/translated/part.js:1384 -#: templates/js/translated/stock.js:1877 +#: report/models.py:181 templates/InvenTree/settings/settings.html:259 +#: templates/js/translated/company.js:638 templates/js/translated/part.js:506 +#: templates/js/translated/part.js:643 templates/js/translated/part.js:1565 +#: templates/js/translated/stock.js:1959 msgid "Name" msgstr "" -#: InvenTree/models.py:278 build/models.py:207 +#: InvenTree/models.py:284 build/models.py:207 #: build/templates/build/detail.html:25 company/models.py:354 -#: company/models.py:570 company/templates/company/manufacturer_part.html:80 -#: company/templates/company/supplier_part.html:81 label/models.py:119 -#: order/models.py:161 part/models.py:764 part/templates/part/detail.html:30 +#: company/models.py:570 company/templates/company/company_base.html:68 +#: company/templates/company/manufacturer_part.html:76 +#: company/templates/company/supplier_part.html:73 label/models.py:119 +#: order/models.py:161 part/models.py:764 part/templates/part/category.html:70 +#: part/templates/part/part_base.html:163 #: part/templates/part/set_category.html:14 report/models.py:194 #: report/models.py:553 report/models.py:592 #: report/templates/report/inventree_build_order_base.html:118 -#: stock/templates/stock/location.html:108 templates/js/translated/bom.js:215 +#: stock/templates/stock/location.html:89 templates/js/translated/bom.js:215 #: templates/js/translated/bom.js:428 templates/js/translated/build.js:1621 #: templates/js/translated/company.js:345 #: templates/js/translated/company.js:548 -#: templates/js/translated/company.js:837 templates/js/translated/order.js:673 -#: templates/js/translated/order.js:855 templates/js/translated/order.js:1091 -#: templates/js/translated/part.js:558 templates/js/translated/part.js:752 -#: templates/js/translated/part.js:837 templates/js/translated/part.js:1007 -#: templates/js/translated/part.js:1403 templates/js/translated/part.js:1472 -#: templates/js/translated/stock.js:1151 templates/js/translated/stock.js:1889 -#: templates/js/translated/stock.js:1934 +#: templates/js/translated/company.js:837 templates/js/translated/order.js:680 +#: templates/js/translated/order.js:854 templates/js/translated/order.js:1090 +#: templates/js/translated/part.js:565 templates/js/translated/part.js:933 +#: templates/js/translated/part.js:1018 templates/js/translated/part.js:1188 +#: templates/js/translated/part.js:1584 templates/js/translated/part.js:1653 +#: templates/js/translated/stock.js:1233 templates/js/translated/stock.js:1971 +#: templates/js/translated/stock.js:2016 msgid "Description" msgstr "" -#: InvenTree/models.py:279 +#: InvenTree/models.py:285 msgid "Description (optional)" msgstr "" -#: InvenTree/models.py:287 +#: InvenTree/models.py:293 msgid "parent" msgstr "" -#: InvenTree/serializers.py:62 part/models.py:2674 +#: InvenTree/serializers.py:65 part/models.py:2674 msgid "Must be a valid number" msgstr "" -#: InvenTree/serializers.py:285 +#: InvenTree/serializers.py:299 msgid "Filename" msgstr "" @@ -361,7 +362,7 @@ msgid "Returned" msgstr "" #: InvenTree/status_codes.py:143 -#: order/templates/order/sales_order_base.html:147 +#: order/templates/order/sales_order_base.html:148 msgid "Shipped" msgstr "" @@ -566,7 +567,7 @@ msgid "Barcode associated with StockItem" msgstr "" #: build/forms.py:36 build/models.py:1283 -#: build/templates/build/build_base.html:124 +#: build/templates/build/build_base.html:132 #: build/templates/build/detail.html:35 common/models.py:1225 #: company/forms.py:42 company/templates/company/supplier_part.html:251 #: order/forms.py:102 order/models.py:729 order/models.py:991 @@ -574,26 +575,27 @@ msgstr "" #: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:223 #: part/forms.py:239 part/forms.py:255 part/models.py:2576 #: part/templates/part/bom_upload/match_parts.html:31 -#: part/templates/part/detail.html:1076 part/templates/part/detail.html:1162 +#: part/templates/part/detail.html:967 part/templates/part/detail.html:1053 #: part/templates/part/part_pricing.html:16 #: report/templates/report/inventree_build_order_base.html:114 #: report/templates/report/inventree_po_report.html:91 #: report/templates/report/inventree_so_report.html:91 #: report/templates/report/inventree_test_report_base.html:81 #: report/templates/report/inventree_test_report_base.html:139 -#: stock/forms.py:156 stock/serializers.py:286 -#: stock/templates/stock/item_base.html:256 +#: stock/forms.py:156 stock/serializers.py:291 +#: stock/templates/stock/item_base.html:174 #: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:443 #: templates/js/translated/build.js:235 templates/js/translated/build.js:435 #: templates/js/translated/build.js:629 templates/js/translated/build.js:639 #: templates/js/translated/build.js:1015 templates/js/translated/build.js:1362 #: templates/js/translated/model_renderers.js:99 -#: templates/js/translated/order.js:892 templates/js/translated/order.js:1205 -#: templates/js/translated/order.js:1283 templates/js/translated/order.js:1290 -#: templates/js/translated/order.js:1379 templates/js/translated/order.js:1479 -#: templates/js/translated/part.js:1615 templates/js/translated/part.js:1738 -#: templates/js/translated/part.js:1816 templates/js/translated/stock.js:377 -#: templates/js/translated/stock.js:2069 templates/js/translated/stock.js:2171 +#: templates/js/translated/order.js:891 templates/js/translated/order.js:1204 +#: templates/js/translated/order.js:1282 templates/js/translated/order.js:1289 +#: templates/js/translated/order.js:1378 templates/js/translated/order.js:1478 +#: templates/js/translated/part.js:843 templates/js/translated/part.js:1796 +#: templates/js/translated/part.js:1919 templates/js/translated/part.js:1997 +#: templates/js/translated/stock.js:378 templates/js/translated/stock.js:2151 +#: templates/js/translated/stock.js:2253 msgid "Quantity" msgstr "" @@ -602,8 +604,8 @@ msgid "Enter quantity for build output" msgstr "" #: build/forms.py:41 order/forms.py:96 stock/forms.py:95 -#: stock/serializers.py:307 templates/js/translated/stock.js:224 -#: templates/js/translated/stock.js:378 +#: stock/serializers.py:312 templates/js/translated/stock.js:225 +#: templates/js/translated/stock.js:379 msgid "Serial Numbers" msgstr "" @@ -646,7 +648,7 @@ msgstr "" #: build/templates/build/index.html:8 build/templates/build/index.html:12 #: order/templates/order/sales_order_detail.html:42 #: order/templates/order/so_sidebar.html:7 -#: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:221 +#: part/templates/part/part_sidebar.html:20 templates/InvenTree/index.html:221 #: templates/InvenTree/search.html:145 #: templates/InvenTree/settings/sidebar.html:42 users/models.py:44 msgid "Build Orders" @@ -662,7 +664,7 @@ msgstr "" #: report/templates/report/inventree_po_report.html:92 #: report/templates/report/inventree_so_report.html:92 #: templates/js/translated/bom.js:435 templates/js/translated/build.js:1119 -#: templates/js/translated/order.js:886 templates/js/translated/order.js:1473 +#: templates/js/translated/order.js:885 templates/js/translated/order.js:1472 msgid "Reference" msgstr "" @@ -670,7 +672,7 @@ msgstr "" msgid "Brief description of the build" msgstr "" -#: build/models.py:219 build/templates/build/build_base.html:156 +#: build/models.py:219 build/templates/build/build_base.html:164 #: build/templates/build/detail.html:88 msgid "Parent Build" msgstr "" @@ -679,7 +681,7 @@ msgstr "" msgid "BuildOrder to which this build is allocated" msgstr "" -#: build/models.py:225 build/templates/build/build_base.html:119 +#: build/models.py:225 build/templates/build/build_base.html:77 #: build/templates/build/detail.html:30 company/models.py:705 #: order/models.py:789 order/models.py:860 #: order/templates/order/order_wizard/select_parts.html:32 part/models.py:357 @@ -700,10 +702,10 @@ msgstr "" #: templates/js/translated/build.js:988 templates/js/translated/build.js:1359 #: templates/js/translated/build.js:1626 templates/js/translated/company.js:489 #: templates/js/translated/company.js:746 templates/js/translated/order.js:426 -#: templates/js/translated/order.js:840 templates/js/translated/order.js:1457 -#: templates/js/translated/part.js:737 templates/js/translated/part.js:818 -#: templates/js/translated/part.js:985 templates/js/translated/stock.js:508 -#: templates/js/translated/stock.js:1108 templates/js/translated/stock.js:2159 +#: templates/js/translated/order.js:839 templates/js/translated/order.js:1456 +#: templates/js/translated/part.js:918 templates/js/translated/part.js:999 +#: templates/js/translated/part.js:1166 templates/js/translated/stock.js:590 +#: templates/js/translated/stock.js:1190 templates/js/translated/stock.js:2241 msgid "Part" msgstr "" @@ -751,7 +753,7 @@ msgstr "" msgid "Number of stock items which have been completed" msgstr "" -#: build/models.py:277 part/templates/part/part_base.html:216 +#: build/models.py:277 part/templates/part/part_base.html:234 msgid "Build Status" msgstr "" @@ -759,7 +761,7 @@ msgstr "" msgid "Build status code" msgstr "" -#: build/models.py:285 stock/models.py:544 +#: build/models.py:285 stock/models.py:534 msgid "Batch Code" msgstr "" @@ -768,7 +770,7 @@ msgid "Batch code for this build output" msgstr "" #: build/models.py:292 order/models.py:165 part/models.py:936 -#: part/templates/part/detail.html:86 templates/js/translated/order.js:1104 +#: part/templates/part/part_base.html:313 templates/js/translated/order.js:1103 msgid "Creation Date" msgstr "" @@ -797,12 +799,12 @@ msgstr "" msgid "User who issued this build order" msgstr "" -#: build/models.py:323 build/templates/build/build_base.html:177 +#: build/models.py:323 build/templates/build/build_base.html:185 #: build/templates/build/detail.html:116 order/models.py:179 -#: order/templates/order/order_base.html:154 -#: order/templates/order/sales_order_base.html:161 part/models.py:940 +#: order/templates/order/order_base.html:158 +#: order/templates/order/sales_order_base.html:162 part/models.py:940 #: report/templates/report/inventree_build_order_base.html:159 -#: templates/js/translated/build.js:1680 templates/js/translated/order.js:700 +#: templates/js/translated/build.js:1680 templates/js/translated/order.js:699 msgid "Responsible" msgstr "" @@ -811,10 +813,10 @@ msgid "User responsible for this build order" msgstr "" #: build/models.py:329 build/templates/build/detail.html:102 -#: company/templates/company/manufacturer_part.html:87 -#: company/templates/company/supplier_part.html:88 -#: part/templates/part/detail.html:80 stock/models.py:538 -#: stock/templates/stock/item_base.html:346 +#: company/templates/company/manufacturer_part.html:102 +#: company/templates/company/supplier_part.html:126 +#: part/templates/part/part_base.html:354 stock/models.py:528 +#: stock/templates/stock/item_base.html:374 msgid "External Link" msgstr "" @@ -824,15 +826,15 @@ msgstr "" #: order/models.py:183 order/models.py:738 #: order/templates/order/po_sidebar.html:11 #: order/templates/order/so_sidebar.html:11 part/models.py:925 -#: part/templates/part/detail.html:223 part/templates/part/part_sidebar.html:52 +#: part/templates/part/detail.html:116 part/templates/part/part_sidebar.html:50 #: report/templates/report/inventree_build_order_base.html:173 -#: stock/forms.py:154 stock/forms.py:204 stock/forms.py:238 stock/models.py:610 -#: stock/models.py:1774 stock/models.py:1880 stock/serializers.py:325 -#: stock/serializers.py:583 stock/templates/stock/stock_sidebar.html:21 +#: stock/forms.py:154 stock/forms.py:204 stock/forms.py:238 stock/models.py:600 +#: stock/models.py:1764 stock/models.py:1870 stock/serializers.py:330 +#: stock/serializers.py:588 stock/templates/stock/stock_sidebar.html:21 #: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:599 -#: templates/js/translated/company.js:842 templates/js/translated/order.js:985 -#: templates/js/translated/order.js:1583 templates/js/translated/stock.js:891 -#: templates/js/translated/stock.js:1370 +#: templates/js/translated/company.js:842 templates/js/translated/order.js:984 +#: templates/js/translated/order.js:1582 templates/js/translated/stock.js:973 +#: templates/js/translated/stock.js:1452 msgid "Notes" msgstr "" @@ -877,7 +879,7 @@ msgstr "" msgid "Selected stock item not found in BOM" msgstr "" -#: build/models.py:1253 stock/templates/stock/item_base.html:318 +#: build/models.py:1253 stock/templates/stock/item_base.html:346 #: templates/InvenTree/search.html:143 templates/js/translated/build.js:1599 #: templates/navbar.html:33 msgid "Build" @@ -890,11 +892,11 @@ msgstr "" #: build/models.py:1270 build/serializers.py:328 #: stock/templates/stock/item_base.html:8 #: stock/templates/stock/item_base.html:16 -#: stock/templates/stock/item_base.html:340 +#: stock/templates/stock/item_base.html:368 #: templates/js/translated/build.js:408 templates/js/translated/build.js:413 #: templates/js/translated/build.js:1361 templates/js/translated/build.js:1742 -#: templates/js/translated/order.js:1178 templates/js/translated/order.js:1183 -#: templates/js/translated/stock.js:2020 +#: templates/js/translated/order.js:1177 templates/js/translated/order.js:1182 +#: templates/js/translated/stock.js:2102 msgid "Stock Item" msgstr "" @@ -934,16 +936,16 @@ msgstr "" msgid "This build output is not fully allocated" msgstr "" -#: build/serializers.py:190 order/serializers.py:219 order/serializers.py:287 -#: stock/forms.py:236 stock/serializers.py:318 stock/serializers.py:685 -#: stock/templates/stock/item_base.html:286 +#: build/serializers.py:190 order/serializers.py:228 order/serializers.py:296 +#: stock/forms.py:236 stock/serializers.py:323 stock/serializers.py:690 +#: stock/templates/stock/item_base.html:314 #: templates/js/translated/barcode.js:384 #: templates/js/translated/barcode.js:557 templates/js/translated/build.js:420 #: templates/js/translated/build.js:1027 templates/js/translated/order.js:348 -#: templates/js/translated/order.js:1190 templates/js/translated/order.js:1298 -#: templates/js/translated/order.js:1304 templates/js/translated/part.js:181 -#: templates/js/translated/stock.js:510 templates/js/translated/stock.js:1251 -#: templates/js/translated/stock.js:1961 +#: templates/js/translated/order.js:1189 templates/js/translated/order.js:1297 +#: templates/js/translated/order.js:1303 templates/js/translated/part.js:177 +#: templates/js/translated/stock.js:592 templates/js/translated/stock.js:1333 +#: templates/js/translated/stock.js:2043 msgid "Location" msgstr "" @@ -951,13 +953,13 @@ msgstr "" msgid "Location for completed build outputs" msgstr "" -#: build/serializers.py:197 build/templates/build/build_base.html:129 +#: build/serializers.py:197 build/templates/build/build_base.html:137 #: build/templates/build/detail.html:63 order/models.py:572 -#: order/serializers.py:240 stock/templates/stock/item_base.html:409 +#: order/serializers.py:249 stock/templates/stock/item_base.html:180 #: templates/js/translated/barcode.js:140 templates/js/translated/build.js:1655 -#: templates/js/translated/order.js:431 templates/js/translated/order.js:677 -#: templates/js/translated/order.js:1096 templates/js/translated/stock.js:1226 -#: templates/js/translated/stock.js:2038 templates/js/translated/stock.js:2187 +#: templates/js/translated/order.js:431 templates/js/translated/order.js:1095 +#: templates/js/translated/stock.js:1308 templates/js/translated/stock.js:2120 +#: templates/js/translated/stock.js:2269 msgid "Status" msgstr "" @@ -986,8 +988,8 @@ msgstr "" msgid "Item must be in stock" msgstr "" -#: build/serializers.py:348 order/models.py:316 order/serializers.py:233 -#: stock/models.py:381 stock/models.py:1103 stock/serializers.py:298 +#: build/serializers.py:348 order/models.py:316 order/serializers.py:242 +#: stock/models.py:371 stock/models.py:1093 stock/serializers.py:303 msgid "Quantity must be greater than zero" msgstr "" @@ -1031,7 +1033,7 @@ msgid "Edit Build" msgstr "" #: build/templates/build/build_base.html:56 -#: build/templates/build/build_base.html:207 build/views.py:56 +#: build/templates/build/build_base.html:215 build/views.py:56 msgid "Cancel Build" msgstr "" @@ -1041,93 +1043,95 @@ msgstr "" #: build/templates/build/build_base.html:64 #: build/templates/build/build_base.html:65 -#: build/templates/build/build_base.html:223 +#: build/templates/build/build_base.html:231 msgid "Complete Build" msgstr "" -#: build/templates/build/build_base.html:79 +#: build/templates/build/build_base.html:82 +msgid "Build Description" +msgstr "" + +#: build/templates/build/build_base.html:91 #, python-format msgid "This Build Order is allocated to Sales Order %(link)s" msgstr "" -#: build/templates/build/build_base.html:86 +#: build/templates/build/build_base.html:98 #, python-format msgid "This Build Order is a child of Build Order %(link)s" msgstr "" -#: build/templates/build/build_base.html:93 +#: build/templates/build/build_base.html:105 msgid "Build Order is ready to mark as completed" msgstr "" -#: build/templates/build/build_base.html:98 +#: build/templates/build/build_base.html:110 msgid "Build Order cannot be completed as outstanding outputs remain" msgstr "" -#: build/templates/build/build_base.html:103 +#: build/templates/build/build_base.html:115 msgid "Required build quantity has not yet been completed" msgstr "" -#: build/templates/build/build_base.html:108 +#: build/templates/build/build_base.html:120 msgid "Stock has not been fully allocated to this Build Order" msgstr "" -#: build/templates/build/build_base.html:138 +#: build/templates/build/build_base.html:146 #: build/templates/build/detail.html:132 -#: order/templates/order/order_base.html:140 -#: order/templates/order/sales_order_base.html:140 +#: order/templates/order/order_base.html:144 +#: order/templates/order/sales_order_base.html:141 #: report/templates/report/inventree_build_order_base.html:126 -#: templates/js/translated/build.js:1692 templates/js/translated/order.js:690 -#: templates/js/translated/order.js:1109 +#: templates/js/translated/build.js:1692 templates/js/translated/order.js:689 +#: templates/js/translated/order.js:1108 msgid "Target Date" msgstr "" -#: build/templates/build/build_base.html:143 +#: build/templates/build/build_base.html:151 #, python-format msgid "This build was due on %(target)s" msgstr "" -#: build/templates/build/build_base.html:143 -#: build/templates/build/build_base.html:188 -#: order/templates/order/order_base.html:81 -#: order/templates/order/order_base.html:102 -#: order/templates/order/sales_order_base.html:78 -#: order/templates/order/sales_order_base.html:107 +#: build/templates/build/build_base.html:151 +#: build/templates/build/build_base.html:196 +#: order/templates/order/order_base.html:98 +#: order/templates/order/sales_order_base.html:93 #: templates/js/translated/table_filters.js:294 #: templates/js/translated/table_filters.js:322 #: templates/js/translated/table_filters.js:339 msgid "Overdue" msgstr "" -#: build/templates/build/build_base.html:150 +#: build/templates/build/build_base.html:158 #: build/templates/build/detail.html:68 build/templates/build/detail.html:143 #: templates/js/translated/build.js:1641 #: templates/js/translated/table_filters.js:304 msgid "Completed" msgstr "" -#: build/templates/build/build_base.html:163 +#: build/templates/build/build_base.html:171 #: build/templates/build/detail.html:95 order/models.py:857 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: order/templates/order/sales_order_ship.html:25 #: report/templates/report/inventree_build_order_base.html:136 #: report/templates/report/inventree_so_report.html:77 -#: stock/templates/stock/item_base.html:280 -#: templates/js/translated/order.js:1051 +#: stock/templates/stock/item_base.html:308 +#: templates/js/translated/order.js:1050 msgid "Sales Order" msgstr "" -#: build/templates/build/build_base.html:170 +#: build/templates/build/build_base.html:178 #: build/templates/build/detail.html:109 #: report/templates/report/inventree_build_order_base.html:153 msgid "Issued By" msgstr "" -#: build/templates/build/build_base.html:215 +#: build/templates/build/build_base.html:223 msgid "Incomplete Outputs" msgstr "" -#: build/templates/build/build_base.html:216 +#: build/templates/build/build_base.html:224 msgid "Build Order cannot be completed as incomplete build outputs remain" msgstr "" @@ -1188,7 +1192,7 @@ msgid "Stock can be taken from any available location." msgstr "" #: build/templates/build/detail.html:50 order/models.py:811 stock/forms.py:150 -#: templates/js/translated/order.js:432 templates/js/translated/order.js:974 +#: templates/js/translated/order.js:432 templates/js/translated/order.js:973 msgid "Destination" msgstr "" @@ -1201,16 +1205,16 @@ msgid "Allocated Parts" msgstr "" #: build/templates/build/detail.html:81 -#: stock/templates/stock/item_base.html:304 -#: templates/js/translated/stock.js:1240 templates/js/translated/stock.js:2194 +#: stock/templates/stock/item_base.html:332 +#: templates/js/translated/stock.js:1322 templates/js/translated/stock.js:2276 #: templates/js/translated/table_filters.js:151 #: templates/js/translated/table_filters.js:233 msgid "Batch" msgstr "" #: build/templates/build/detail.html:127 -#: order/templates/order/order_base.html:127 -#: order/templates/order/sales_order_base.html:134 +#: order/templates/order/order_base.html:131 +#: order/templates/order/sales_order_base.html:135 #: templates/js/translated/build.js:1663 msgid "Created" msgstr "" @@ -1254,7 +1258,7 @@ msgstr "" #: build/templates/build/detail.html:185 #: company/templates/company/detail.html:38 #: company/templates/company/detail.html:85 order/views.py:509 -#: part/templates/part/category.html:166 +#: part/templates/part/category.html:173 msgid "Order Parts" msgstr "" @@ -1306,8 +1310,8 @@ msgstr "" #: order/templates/order/po_sidebar.html:9 #: order/templates/order/purchase_order_detail.html:60 #: order/templates/order/sales_order_detail.html:52 -#: order/templates/order/so_sidebar.html:9 part/templates/part/detail.html:300 -#: part/templates/part/part_sidebar.html:50 stock/templates/stock/item.html:95 +#: order/templates/order/so_sidebar.html:9 part/templates/part/detail.html:193 +#: part/templates/part/part_sidebar.html:48 stock/templates/stock/item.html:95 #: stock/templates/stock/stock_sidebar.html:19 msgid "Attachments" msgstr "" @@ -1323,7 +1327,7 @@ msgstr "" #: order/templates/order/purchase_order_detail.html:108 #: order/templates/order/sales_order_detail.html:72 #: order/templates/order/sales_order_detail.html:99 -#: part/templates/part/detail.html:227 stock/templates/stock/item.html:115 +#: part/templates/part/detail.html:120 stock/templates/stock/item.html:115 #: stock/templates/stock/item.html:205 msgid "Edit Notes" msgstr "" @@ -1336,7 +1340,7 @@ msgstr "" msgid "All untracked stock items have been allocated" msgstr "" -#: build/templates/build/index.html:18 part/templates/part/detail.html:407 +#: build/templates/build/index.html:18 part/templates/part/detail.html:300 msgid "New Build Order" msgstr "" @@ -1380,7 +1384,7 @@ msgstr "" msgid "Maximum output quantity is " msgstr "" -#: build/views.py:122 stock/serializers.py:356 stock/views.py:1290 +#: build/views.py:122 stock/serializers.py:361 stock/views.py:1290 msgid "Serial numbers already exist" msgstr "" @@ -1675,7 +1679,7 @@ msgid "Parts are trackable by default" msgstr "" #: common/models.py:745 part/models.py:920 -#: part/templates/part/part_base.html:144 +#: part/templates/part/part_base.html:147 #: templates/js/translated/table_filters.js:42 msgid "Virtual" msgstr "" @@ -2142,7 +2146,7 @@ msgstr "" #: common/models.py:1233 company/serializers.py:264 #: company/templates/company/supplier_part.html:256 -#: templates/js/translated/part.js:1620 +#: templates/js/translated/part.js:852 templates/js/translated/part.js:1801 msgid "Price" msgstr "" @@ -2206,7 +2210,7 @@ msgstr "" msgid "Description of the company" msgstr "" -#: company/models.py:112 company/templates/company/company_base.html:70 +#: company/models.py:112 company/templates/company/company_base.html:97 #: templates/js/translated/company.js:349 msgid "Website" msgstr "" @@ -2215,7 +2219,7 @@ msgstr "" msgid "Company website URL" msgstr "" -#: company/models.py:117 company/templates/company/company_base.html:88 +#: company/models.py:117 company/templates/company/company_base.html:115 msgid "Address" msgstr "" @@ -2231,7 +2235,7 @@ msgstr "" msgid "Contact phone number" msgstr "" -#: company/models.py:125 company/templates/company/company_base.html:102 +#: company/models.py:125 company/templates/company/company_base.html:129 #: templates/InvenTree/settings/user.html:47 msgid "Email" msgstr "" @@ -2240,7 +2244,7 @@ msgstr "" msgid "Contact email address" msgstr "" -#: company/models.py:128 company/templates/company/company_base.html:109 +#: company/models.py:128 company/templates/company/company_base.html:136 msgid "Contact" msgstr "" @@ -2281,7 +2285,7 @@ msgid "Does this company manufacture parts?" msgstr "" #: company/models.py:152 company/serializers.py:270 -#: company/templates/company/company_base.html:76 stock/serializers.py:172 +#: company/templates/company/company_base.html:103 stock/serializers.py:177 msgid "Currency" msgstr "" @@ -2289,8 +2293,8 @@ msgstr "" msgid "Default currency used for this company" msgstr "" -#: company/models.py:320 company/models.py:535 stock/models.py:484 -#: stock/templates/stock/item_base.html:224 +#: company/models.py:320 company/models.py:535 stock/models.py:474 +#: stock/templates/stock/item_base.html:135 msgid "Base Part" msgstr "" @@ -2298,29 +2302,29 @@ msgstr "" msgid "Select part" msgstr "" -#: company/models.py:335 company/templates/company/company_base.html:116 -#: company/templates/company/manufacturer_part.html:93 -#: company/templates/company/supplier_part.html:104 -#: stock/templates/stock/item_base.html:353 +#: company/models.py:335 company/templates/company/company_base.html:73 +#: company/templates/company/manufacturer_part.html:91 +#: company/templates/company/supplier_part.html:97 +#: stock/templates/stock/item_base.html:381 #: templates/js/translated/company.js:333 #: templates/js/translated/company.js:514 -#: templates/js/translated/company.js:797 templates/js/translated/part.js:229 +#: templates/js/translated/company.js:797 templates/js/translated/part.js:232 msgid "Manufacturer" msgstr "" -#: company/models.py:336 templates/js/translated/part.js:230 +#: company/models.py:336 templates/js/translated/part.js:233 msgid "Select manufacturer" msgstr "" -#: company/models.py:342 company/templates/company/manufacturer_part.html:97 -#: company/templates/company/supplier_part.html:112 +#: company/models.py:342 company/templates/company/manufacturer_part.html:96 +#: company/templates/company/supplier_part.html:105 #: templates/js/translated/company.js:530 -#: templates/js/translated/company.js:815 templates/js/translated/order.js:874 -#: templates/js/translated/part.js:240 +#: templates/js/translated/company.js:815 templates/js/translated/order.js:873 +#: templates/js/translated/part.js:243 templates/js/translated/part.js:832 msgid "MPN" msgstr "" -#: company/models.py:343 templates/js/translated/part.js:241 +#: company/models.py:343 templates/js/translated/part.js:244 msgid "Manufacturer Part Number" msgstr "" @@ -2335,7 +2339,7 @@ msgstr "" #: company/models.py:409 company/models.py:558 #: company/templates/company/manufacturer_part.html:6 #: company/templates/company/manufacturer_part.html:23 -#: stock/templates/stock/item_base.html:363 +#: stock/templates/stock/item_base.html:391 msgid "Manufacturer Part" msgstr "" @@ -2345,8 +2349,8 @@ msgstr "" #: company/models.py:422 #: report/templates/report/inventree_test_report_base.html:95 -#: stock/models.py:1867 templates/js/translated/company.js:644 -#: templates/js/translated/part.js:645 templates/js/translated/stock.js:878 +#: stock/models.py:1857 templates/js/translated/company.js:644 +#: templates/js/translated/part.js:652 templates/js/translated/stock.js:960 msgid "Value" msgstr "" @@ -2355,9 +2359,9 @@ msgid "Parameter value" msgstr "" #: company/models.py:429 part/models.py:882 part/models.py:2397 -#: part/templates/part/detail.html:59 +#: part/templates/part/part_base.html:288 #: templates/InvenTree/settings/settings.html:264 -#: templates/js/translated/company.js:650 templates/js/translated/part.js:651 +#: templates/js/translated/company.js:650 templates/js/translated/part.js:658 msgid "Units" msgstr "" @@ -2369,28 +2373,28 @@ msgstr "" msgid "Linked manufacturer part must reference the same base part" msgstr "" -#: company/models.py:545 company/templates/company/company_base.html:121 -#: company/templates/company/supplier_part.html:94 order/models.py:263 -#: order/templates/order/order_base.html:108 +#: company/models.py:545 company/templates/company/company_base.html:78 +#: company/templates/company/supplier_part.html:87 order/models.py:263 +#: order/templates/order/order_base.html:112 #: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:219 -#: part/bom.py:247 stock/templates/stock/item_base.html:370 +#: part/bom.py:247 stock/templates/stock/item_base.html:398 #: templates/js/translated/company.js:337 -#: templates/js/translated/company.js:771 templates/js/translated/order.js:660 -#: templates/js/translated/part.js:210 +#: templates/js/translated/company.js:771 templates/js/translated/order.js:667 +#: templates/js/translated/part.js:213 templates/js/translated/part.js:800 msgid "Supplier" msgstr "" -#: company/models.py:546 templates/js/translated/part.js:211 +#: company/models.py:546 templates/js/translated/part.js:214 msgid "Select supplier" msgstr "" -#: company/models.py:551 company/templates/company/supplier_part.html:98 -#: part/bom.py:220 part/bom.py:248 templates/js/translated/order.js:861 -#: templates/js/translated/part.js:221 +#: company/models.py:551 company/templates/company/supplier_part.html:91 +#: part/bom.py:220 part/bom.py:248 templates/js/translated/order.js:860 +#: templates/js/translated/part.js:224 templates/js/translated/part.js:818 msgid "SKU" msgstr "" -#: company/models.py:552 templates/js/translated/part.js:222 +#: company/models.py:552 templates/js/translated/part.js:225 msgid "Supplier stock keeping unit" msgstr "" @@ -2406,7 +2410,7 @@ msgstr "" msgid "Supplier part description" msgstr "" -#: company/models.py:576 company/templates/company/supplier_part.html:126 +#: company/models.py:576 company/templates/company/supplier_part.html:119 #: part/models.py:2588 report/templates/report/inventree_po_report.html:93 #: report/templates/report/inventree_so_report.html:93 msgid "Note" @@ -2420,9 +2424,9 @@ msgstr "" msgid "Minimum charge (e.g. stocking fee)" msgstr "" -#: company/models.py:582 company/templates/company/supplier_part.html:119 -#: stock/models.py:507 stock/templates/stock/item_base.html:311 -#: templates/js/translated/company.js:847 templates/js/translated/stock.js:1366 +#: company/models.py:582 company/templates/company/supplier_part.html:112 +#: stock/models.py:497 stock/templates/stock/item_base.html:339 +#: templates/js/translated/company.js:847 templates/js/translated/stock.js:1448 msgid "Packaging" msgstr "" @@ -2457,43 +2461,56 @@ msgstr "" msgid "Create Purchase Order" msgstr "" -#: company/templates/company/company_base.html:27 +#: company/templates/company/company_base.html:26 +msgid "Company actions" +msgstr "" + +#: company/templates/company/company_base.html:31 msgid "Edit company information" msgstr "" #: company/templates/company/company_base.html:32 -#: company/templates/company/company_base.html:148 +#: templates/js/translated/company.js:265 +msgid "Edit Company" +msgstr "" + +#: company/templates/company/company_base.html:36 +msgid "Delete company" +msgstr "" + +#: company/templates/company/company_base.html:37 +#: company/templates/company/company_base.html:159 msgid "Delete Company" msgstr "" -#: company/templates/company/company_base.html:48 +#: company/templates/company/company_base.html:53 #: part/templates/part/part_thumb.html:12 msgid "Upload new image" msgstr "" -#: company/templates/company/company_base.html:51 +#: company/templates/company/company_base.html:56 #: part/templates/part/part_thumb.html:14 msgid "Download image from URL" msgstr "" -#: company/templates/company/company_base.html:81 -msgid "Uses default currency" -msgstr "" - -#: company/templates/company/company_base.html:95 -msgid "Phone" -msgstr "" - -#: company/templates/company/company_base.html:126 order/models.py:567 -#: order/templates/order/sales_order_base.html:114 stock/models.py:525 -#: stock/models.py:526 stock/templates/stock/item_base.html:263 -#: templates/js/translated/company.js:329 templates/js/translated/order.js:1073 -#: templates/js/translated/stock.js:2002 +#: company/templates/company/company_base.html:83 order/models.py:567 +#: order/templates/order/sales_order_base.html:115 stock/models.py:515 +#: stock/models.py:516 stock/templates/stock/item_base.html:291 +#: templates/js/translated/company.js:329 templates/js/translated/order.js:1072 +#: templates/js/translated/stock.js:2084 msgid "Customer" msgstr "" -#: company/templates/company/company_base.html:194 -#: part/templates/part/part_base.html:342 +#: company/templates/company/company_base.html:108 +msgid "Uses default currency" +msgstr "" + +#: company/templates/company/company_base.html:122 +msgid "Phone" +msgstr "" + +#: company/templates/company/company_base.html:205 +#: part/templates/part/part_base.html:471 msgid "Upload Image" msgstr "" @@ -2509,23 +2526,23 @@ msgid "Create new supplier part" msgstr "" #: company/templates/company/detail.html:20 -#: company/templates/company/manufacturer_part.html:112 -#: part/templates/part/detail.html:440 +#: company/templates/company/manufacturer_part.html:118 +#: part/templates/part/detail.html:333 msgid "New Supplier Part" msgstr "" #: company/templates/company/detail.html:32 #: company/templates/company/detail.html:79 -#: company/templates/company/manufacturer_part.html:121 -#: company/templates/company/manufacturer_part.html:150 -#: part/templates/part/category.html:160 part/templates/part/detail.html:449 -#: part/templates/part/detail.html:477 +#: company/templates/company/manufacturer_part.html:127 +#: company/templates/company/manufacturer_part.html:156 +#: part/templates/part/category.html:167 part/templates/part/detail.html:342 +#: part/templates/part/detail.html:370 msgid "Options" msgstr "" #: company/templates/company/detail.html:37 #: company/templates/company/detail.html:84 -#: part/templates/part/category.html:166 +#: part/templates/part/category.html:173 msgid "Order parts" msgstr "" @@ -2547,7 +2564,7 @@ msgstr "" msgid "Create new manufacturer part" msgstr "" -#: company/templates/company/detail.html:67 part/templates/part/detail.html:467 +#: company/templates/company/detail.html:67 part/templates/part/detail.html:360 msgid "New Manufacturer Part" msgstr "" @@ -2561,7 +2578,7 @@ msgstr "" #: order/templates/order/order_base.html:13 #: order/templates/order/purchase_orders.html:8 #: order/templates/order/purchase_orders.html:12 -#: part/templates/part/detail.html:171 part/templates/part/part_sidebar.html:35 +#: part/templates/part/detail.html:64 part/templates/part/part_sidebar.html:33 #: templates/InvenTree/index.html:252 templates/InvenTree/search.html:203 #: templates/InvenTree/settings/sidebar.html:44 templates/navbar.html:45 #: users/models.py:45 @@ -2583,7 +2600,7 @@ msgstr "" #: order/templates/order/sales_order_base.html:13 #: order/templates/order/sales_orders.html:8 #: order/templates/order/sales_orders.html:15 -#: part/templates/part/detail.html:194 part/templates/part/part_sidebar.html:39 +#: part/templates/part/detail.html:87 part/templates/part/part_sidebar.html:37 #: templates/InvenTree/index.html:283 templates/InvenTree/search.html:223 #: templates/InvenTree/settings/sidebar.html:46 templates/navbar.html:56 #: users/models.py:46 @@ -2610,14 +2627,14 @@ msgid "Company Notes" msgstr "" #: company/templates/company/detail.html:383 -#: company/templates/company/manufacturer_part.html:209 -#: part/templates/part/detail.html:520 +#: company/templates/company/manufacturer_part.html:215 +#: part/templates/part/detail.html:413 msgid "Delete Supplier Parts?" msgstr "" #: company/templates/company/detail.html:384 -#: company/templates/company/manufacturer_part.html:210 -#: part/templates/part/detail.html:521 +#: company/templates/company/manufacturer_part.html:216 +#: part/templates/part/detail.html:414 msgid "All selected supplier parts will be deleted" msgstr "" @@ -2634,7 +2651,7 @@ msgstr "" #: company/templates/company/manufacturer_part.html:35 #: company/templates/company/supplier_part.html:34 #: company/templates/company/supplier_part.html:159 -#: part/templates/part/detail.html:174 part/templates/part/part_base.html:76 +#: part/templates/part/detail.html:67 part/templates/part/part_base.html:76 msgid "Order part" msgstr "" @@ -2648,60 +2665,60 @@ msgstr "" msgid "Delete manufacturer part" msgstr "" -#: company/templates/company/manufacturer_part.html:70 -#: company/templates/company/supplier_part.html:71 +#: company/templates/company/manufacturer_part.html:66 +#: company/templates/company/supplier_part.html:63 msgid "Internal Part" msgstr "" -#: company/templates/company/manufacturer_part.html:108 +#: company/templates/company/manufacturer_part.html:114 #: company/templates/company/supplier_part.html:15 company/views.py:49 -#: part/templates/part/part_sidebar.html:33 part/templates/part/prices.html:163 +#: part/templates/part/part_sidebar.html:31 part/templates/part/prices.html:163 #: templates/InvenTree/search.html:194 templates/navbar.html:43 msgid "Suppliers" msgstr "" -#: company/templates/company/manufacturer_part.html:123 -#: part/templates/part/detail.html:451 +#: company/templates/company/manufacturer_part.html:129 +#: part/templates/part/detail.html:344 msgid "Delete supplier parts" msgstr "" -#: company/templates/company/manufacturer_part.html:123 -#: company/templates/company/manufacturer_part.html:152 -#: company/templates/company/manufacturer_part.html:248 -#: part/templates/part/detail.html:451 part/templates/part/detail.html:479 +#: company/templates/company/manufacturer_part.html:129 +#: company/templates/company/manufacturer_part.html:158 +#: company/templates/company/manufacturer_part.html:254 +#: part/templates/part/detail.html:344 part/templates/part/detail.html:372 #: templates/js/translated/company.js:425 templates/js/translated/helpers.js:31 #: users/models.py:204 msgid "Delete" msgstr "" -#: company/templates/company/manufacturer_part.html:137 +#: company/templates/company/manufacturer_part.html:143 #: company/templates/company/manufacturer_part_sidebar.html:5 #: part/templates/part/category_sidebar.html:17 -#: part/templates/part/detail.html:277 part/templates/part/part_sidebar.html:10 +#: part/templates/part/detail.html:170 part/templates/part/part_sidebar.html:8 msgid "Parameters" msgstr "" -#: company/templates/company/manufacturer_part.html:141 -#: part/templates/part/detail.html:282 +#: company/templates/company/manufacturer_part.html:147 +#: part/templates/part/detail.html:175 #: templates/InvenTree/settings/category.html:12 #: templates/InvenTree/settings/part.html:65 msgid "New Parameter" msgstr "" -#: company/templates/company/manufacturer_part.html:152 +#: company/templates/company/manufacturer_part.html:158 msgid "Delete parameters" msgstr "" -#: company/templates/company/manufacturer_part.html:185 -#: part/templates/part/detail.html:976 +#: company/templates/company/manufacturer_part.html:191 +#: part/templates/part/detail.html:867 msgid "Add Parameter" msgstr "" -#: company/templates/company/manufacturer_part.html:233 +#: company/templates/company/manufacturer_part.html:239 msgid "Selected parameters will be deleted" msgstr "" -#: company/templates/company/manufacturer_part.html:245 +#: company/templates/company/manufacturer_part.html:251 msgid "Delete Parameters" msgstr "" @@ -2722,9 +2739,9 @@ msgid "Assigned Stock Items" msgstr "" #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 stock/models.py:492 -#: stock/templates/stock/item_base.html:375 -#: templates/js/translated/company.js:787 templates/js/translated/stock.js:1323 +#: company/templates/company/supplier_part.html:24 stock/models.py:482 +#: stock/templates/stock/item_base.html:403 +#: templates/js/translated/company.js:787 templates/js/translated/stock.js:1405 msgid "Supplier Part" msgstr "" @@ -2744,13 +2761,13 @@ msgid "Supplier Part Stock" msgstr "" #: company/templates/company/supplier_part.html:141 -#: part/templates/part/detail.html:127 stock/templates/stock/location.html:147 +#: part/templates/part/detail.html:20 stock/templates/stock/location.html:162 msgid "Create new stock item" msgstr "" #: company/templates/company/supplier_part.html:142 -#: part/templates/part/detail.html:128 stock/templates/stock/location.html:148 -#: templates/js/translated/stock.js:354 +#: part/templates/part/detail.html:21 stock/templates/stock/location.html:163 +#: templates/js/translated/stock.js:355 msgid "New Stock Item" msgstr "" @@ -2760,7 +2777,7 @@ msgid "Supplier Part Orders" msgstr "" #: company/templates/company/supplier_part.html:160 -#: part/templates/part/detail.html:175 +#: part/templates/part/detail.html:68 msgid "Order Part" msgstr "" @@ -2796,15 +2813,15 @@ msgid "Delete price break" msgstr "" #: company/templates/company/supplier_part_navbar.html:15 -#: part/templates/part/part_sidebar.html:16 +#: part/templates/part/part_sidebar.html:14 #: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:14 #: stock/templates/stock/stock_app_base.html:10 #: templates/InvenTree/search.html:156 #: templates/InvenTree/settings/sidebar.html:40 -#: templates/js/translated/bom.js:216 templates/js/translated/part.js:427 -#: templates/js/translated/part.js:562 templates/js/translated/part.js:878 -#: templates/js/translated/part.js:1039 templates/js/translated/stock.js:509 -#: templates/js/translated/stock.js:1162 templates/navbar.html:26 +#: templates/js/translated/bom.js:216 templates/js/translated/part.js:434 +#: templates/js/translated/part.js:569 templates/js/translated/part.js:1059 +#: templates/js/translated/part.js:1220 templates/js/translated/stock.js:591 +#: templates/js/translated/stock.js:1244 templates/navbar.html:26 msgid "Stock" msgstr "" @@ -2818,16 +2835,16 @@ msgid "Supplier Part Pricing" msgstr "" #: company/templates/company/supplier_part_navbar.html:29 -#: part/templates/part/part_sidebar.html:30 +#: part/templates/part/part_sidebar.html:28 msgid "Pricing" msgstr "" #: company/templates/company/supplier_part_sidebar.html:5 -#: stock/templates/stock/location.html:118 -#: stock/templates/stock/location.html:132 -#: stock/templates/stock/location.html:144 +#: stock/templates/stock/location.html:133 +#: stock/templates/stock/location.html:147 +#: stock/templates/stock/location.html:159 #: stock/templates/stock/location_sidebar.html:7 -#: templates/InvenTree/search.html:158 templates/js/translated/stock.js:1901 +#: templates/InvenTree/search.html:158 templates/js/translated/stock.js:1983 #: templates/stats.html:93 templates/stats.html:102 users/models.py:43 msgid "Stock Items" msgstr "" @@ -2947,7 +2964,7 @@ msgstr "" msgid "Place order" msgstr "" -#: order/forms.py:37 order/templates/order/order_base.html:59 +#: order/forms.py:37 order/templates/order/order_base.html:60 msgid "Mark order as complete" msgstr "" @@ -3000,8 +3017,8 @@ msgstr "" msgid "Company from which the items are being ordered" msgstr "" -#: order/models.py:267 order/templates/order/order_base.html:114 -#: templates/js/translated/order.js:669 +#: order/models.py:267 order/templates/order/order_base.html:118 +#: templates/js/translated/order.js:676 msgid "Supplier Reference" msgstr "" @@ -3061,7 +3078,7 @@ msgstr "" msgid "Target date for order completion. Order will be overdue after this date." msgstr "" -#: order/models.py:582 templates/js/translated/order.js:1114 +#: order/models.py:582 templates/js/translated/order.js:1113 msgid "Shipment Date" msgstr "" @@ -3086,16 +3103,16 @@ msgid "Line item notes" msgstr "" #: order/models.py:768 order/models.py:856 -#: templates/js/translated/order.js:1166 +#: templates/js/translated/order.js:1165 msgid "Order" msgstr "" #: order/models.py:769 order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_po_report.html:77 -#: stock/templates/stock/item_base.html:325 -#: templates/js/translated/order.js:638 templates/js/translated/stock.js:1300 -#: templates/js/translated/stock.js:1983 +#: stock/templates/stock/item_base.html:353 +#: templates/js/translated/order.js:638 templates/js/translated/part.js:775 +#: templates/js/translated/stock.js:1382 templates/js/translated/stock.js:2065 msgid "Purchase Order" msgstr "" @@ -3103,9 +3120,10 @@ msgstr "" msgid "Supplier part" msgstr "" -#: order/models.py:797 order/templates/order/order_base.html:147 -#: order/templates/order/sales_order_base.html:154 -#: templates/js/translated/order.js:429 templates/js/translated/order.js:954 +#: order/models.py:797 order/templates/order/order_base.html:151 +#: order/templates/order/sales_order_base.html:155 +#: templates/js/translated/order.js:429 templates/js/translated/order.js:953 +#: templates/js/translated/part.js:847 templates/js/translated/part.js:873 msgid "Received" msgstr "" @@ -3113,9 +3131,9 @@ msgstr "" msgid "Number of items received" msgstr "" -#: order/models.py:805 part/templates/part/prices.html:176 stock/models.py:619 -#: stock/serializers.py:163 stock/templates/stock/item_base.html:332 -#: templates/js/translated/stock.js:1354 +#: order/models.py:805 part/templates/part/prices.html:176 stock/models.py:609 +#: stock/serializers.py:168 stock/templates/stock/item_base.html:360 +#: templates/js/translated/stock.js:1436 msgid "Purchase Price" msgstr "" @@ -3176,47 +3194,47 @@ msgstr "" msgid "Enter stock allocation quantity" msgstr "" -#: order/serializers.py:169 +#: order/serializers.py:175 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:204 +#: order/serializers.py:213 msgid "Line Item" msgstr "" -#: order/serializers.py:210 +#: order/serializers.py:219 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:220 order/serializers.py:288 +#: order/serializers.py:229 order/serializers.py:297 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:244 +#: order/serializers.py:253 msgid "Barcode Hash" msgstr "" -#: order/serializers.py:245 +#: order/serializers.py:254 msgid "Unique identifier field" msgstr "" -#: order/serializers.py:262 +#: order/serializers.py:271 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:300 +#: order/serializers.py:309 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:317 +#: order/serializers.py:326 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:328 +#: order/serializers.py:337 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:569 +#: order/serializers.py:578 msgid "Sale price currency" msgstr "" @@ -3248,22 +3266,36 @@ msgstr "" msgid "Receive items" msgstr "" -#: order/templates/order/order_base.html:93 -#: order/templates/order/sales_order_base.html:98 +#: order/templates/order/order_base.html:58 +#: order/templates/order/purchase_order_detail.html:31 +msgid "Receive Items" +msgstr "" + +#: order/templates/order/order_base.html:62 order/views.py:185 +msgid "Complete Order" +msgstr "" + +#: order/templates/order/order_base.html:84 +#: order/templates/order/sales_order_base.html:79 msgid "Order Reference" msgstr "" -#: order/templates/order/order_base.html:98 -#: order/templates/order/sales_order_base.html:103 +#: order/templates/order/order_base.html:89 +#: order/templates/order/sales_order_base.html:84 +msgid "Order Description" +msgstr "" + +#: order/templates/order/order_base.html:94 +#: order/templates/order/sales_order_base.html:89 msgid "Order Status" msgstr "" -#: order/templates/order/order_base.html:133 +#: order/templates/order/order_base.html:137 #: report/templates/report/inventree_build_order_base.html:122 msgid "Issued" msgstr "" -#: order/templates/order/order_base.html:203 +#: order/templates/order/order_base.html:207 msgid "Edit Purchase Order" msgstr "" @@ -3421,7 +3453,7 @@ msgid "Select existing purchase orders, or create new orders." msgstr "" #: order/templates/order/order_wizard/select_pos.html:31 -#: templates/js/translated/order.js:695 templates/js/translated/order.js:1119 +#: templates/js/translated/order.js:694 templates/js/translated/order.js:1118 msgid "Items" msgstr "" @@ -3465,10 +3497,6 @@ msgstr "" msgid "Receive selected items" msgstr "" -#: order/templates/order/purchase_order_detail.html:31 -msgid "Receive Items" -msgstr "" - #: order/templates/order/purchase_order_detail.html:50 msgid "Received Items" msgstr "" @@ -3496,16 +3524,16 @@ msgstr "" msgid "Ship Order" msgstr "" -#: order/templates/order/sales_order_base.html:86 +#: order/templates/order/sales_order_base.html:102 msgid "This Sales Order has not been fully allocated" msgstr "" -#: order/templates/order/sales_order_base.html:121 -#: templates/js/translated/order.js:1086 +#: order/templates/order/sales_order_base.html:122 +#: templates/js/translated/order.js:1085 msgid "Customer Reference" msgstr "" -#: order/templates/order/sales_order_base.html:194 +#: order/templates/order/sales_order_base.html:195 msgid "Edit Sales Order" msgstr "" @@ -3576,10 +3604,6 @@ msgstr "" msgid "Purchase order issued" msgstr "" -#: order/views.py:185 -msgid "Complete Order" -msgstr "" - #: order/views.py:201 msgid "Confirm order completion" msgstr "" @@ -3672,11 +3696,11 @@ msgid "This field is required" msgstr "" #: part/bom.py:125 part/models.py:81 part/models.py:816 -#: part/templates/part/category.html:90 part/templates/part/detail.html:104 +#: part/templates/part/category.html:104 part/templates/part/part_base.html:338 msgid "Default Location" msgstr "" -#: part/bom.py:126 part/templates/part/part_base.html:167 +#: part/bom.py:126 part/templates/part/part_base.html:185 msgid "Available Stock" msgstr "" @@ -3793,19 +3817,19 @@ msgstr "" msgid "Part Category" msgstr "" -#: part/models.py:96 part/templates/part/category.html:117 +#: part/models.py:96 part/templates/part/category.html:124 #: templates/InvenTree/search.html:101 templates/stats.html:84 #: users/models.py:40 msgid "Part Categories" msgstr "" #: part/models.py:358 part/templates/part/cat_link.html:3 -#: part/templates/part/category.html:13 part/templates/part/category.html:122 -#: part/templates/part/category.html:142 +#: part/templates/part/category.html:13 part/templates/part/category.html:129 +#: part/templates/part/category.html:149 #: part/templates/part/category_sidebar.html:9 #: templates/InvenTree/index.html:85 templates/InvenTree/search.html:88 #: templates/InvenTree/settings/sidebar.html:36 -#: templates/js/translated/part.js:1416 templates/navbar.html:19 +#: templates/js/translated/part.js:1597 templates/navbar.html:19 #: templates/stats.html:80 templates/stats.html:89 users/models.py:41 msgid "Parts" msgstr "" @@ -3859,8 +3883,8 @@ msgstr "" msgid "Part description" msgstr "" -#: part/models.py:770 part/templates/part/category.html:97 -#: part/templates/part/detail.html:73 +#: part/models.py:770 part/templates/part/category.html:82 +#: part/templates/part/part_base.html:302 msgid "Keywords" msgstr "" @@ -3869,9 +3893,10 @@ msgid "Part keywords to improve visibility in search results" msgstr "" #: part/models.py:778 part/models.py:2223 part/models.py:2472 -#: part/templates/part/detail.html:36 part/templates/part/set_category.html:15 +#: part/templates/part/part_base.html:265 +#: part/templates/part/set_category.html:15 #: templates/InvenTree/settings/settings.html:163 -#: templates/js/translated/part.js:1021 +#: templates/js/translated/part.js:1202 msgid "Category" msgstr "" @@ -3879,9 +3904,9 @@ msgstr "" msgid "Part category" msgstr "" -#: part/models.py:784 part/templates/part/detail.html:45 -#: templates/js/translated/part.js:550 templates/js/translated/part.js:974 -#: templates/js/translated/stock.js:1134 +#: part/models.py:784 part/templates/part/part_base.html:274 +#: templates/js/translated/part.js:557 templates/js/translated/part.js:1155 +#: templates/js/translated/stock.js:1216 msgid "IPN" msgstr "" @@ -3893,8 +3918,8 @@ msgstr "" msgid "Part revision or version number" msgstr "" -#: part/models.py:792 part/templates/part/detail.html:52 report/models.py:200 -#: templates/js/translated/part.js:554 +#: part/models.py:792 part/templates/part/part_base.html:281 +#: report/models.py:200 templates/js/translated/part.js:561 msgid "Revision" msgstr "" @@ -3902,7 +3927,7 @@ msgstr "" msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:861 part/templates/part/detail.html:113 +#: part/models.py:861 part/templates/part/part_base.html:347 msgid "Default Supplier" msgstr "" @@ -3918,7 +3943,7 @@ msgstr "" msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:875 part/templates/part/part_base.html:178 +#: part/models.py:875 part/templates/part/part_base.html:196 msgid "Minimum Stock" msgstr "" @@ -4001,8 +4026,8 @@ msgstr "" msgid "Test with this name already exists for this part" msgstr "" -#: part/models.py:2310 templates/js/translated/part.js:1467 -#: templates/js/translated/stock.js:858 +#: part/models.py:2310 templates/js/translated/part.js:1648 +#: templates/js/translated/stock.js:940 msgid "Test Name" msgstr "" @@ -4018,7 +4043,7 @@ msgstr "" msgid "Enter description for this test" msgstr "" -#: part/models.py:2322 templates/js/translated/part.js:1476 +#: part/models.py:2322 templates/js/translated/part.js:1657 #: templates/js/translated/table_filters.js:276 msgid "Required" msgstr "" @@ -4027,7 +4052,7 @@ msgstr "" msgid "Is this test required to pass?" msgstr "" -#: part/models.py:2328 templates/js/translated/part.js:1484 +#: part/models.py:2328 templates/js/translated/part.js:1665 msgid "Requires Value" msgstr "" @@ -4035,7 +4060,7 @@ msgstr "" msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:2334 templates/js/translated/part.js:1491 +#: part/models.py:2334 templates/js/translated/part.js:1672 msgid "Requires Attachment" msgstr "" @@ -4150,7 +4175,7 @@ msgstr "" msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:2686 stock/models.py:371 +#: part/models.py:2686 stock/models.py:361 msgid "Quantity must be integer value for trackable parts" msgstr "" @@ -4213,7 +4238,7 @@ msgstr "" msgid "The BOM for %(part)s has not been validated." msgstr "" -#: part/templates/part/bom.html:30 part/templates/part/detail.html:357 +#: part/templates/part/bom.html:30 part/templates/part/detail.html:250 msgid "BOM actions" msgstr "" @@ -4298,68 +4323,64 @@ msgstr "" msgid "New Category" msgstr "" -#: part/templates/part/category.html:67 -msgid "Top level part category" -msgstr "" - -#: part/templates/part/category.html:79 +#: part/templates/part/category.html:76 part/templates/part/category.html:89 msgid "Category Path" msgstr "" -#: part/templates/part/category.html:84 -msgid "Category Description" +#: part/templates/part/category.html:90 +msgid "Top level part category" msgstr "" -#: part/templates/part/category.html:103 part/templates/part/category.html:194 +#: part/templates/part/category.html:110 part/templates/part/category.html:201 #: part/templates/part/category_sidebar.html:7 msgid "Subcategories" msgstr "" -#: part/templates/part/category.html:108 +#: part/templates/part/category.html:115 msgid "Parts (Including subcategories)" msgstr "" -#: part/templates/part/category.html:145 +#: part/templates/part/category.html:152 msgid "Export Part Data" msgstr "" -#: part/templates/part/category.html:146 part/templates/part/category.html:170 +#: part/templates/part/category.html:153 part/templates/part/category.html:177 msgid "Export" msgstr "" -#: part/templates/part/category.html:149 +#: part/templates/part/category.html:156 msgid "Create new part" msgstr "" -#: part/templates/part/category.html:150 templates/js/translated/bom.js:40 +#: part/templates/part/category.html:157 templates/js/translated/bom.js:40 msgid "New Part" msgstr "" -#: part/templates/part/category.html:164 +#: part/templates/part/category.html:171 msgid "Set category" msgstr "" -#: part/templates/part/category.html:164 +#: part/templates/part/category.html:171 msgid "Set Category" msgstr "" -#: part/templates/part/category.html:168 +#: part/templates/part/category.html:175 msgid "Print Labels" msgstr "" -#: part/templates/part/category.html:170 +#: part/templates/part/category.html:177 msgid "Export Data" msgstr "" -#: part/templates/part/category.html:184 +#: part/templates/part/category.html:191 msgid "Part Parameters" msgstr "" -#: part/templates/part/category.html:261 +#: part/templates/part/category.html:268 msgid "Create Part Category" msgstr "" -#: part/templates/part/category.html:288 +#: part/templates/part/category.html:295 msgid "Create Part" msgstr "" @@ -4402,7 +4423,7 @@ msgstr "" msgid "Import Parts" msgstr "" -#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:366 +#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:373 msgid "Duplicate Part" msgstr "" @@ -4426,167 +4447,155 @@ msgstr "" msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)" msgstr "" -#: part/templates/part/detail.html:16 -msgid "Part Details" -msgstr "" - -#: part/templates/part/detail.html:66 -msgid "Minimum stock level" -msgstr "" - -#: part/templates/part/detail.html:97 -msgid "Latest Serial Number" -msgstr "" - -#: part/templates/part/detail.html:124 +#: part/templates/part/detail.html:17 msgid "Part Stock" msgstr "" -#: part/templates/part/detail.html:136 +#: part/templates/part/detail.html:29 #, python-format msgid "Showing stock for all variants of %(full_name)s" msgstr "" -#: part/templates/part/detail.html:146 +#: part/templates/part/detail.html:39 msgid "Part Test Templates" msgstr "" -#: part/templates/part/detail.html:151 +#: part/templates/part/detail.html:44 msgid "Add Test Template" msgstr "" -#: part/templates/part/detail.html:208 +#: part/templates/part/detail.html:101 msgid "Sales Order Allocations" msgstr "" -#: part/templates/part/detail.html:249 +#: part/templates/part/detail.html:142 msgid "Part Variants" msgstr "" -#: part/templates/part/detail.html:253 +#: part/templates/part/detail.html:146 msgid "Create new variant" msgstr "" -#: part/templates/part/detail.html:254 +#: part/templates/part/detail.html:147 msgid "New Variant" msgstr "" -#: part/templates/part/detail.html:281 +#: part/templates/part/detail.html:174 msgid "Add new parameter" msgstr "" -#: part/templates/part/detail.html:315 part/templates/part/part_sidebar.html:47 +#: part/templates/part/detail.html:208 part/templates/part/part_sidebar.html:45 msgid "Related Parts" msgstr "" -#: part/templates/part/detail.html:319 part/templates/part/detail.html:320 +#: part/templates/part/detail.html:212 part/templates/part/detail.html:213 msgid "Add Related" msgstr "" -#: part/templates/part/detail.html:340 part/templates/part/part_sidebar.html:19 +#: part/templates/part/detail.html:233 part/templates/part/part_sidebar.html:17 msgid "Bill of Materials" msgstr "" -#: part/templates/part/detail.html:345 +#: part/templates/part/detail.html:238 msgid "Export actions" msgstr "" -#: part/templates/part/detail.html:349 +#: part/templates/part/detail.html:242 msgid "Export BOM" msgstr "" -#: part/templates/part/detail.html:351 +#: part/templates/part/detail.html:244 msgid "Print BOM Report" msgstr "" -#: part/templates/part/detail.html:361 +#: part/templates/part/detail.html:254 msgid "Upload BOM" msgstr "" -#: part/templates/part/detail.html:363 templates/js/translated/part.js:267 +#: part/templates/part/detail.html:256 templates/js/translated/part.js:270 msgid "Copy BOM" msgstr "" -#: part/templates/part/detail.html:365 part/views.py:755 +#: part/templates/part/detail.html:258 part/views.py:755 msgid "Validate BOM" msgstr "" -#: part/templates/part/detail.html:370 +#: part/templates/part/detail.html:263 msgid "New BOM Item" msgstr "" -#: part/templates/part/detail.html:371 +#: part/templates/part/detail.html:264 msgid "Add BOM Item" msgstr "" -#: part/templates/part/detail.html:384 +#: part/templates/part/detail.html:277 msgid "Assemblies" msgstr "" -#: part/templates/part/detail.html:401 +#: part/templates/part/detail.html:294 msgid "Part Builds" msgstr "" -#: part/templates/part/detail.html:426 +#: part/templates/part/detail.html:319 msgid "Build Order Allocations" msgstr "" -#: part/templates/part/detail.html:436 +#: part/templates/part/detail.html:329 msgid "Part Suppliers" msgstr "" -#: part/templates/part/detail.html:463 +#: part/templates/part/detail.html:356 msgid "Part Manufacturers" msgstr "" -#: part/templates/part/detail.html:479 +#: part/templates/part/detail.html:372 msgid "Delete manufacturer parts" msgstr "" -#: part/templates/part/detail.html:660 +#: part/templates/part/detail.html:553 msgid "Delete selected BOM items?" msgstr "" -#: part/templates/part/detail.html:661 +#: part/templates/part/detail.html:554 msgid "All selected BOM items will be deleted" msgstr "" -#: part/templates/part/detail.html:712 +#: part/templates/part/detail.html:605 msgid "Create BOM Item" msgstr "" -#: part/templates/part/detail.html:764 +#: part/templates/part/detail.html:657 msgid "Related Part" msgstr "" -#: part/templates/part/detail.html:772 +#: part/templates/part/detail.html:665 msgid "Add Related Part" msgstr "" -#: part/templates/part/detail.html:869 +#: part/templates/part/detail.html:760 msgid "Add Test Result Template" msgstr "" -#: part/templates/part/detail.html:926 +#: part/templates/part/detail.html:817 msgid "Edit Part Notes" msgstr "" -#: part/templates/part/detail.html:1039 +#: part/templates/part/detail.html:930 #, python-format msgid "Purchase Unit Price - %(currency)s" msgstr "" -#: part/templates/part/detail.html:1051 +#: part/templates/part/detail.html:942 #, python-format msgid "Unit Price-Cost Difference - %(currency)s" msgstr "" -#: part/templates/part/detail.html:1063 +#: part/templates/part/detail.html:954 #, python-format msgid "Supplier Unit Cost - %(currency)s" msgstr "" -#: part/templates/part/detail.html:1152 +#: part/templates/part/detail.html:1043 #, python-format msgid "Unit Price - %(currency)s" msgstr "" @@ -4668,86 +4677,108 @@ msgstr "" msgid "Delete part" msgstr "" -#: part/templates/part/part_base.html:109 +#: part/templates/part/part_base.html:112 msgid "Part is a template part (variants can be made from this part)" msgstr "" -#: part/templates/part/part_base.html:113 +#: part/templates/part/part_base.html:116 msgid "Part can be assembled from other parts" msgstr "" -#: part/templates/part/part_base.html:117 +#: part/templates/part/part_base.html:120 msgid "Part can be used in assemblies" msgstr "" -#: part/templates/part/part_base.html:121 +#: part/templates/part/part_base.html:124 msgid "Part stock is tracked by serial number" msgstr "" -#: part/templates/part/part_base.html:125 +#: part/templates/part/part_base.html:128 msgid "Part can be purchased from external suppliers" msgstr "" -#: part/templates/part/part_base.html:129 +#: part/templates/part/part_base.html:132 msgid "Part can be sold to customers" msgstr "" -#: part/templates/part/part_base.html:135 -#: part/templates/part/part_base.html:143 +#: part/templates/part/part_base.html:138 +#: part/templates/part/part_base.html:146 msgid "Part is virtual (not a physical part)" msgstr "" -#: part/templates/part/part_base.html:136 +#: part/templates/part/part_base.html:139 #: templates/js/translated/company.js:505 #: templates/js/translated/company.js:762 #: templates/js/translated/model_renderers.js:175 -#: templates/js/translated/part.js:465 templates/js/translated/part.js:542 +#: templates/js/translated/part.js:472 templates/js/translated/part.js:549 msgid "Inactive" msgstr "" -#: part/templates/part/part_base.html:155 +#: part/templates/part/part_base.html:156 +#: part/templates/part/part_base.html:579 +msgid "Show Part Details" +msgstr "" + +#: part/templates/part/part_base.html:173 #, python-format msgid "This part is a variant of %(link)s" msgstr "" -#: part/templates/part/part_base.html:172 templates/js/translated/order.js:1546 +#: part/templates/part/part_base.html:190 templates/js/translated/order.js:1545 #: templates/js/translated/table_filters.js:188 msgid "In Stock" msgstr "" -#: part/templates/part/part_base.html:185 templates/js/translated/part.js:1054 +#: part/templates/part/part_base.html:203 templates/js/translated/part.js:1235 msgid "On Order" msgstr "" -#: part/templates/part/part_base.html:192 templates/InvenTree/index.html:178 +#: part/templates/part/part_base.html:210 templates/InvenTree/index.html:178 msgid "Required for Build Orders" msgstr "" -#: part/templates/part/part_base.html:199 +#: part/templates/part/part_base.html:217 msgid "Required for Sales Orders" msgstr "" -#: part/templates/part/part_base.html:206 +#: part/templates/part/part_base.html:224 msgid "Allocated to Orders" msgstr "" -#: part/templates/part/part_base.html:221 templates/js/translated/bom.js:566 +#: part/templates/part/part_base.html:239 templates/js/translated/bom.js:566 msgid "Can Build" msgstr "" -#: part/templates/part/part_base.html:227 templates/js/translated/part.js:885 -#: templates/js/translated/part.js:1058 +#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1066 +#: templates/js/translated/part.js:1239 msgid "Building" msgstr "" -#: part/templates/part/part_base.html:320 part/templates/part/prices.html:144 +#: part/templates/part/part_base.html:295 +msgid "Minimum stock level" +msgstr "" + +#: part/templates/part/part_base.html:324 +msgid "Latest Serial Number" +msgstr "" + +#: part/templates/part/part_base.html:328 +#: stock/templates/stock/item_base.html:159 +msgid "Search for serial number" +msgstr "" + +#: part/templates/part/part_base.html:449 part/templates/part/prices.html:144 msgid "Calculate" msgstr "" -#: part/templates/part/part_base.html:363 +#: part/templates/part/part_base.html:492 msgid "No matching images found" msgstr "" +#: part/templates/part/part_base.html:573 +msgid "Hide Part Details" +msgstr "" + #: part/templates/part/part_pricing.html:22 part/templates/part/prices.html:21 msgid "Supplier Pricing" msgstr "" @@ -4805,20 +4836,15 @@ msgstr "" msgid "No pricing information is available for this part." msgstr "" -#: part/templates/part/part_sidebar.html:8 -#: templates/js/translated/stock.js:1949 -msgid "Details" -msgstr "" - -#: part/templates/part/part_sidebar.html:13 +#: part/templates/part/part_sidebar.html:11 msgid "Variants" msgstr "" -#: part/templates/part/part_sidebar.html:27 +#: part/templates/part/part_sidebar.html:25 msgid "Used In" msgstr "" -#: part/templates/part/part_sidebar.html:43 +#: part/templates/part/part_sidebar.html:41 msgid "Test Templates" msgstr "" @@ -4934,8 +4960,8 @@ msgid "Set category for the following parts" msgstr "" #: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:476 -#: templates/js/translated/part.js:429 templates/js/translated/part.js:875 -#: templates/js/translated/part.js:1062 +#: templates/js/translated/part.js:436 templates/js/translated/part.js:1056 +#: templates/js/translated/part.js:1243 msgid "No Stock" msgstr "" @@ -5037,7 +5063,7 @@ msgstr "" msgid "Delete Part Parameter Template" msgstr "" -#: part/views.py:1489 templates/js/translated/part.js:310 +#: part/views.py:1489 templates/js/translated/part.js:313 msgid "Edit Part Category" msgstr "" @@ -5171,11 +5197,12 @@ msgid "Stock Item Test Report" msgstr "" #: report/templates/report/inventree_test_report_base.html:79 -#: stock/models.py:530 stock/templates/stock/item_base.html:238 +#: stock/models.py:520 stock/templates/stock/item_base.html:149 #: templates/js/translated/build.js:233 templates/js/translated/build.js:637 #: templates/js/translated/build.js:1013 #: templates/js/translated/model_renderers.js:95 -#: templates/js/translated/order.js:1288 templates/js/translated/order.js:1377 +#: templates/js/translated/order.js:1287 templates/js/translated/order.js:1376 +#: templates/js/translated/stock.js:410 msgid "Serial Number" msgstr "" @@ -5184,17 +5211,17 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:93 -#: stock/models.py:1855 +#: stock/models.py:1845 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:94 -#: stock/models.py:1861 +#: stock/models.py:1851 msgid "Result" msgstr "" #: report/templates/report/inventree_test_report_base.html:97 -#: templates/js/translated/order.js:685 templates/js/translated/stock.js:1917 +#: templates/js/translated/order.js:684 templates/js/translated/stock.js:1999 msgid "Date" msgstr "" @@ -5212,7 +5239,7 @@ msgid "Installed Items" msgstr "" #: report/templates/report/inventree_test_report_base.html:137 -#: templates/js/translated/stock.js:2177 +#: templates/js/translated/stock.js:2259 msgid "Serial" msgstr "" @@ -5220,9 +5247,9 @@ msgstr "" msgid "Quantity is required" msgstr "" -#: stock/forms.py:91 stock/forms.py:265 stock/models.py:587 -#: stock/templates/stock/item_base.html:382 -#: templates/js/translated/stock.js:1276 +#: stock/forms.py:91 stock/forms.py:265 stock/models.py:577 +#: stock/templates/stock/item_base.html:186 +#: templates/js/translated/stock.js:1358 msgid "Expiry Date" msgstr "" @@ -5270,241 +5297,241 @@ msgstr "" msgid "Confirm removal of installed stock items" msgstr "" -#: stock/models.py:60 stock/models.py:624 -#: stock/templates/stock/item_base.html:422 +#: stock/models.py:60 stock/models.py:614 +#: stock/templates/stock/item_base.html:417 msgid "Owner" msgstr "" -#: stock/models.py:61 stock/models.py:625 +#: stock/models.py:61 stock/models.py:615 msgid "Select Owner" msgstr "" -#: stock/models.py:352 +#: stock/models.py:342 msgid "StockItem with this serial number already exists" msgstr "" -#: stock/models.py:388 +#: stock/models.py:378 #, python-brace-format msgid "Part type ('{pf}') must be {pe}" msgstr "" -#: stock/models.py:398 stock/models.py:407 +#: stock/models.py:388 stock/models.py:397 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:399 +#: stock/models.py:389 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:421 +#: stock/models.py:411 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:427 +#: stock/models.py:417 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:434 +#: stock/models.py:424 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:476 +#: stock/models.py:466 msgid "Parent Stock Item" msgstr "" -#: stock/models.py:485 +#: stock/models.py:475 msgid "Base part" msgstr "" -#: stock/models.py:493 +#: stock/models.py:483 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:498 stock/templates/stock/location.html:12 +#: stock/models.py:488 stock/templates/stock/location.html:12 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" msgstr "" -#: stock/models.py:501 +#: stock/models.py:491 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:508 +#: stock/models.py:498 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:513 stock/templates/stock/item_base.html:271 +#: stock/models.py:503 stock/templates/stock/item_base.html:299 msgid "Installed In" msgstr "" -#: stock/models.py:516 +#: stock/models.py:506 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:532 +#: stock/models.py:522 msgid "Serial number for this item" msgstr "" -#: stock/models.py:546 +#: stock/models.py:536 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:550 +#: stock/models.py:540 msgid "Stock Quantity" msgstr "" -#: stock/models.py:559 +#: stock/models.py:549 msgid "Source Build" msgstr "" -#: stock/models.py:561 +#: stock/models.py:551 msgid "Build for this stock item" msgstr "" -#: stock/models.py:572 +#: stock/models.py:562 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:575 +#: stock/models.py:565 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:581 +#: stock/models.py:571 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:588 +#: stock/models.py:578 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:601 +#: stock/models.py:591 msgid "Delete on deplete" msgstr "" -#: stock/models.py:601 +#: stock/models.py:591 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:611 stock/templates/stock/item.html:111 +#: stock/models.py:601 stock/templates/stock/item.html:111 msgid "Stock Item Notes" msgstr "" -#: stock/models.py:620 +#: stock/models.py:610 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:630 +#: stock/models.py:620 msgid "Scheduled for deletion" msgstr "" -#: stock/models.py:631 +#: stock/models.py:621 msgid "This StockItem will be deleted by the background worker" msgstr "" -#: stock/models.py:1094 +#: stock/models.py:1084 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1100 +#: stock/models.py:1090 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1106 +#: stock/models.py:1096 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({n})" msgstr "" -#: stock/models.py:1109 +#: stock/models.py:1099 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1112 +#: stock/models.py:1102 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1119 +#: stock/models.py:1109 #, python-brace-format msgid "Serial numbers already exist: {exists}" msgstr "" -#: stock/models.py:1277 +#: stock/models.py:1267 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:1775 +#: stock/models.py:1765 msgid "Entry notes" msgstr "" -#: stock/models.py:1832 +#: stock/models.py:1822 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:1838 +#: stock/models.py:1828 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:1856 +#: stock/models.py:1846 msgid "Test name" msgstr "" -#: stock/models.py:1862 templates/js/translated/table_filters.js:266 +#: stock/models.py:1852 templates/js/translated/table_filters.js:266 msgid "Test result" msgstr "" -#: stock/models.py:1868 +#: stock/models.py:1858 msgid "Test output value" msgstr "" -#: stock/models.py:1875 +#: stock/models.py:1865 msgid "Test result attachment" msgstr "" -#: stock/models.py:1881 +#: stock/models.py:1871 msgid "Test notes" msgstr "" -#: stock/serializers.py:166 +#: stock/serializers.py:171 msgid "Purchase price of this stock item" msgstr "" -#: stock/serializers.py:173 +#: stock/serializers.py:178 msgid "Purchase currency of this stock item" msgstr "" -#: stock/serializers.py:287 +#: stock/serializers.py:292 msgid "Enter number of stock items to serialize" msgstr "" -#: stock/serializers.py:302 +#: stock/serializers.py:307 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "" -#: stock/serializers.py:308 +#: stock/serializers.py:313 msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:319 stock/serializers.py:686 +#: stock/serializers.py:324 stock/serializers.py:691 msgid "Destination stock location" msgstr "" -#: stock/serializers.py:326 +#: stock/serializers.py:331 msgid "Optional note field" msgstr "" -#: stock/serializers.py:339 +#: stock/serializers.py:344 msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:556 +#: stock/serializers.py:561 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:584 +#: stock/serializers.py:589 msgid "Stock transaction notes" msgstr "" -#: stock/serializers.py:594 +#: stock/serializers.py:599 msgid "A list of stock items must be provided" msgstr "" @@ -5629,125 +5656,131 @@ msgstr "" msgid "Install" msgstr "" -#: stock/templates/stock/item_base.html:106 +#: stock/templates/stock/item_base.html:108 msgid "Convert to variant" msgstr "" -#: stock/templates/stock/item_base.html:109 +#: stock/templates/stock/item_base.html:111 msgid "Duplicate stock item" msgstr "" -#: stock/templates/stock/item_base.html:111 +#: stock/templates/stock/item_base.html:113 msgid "Edit stock item" msgstr "" -#: stock/templates/stock/item_base.html:114 +#: stock/templates/stock/item_base.html:116 msgid "Delete stock item" msgstr "" -#: stock/templates/stock/item_base.html:136 -#: stock/templates/stock/item_base.html:386 -#: templates/js/translated/table_filters.js:247 -msgid "Expired" +#: stock/templates/stock/item_base.html:154 +msgid "previous page" msgstr "" -#: stock/templates/stock/item_base.html:146 -#: stock/templates/stock/item_base.html:388 -#: templates/js/translated/table_filters.js:253 -msgid "Stale" +#: stock/templates/stock/item_base.html:154 +msgid "Navigate to previous serial number" msgstr "" -#: stock/templates/stock/item_base.html:161 -msgid "You are not in the list of owners of this item. This stock item cannot be edited." +#: stock/templates/stock/item_base.html:163 +msgid "next page" msgstr "" -#: stock/templates/stock/item_base.html:168 -msgid "This stock item is in production and cannot be edited." -msgstr "" - -#: stock/templates/stock/item_base.html:169 -msgid "Edit the stock item from the build view." -msgstr "" - -#: stock/templates/stock/item_base.html:182 -msgid "This stock item has not passed all required tests" +#: stock/templates/stock/item_base.html:163 +msgid "Navigate to next serial number" msgstr "" #: stock/templates/stock/item_base.html:190 #, python-format -msgid "This stock item is allocated to Sales Order %(link)s (Quantity: %(qty)s)" -msgstr "" - -#: stock/templates/stock/item_base.html:198 -#, python-format -msgid "This stock item is allocated to Build %(link)s (Quantity: %(qty)s)" -msgstr "" - -#: stock/templates/stock/item_base.html:204 -msgid "This stock item is serialized - it has a unique serial number and the quantity cannot be adjusted." -msgstr "" - -#: stock/templates/stock/item_base.html:208 -msgid "This stock item cannot be deleted as it has child items" -msgstr "" - -#: stock/templates/stock/item_base.html:212 -msgid "This stock item will be automatically deleted when all stock is depleted." -msgstr "" - -#: stock/templates/stock/item_base.html:241 -msgid "previous page" -msgstr "" - -#: stock/templates/stock/item_base.html:247 -msgid "next page" -msgstr "" - -#: stock/templates/stock/item_base.html:290 -#: templates/js/translated/build.js:1035 -msgid "No location set" -msgstr "" - -#: stock/templates/stock/item_base.html:297 -msgid "Barcode Identifier" -msgstr "" - -#: stock/templates/stock/item_base.html:339 -msgid "Parent Item" -msgstr "" - -#: stock/templates/stock/item_base.html:357 -msgid "No manufacturer set" -msgstr "" - -#: stock/templates/stock/item_base.html:386 -#, python-format msgid "This StockItem expired on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:388 +#: stock/templates/stock/item_base.html:190 +#: templates/js/translated/table_filters.js:247 +msgid "Expired" +msgstr "" + +#: stock/templates/stock/item_base.html:192 #, python-format msgid "This StockItem expires on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:395 -#: templates/js/translated/stock.js:1289 +#: stock/templates/stock/item_base.html:192 +#: templates/js/translated/table_filters.js:253 +msgid "Stale" +msgstr "" + +#: stock/templates/stock/item_base.html:199 +#: templates/js/translated/stock.js:1371 msgid "Last Updated" msgstr "" -#: stock/templates/stock/item_base.html:400 +#: stock/templates/stock/item_base.html:204 msgid "Last Stocktake" msgstr "" -#: stock/templates/stock/item_base.html:404 +#: stock/templates/stock/item_base.html:208 msgid "No stocktake performed" msgstr "" -#: stock/templates/stock/item_base.html:415 +#: stock/templates/stock/item_base.html:226 +msgid "You are not in the list of owners of this item. This stock item cannot be edited." +msgstr "" + +#: stock/templates/stock/item_base.html:233 +msgid "This stock item is in production and cannot be edited." +msgstr "" + +#: stock/templates/stock/item_base.html:234 +msgid "Edit the stock item from the build view." +msgstr "" + +#: stock/templates/stock/item_base.html:247 +msgid "This stock item has not passed all required tests" +msgstr "" + +#: stock/templates/stock/item_base.html:255 +#, python-format +msgid "This stock item is allocated to Sales Order %(link)s (Quantity: %(qty)s)" +msgstr "" + +#: stock/templates/stock/item_base.html:263 +#, python-format +msgid "This stock item is allocated to Build %(link)s (Quantity: %(qty)s)" +msgstr "" + +#: stock/templates/stock/item_base.html:269 +msgid "This stock item is serialized - it has a unique serial number and the quantity cannot be adjusted." +msgstr "" + +#: stock/templates/stock/item_base.html:273 +msgid "This stock item cannot be deleted as it has child items" +msgstr "" + +#: stock/templates/stock/item_base.html:277 +msgid "This stock item will be automatically deleted when all stock is depleted." +msgstr "" + +#: stock/templates/stock/item_base.html:318 +#: templates/js/translated/build.js:1035 +msgid "No location set" +msgstr "" + +#: stock/templates/stock/item_base.html:325 +msgid "Barcode Identifier" +msgstr "" + +#: stock/templates/stock/item_base.html:367 +msgid "Parent Item" +msgstr "" + +#: stock/templates/stock/item_base.html:385 +msgid "No manufacturer set" +msgstr "" + +#: stock/templates/stock/item_base.html:410 msgid "Tests" msgstr "" -#: stock/templates/stock/item_base.html:505 +#: stock/templates/stock/item_base.html:500 msgid "Edit Stock Status" msgstr "" @@ -5825,30 +5858,35 @@ msgstr "" msgid "New Location" msgstr "" -#: stock/templates/stock/location.html:86 +#: stock/templates/stock/location.html:95 +#: stock/templates/stock/location.html:101 +msgid "Location Path" +msgstr "" + +#: stock/templates/stock/location.html:102 msgid "Top level stock location" msgstr "" -#: stock/templates/stock/location.html:95 +#: stock/templates/stock/location.html:115 msgid "You are not in the list of owners of this location. This stock location cannot be edited." msgstr "" -#: stock/templates/stock/location.html:113 -#: stock/templates/stock/location.html:160 +#: stock/templates/stock/location.html:128 +#: stock/templates/stock/location.html:175 #: stock/templates/stock/location_sidebar.html:5 msgid "Sublocations" msgstr "" -#: stock/templates/stock/location.html:127 templates/InvenTree/search.html:170 +#: stock/templates/stock/location.html:142 templates/InvenTree/search.html:170 #: templates/stats.html:97 users/models.py:42 msgid "Stock Locations" msgstr "" -#: stock/templates/stock/location.html:167 templates/stock_table.html:30 +#: stock/templates/stock/location.html:182 templates/stock_table.html:30 msgid "Printing Actions" msgstr "" -#: stock/templates/stock/location.html:171 templates/stock_table.html:34 +#: stock/templates/stock/location.html:186 templates/stock_table.html:34 msgid "Print labels" msgstr "" @@ -5942,7 +5980,7 @@ msgstr "" msgid "Uninstall Stock Items" msgstr "" -#: stock/views.py:760 templates/js/translated/stock.js:648 +#: stock/views.py:760 templates/js/translated/stock.js:730 msgid "Confirm stock adjustment" msgstr "" @@ -5950,7 +5988,7 @@ msgstr "" msgid "Uninstalled stock items" msgstr "" -#: stock/views.py:793 templates/js/translated/stock.js:318 +#: stock/views.py:793 templates/js/translated/stock.js:319 msgid "Edit Stock Item" msgstr "" @@ -5962,7 +6000,7 @@ msgstr "" msgid "Create new Stock Item" msgstr "" -#: stock/views.py:1186 templates/js/translated/stock.js:298 +#: stock/views.py:1186 templates/js/translated/stock.js:299 msgid "Duplicate Stock Item" msgstr "" @@ -6868,7 +6906,7 @@ msgstr "" msgid "Unlink" msgstr "" -#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:600 +#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:682 msgid "Remove stock item" msgstr "" @@ -6963,7 +7001,7 @@ msgid "View BOM" msgstr "" #: templates/js/translated/bom.js:608 templates/js/translated/build.js:1183 -#: templates/js/translated/order.js:1320 +#: templates/js/translated/order.js:1319 msgid "Actions" msgstr "" @@ -7055,7 +7093,7 @@ msgstr "" msgid "No build order allocations found" msgstr "" -#: templates/js/translated/build.js:424 templates/js/translated/order.js:1194 +#: templates/js/translated/build.js:424 templates/js/translated/order.js:1193 msgid "Location not specified" msgstr "" @@ -7064,12 +7102,12 @@ msgid "No active build outputs found" msgstr "" #: templates/js/translated/build.js:1052 templates/js/translated/build.js:1760 -#: templates/js/translated/order.js:1327 +#: templates/js/translated/order.js:1326 msgid "Edit stock allocation" msgstr "" #: templates/js/translated/build.js:1054 templates/js/translated/build.js:1761 -#: templates/js/translated/order.js:1328 +#: templates/js/translated/order.js:1327 msgid "Delete stock allocation" msgstr "" @@ -7090,11 +7128,11 @@ msgid "Quantity Per" msgstr "" #: templates/js/translated/build.js:1134 templates/js/translated/build.js:1360 -#: templates/js/translated/build.js:1756 templates/js/translated/order.js:1557 +#: templates/js/translated/build.js:1756 templates/js/translated/order.js:1556 msgid "Allocated" msgstr "" -#: templates/js/translated/build.js:1190 templates/js/translated/order.js:1611 +#: templates/js/translated/build.js:1190 templates/js/translated/order.js:1610 msgid "Build stock" msgstr "" @@ -7102,7 +7140,7 @@ msgstr "" msgid "Order stock" msgstr "" -#: templates/js/translated/build.js:1197 templates/js/translated/order.js:1604 +#: templates/js/translated/build.js:1197 templates/js/translated/order.js:1603 msgid "Allocate stock" msgstr "" @@ -7143,9 +7181,9 @@ msgstr "" msgid "No builds matching query" msgstr "" -#: templates/js/translated/build.js:1593 templates/js/translated/part.js:966 -#: templates/js/translated/part.js:1377 templates/js/translated/stock.js:1094 -#: templates/js/translated/stock.js:1871 +#: templates/js/translated/build.js:1593 templates/js/translated/part.js:1147 +#: templates/js/translated/part.js:1558 templates/js/translated/stock.js:1176 +#: templates/js/translated/stock.js:1953 msgid "Select" msgstr "" @@ -7153,7 +7191,7 @@ msgstr "" msgid "Build order is overdue" msgstr "" -#: templates/js/translated/build.js:1674 templates/js/translated/stock.js:2090 +#: templates/js/translated/build.js:1674 templates/js/translated/stock.js:2172 msgid "No user information" msgstr "" @@ -7197,10 +7235,6 @@ msgstr "" msgid "Delete Supplier Part" msgstr "" -#: templates/js/translated/company.js:265 -msgid "Edit Company" -msgstr "" - #: templates/js/translated/company.js:286 msgid "Add new Company" msgstr "" @@ -7230,34 +7264,34 @@ msgid "No manufacturer parts found" msgstr "" #: templates/js/translated/company.js:497 -#: templates/js/translated/company.js:754 templates/js/translated/part.js:449 -#: templates/js/translated/part.js:534 +#: templates/js/translated/company.js:754 templates/js/translated/part.js:456 +#: templates/js/translated/part.js:541 msgid "Template part" msgstr "" #: templates/js/translated/company.js:501 -#: templates/js/translated/company.js:758 templates/js/translated/part.js:453 -#: templates/js/translated/part.js:538 +#: templates/js/translated/company.js:758 templates/js/translated/part.js:460 +#: templates/js/translated/part.js:545 msgid "Assembled part" msgstr "" -#: templates/js/translated/company.js:628 templates/js/translated/part.js:626 +#: templates/js/translated/company.js:628 templates/js/translated/part.js:633 msgid "No parameters found" msgstr "" -#: templates/js/translated/company.js:665 templates/js/translated/part.js:668 +#: templates/js/translated/company.js:665 templates/js/translated/part.js:675 msgid "Edit parameter" msgstr "" -#: templates/js/translated/company.js:666 templates/js/translated/part.js:669 +#: templates/js/translated/company.js:666 templates/js/translated/part.js:676 msgid "Delete parameter" msgstr "" -#: templates/js/translated/company.js:685 templates/js/translated/part.js:686 +#: templates/js/translated/company.js:685 templates/js/translated/part.js:693 msgid "Edit Parameter" msgstr "" -#: templates/js/translated/company.js:696 templates/js/translated/part.js:698 +#: templates/js/translated/company.js:696 templates/js/translated/part.js:705 msgid "Delete Parameter" msgstr "" @@ -7346,7 +7380,7 @@ msgid "NO" msgstr "" #: templates/js/translated/label.js:29 templates/js/translated/report.js:118 -#: templates/js/translated/stock.js:624 +#: templates/js/translated/stock.js:706 msgid "Select Stock Items" msgstr "" @@ -7502,11 +7536,11 @@ msgstr "" msgid "Export Order" msgstr "" -#: templates/js/translated/order.js:211 templates/js/translated/stock.js:423 +#: templates/js/translated/order.js:211 templates/js/translated/stock.js:505 msgid "Format" msgstr "" -#: templates/js/translated/order.js:212 templates/js/translated/stock.js:424 +#: templates/js/translated/order.js:212 templates/js/translated/stock.js:506 msgid "Select file format" msgstr "" @@ -7522,7 +7556,7 @@ msgstr "" msgid "Quantity to receive" msgstr "" -#: templates/js/translated/order.js:360 templates/js/translated/stock.js:1673 +#: templates/js/translated/order.js:360 templates/js/translated/stock.js:1755 msgid "Stock Status" msgstr "" @@ -7546,321 +7580,321 @@ msgstr "" msgid "Receive Purchase Order Items" msgstr "" -#: templates/js/translated/order.js:627 +#: templates/js/translated/order.js:627 templates/js/translated/part.js:746 msgid "No purchase orders found" msgstr "" -#: templates/js/translated/order.js:652 templates/js/translated/order.js:1063 +#: templates/js/translated/order.js:659 templates/js/translated/order.js:1062 msgid "Order is overdue" msgstr "" -#: templates/js/translated/order.js:772 templates/js/translated/order.js:1646 +#: templates/js/translated/order.js:771 templates/js/translated/order.js:1645 msgid "Edit Line Item" msgstr "" -#: templates/js/translated/order.js:784 templates/js/translated/order.js:1657 +#: templates/js/translated/order.js:783 templates/js/translated/order.js:1656 msgid "Delete Line Item" msgstr "" -#: templates/js/translated/order.js:823 +#: templates/js/translated/order.js:822 msgid "No line items found" msgstr "" -#: templates/js/translated/order.js:850 templates/js/translated/order.js:1467 +#: templates/js/translated/order.js:849 templates/js/translated/order.js:1466 msgid "Total" msgstr "" -#: templates/js/translated/order.js:904 templates/js/translated/order.js:1492 -#: templates/js/translated/part.js:1594 templates/js/translated/part.js:1805 +#: templates/js/translated/order.js:903 templates/js/translated/order.js:1491 +#: templates/js/translated/part.js:1775 templates/js/translated/part.js:1986 msgid "Unit Price" msgstr "" -#: templates/js/translated/order.js:919 templates/js/translated/order.js:1508 +#: templates/js/translated/order.js:918 templates/js/translated/order.js:1507 msgid "Total Price" msgstr "" -#: templates/js/translated/order.js:997 templates/js/translated/order.js:1617 +#: templates/js/translated/order.js:996 templates/js/translated/order.js:1616 msgid "Edit line item" msgstr "" -#: templates/js/translated/order.js:998 +#: templates/js/translated/order.js:997 msgid "Delete line item" msgstr "" -#: templates/js/translated/order.js:1002 +#: templates/js/translated/order.js:1001 templates/js/translated/part.js:878 msgid "Receive line item" msgstr "" -#: templates/js/translated/order.js:1039 +#: templates/js/translated/order.js:1038 msgid "No sales orders found" msgstr "" -#: templates/js/translated/order.js:1077 +#: templates/js/translated/order.js:1076 msgid "Invalid Customer" msgstr "" -#: templates/js/translated/order.js:1155 +#: templates/js/translated/order.js:1154 msgid "No sales order allocations found" msgstr "" -#: templates/js/translated/order.js:1248 +#: templates/js/translated/order.js:1247 msgid "Edit Stock Allocation" msgstr "" -#: templates/js/translated/order.js:1265 +#: templates/js/translated/order.js:1264 msgid "Confirm Delete Operation" msgstr "" -#: templates/js/translated/order.js:1266 +#: templates/js/translated/order.js:1265 msgid "Delete Stock Allocation" msgstr "" -#: templates/js/translated/order.js:1308 +#: templates/js/translated/order.js:1307 msgid "Stock location not specified" msgstr "" -#: templates/js/translated/order.js:1557 +#: templates/js/translated/order.js:1556 msgid "Fulfilled" msgstr "" -#: templates/js/translated/order.js:1601 +#: templates/js/translated/order.js:1600 msgid "Allocate serial numbers" msgstr "" -#: templates/js/translated/order.js:1607 +#: templates/js/translated/order.js:1606 msgid "Purchase stock" msgstr "" -#: templates/js/translated/order.js:1614 templates/js/translated/order.js:1793 +#: templates/js/translated/order.js:1613 templates/js/translated/order.js:1792 msgid "Calculate price" msgstr "" -#: templates/js/translated/order.js:1618 +#: templates/js/translated/order.js:1617 msgid "Delete line item " msgstr "" -#: templates/js/translated/order.js:1741 +#: templates/js/translated/order.js:1740 msgid "Allocate Stock Item" msgstr "" -#: templates/js/translated/order.js:1801 +#: templates/js/translated/order.js:1800 msgid "Update Unit Price" msgstr "" -#: templates/js/translated/order.js:1815 +#: templates/js/translated/order.js:1814 msgid "No matching line items" msgstr "" -#: templates/js/translated/part.js:51 +#: templates/js/translated/part.js:52 msgid "Part Attributes" msgstr "" -#: templates/js/translated/part.js:55 +#: templates/js/translated/part.js:56 msgid "Part Creation Options" msgstr "" -#: templates/js/translated/part.js:59 +#: templates/js/translated/part.js:60 msgid "Part Duplication Options" msgstr "" -#: templates/js/translated/part.js:63 +#: templates/js/translated/part.js:64 msgid "Supplier Options" msgstr "" -#: templates/js/translated/part.js:77 +#: templates/js/translated/part.js:78 msgid "Add Part Category" msgstr "" -#: templates/js/translated/part.js:166 +#: templates/js/translated/part.js:162 msgid "Create Initial Stock" msgstr "" -#: templates/js/translated/part.js:167 +#: templates/js/translated/part.js:163 msgid "Create an initial stock item for this part" msgstr "" -#: templates/js/translated/part.js:174 +#: templates/js/translated/part.js:170 msgid "Initial Stock Quantity" msgstr "" -#: templates/js/translated/part.js:175 +#: templates/js/translated/part.js:171 msgid "Specify initial stock quantity for this part" msgstr "" -#: templates/js/translated/part.js:182 +#: templates/js/translated/part.js:178 msgid "Select destination stock location" msgstr "" -#: templates/js/translated/part.js:193 +#: templates/js/translated/part.js:196 msgid "Copy Category Parameters" msgstr "" -#: templates/js/translated/part.js:194 +#: templates/js/translated/part.js:197 msgid "Copy parameter templates from selected part category" msgstr "" -#: templates/js/translated/part.js:202 +#: templates/js/translated/part.js:205 msgid "Add Supplier Data" msgstr "" -#: templates/js/translated/part.js:203 +#: templates/js/translated/part.js:206 msgid "Create initial supplier data for this part" msgstr "" -#: templates/js/translated/part.js:259 +#: templates/js/translated/part.js:262 msgid "Copy Image" msgstr "" -#: templates/js/translated/part.js:260 +#: templates/js/translated/part.js:263 msgid "Copy image from original part" msgstr "" -#: templates/js/translated/part.js:268 +#: templates/js/translated/part.js:271 msgid "Copy bill of materials from original part" msgstr "" -#: templates/js/translated/part.js:275 +#: templates/js/translated/part.js:278 msgid "Copy Parameters" msgstr "" -#: templates/js/translated/part.js:276 +#: templates/js/translated/part.js:279 msgid "Copy parameter data from original part" msgstr "" -#: templates/js/translated/part.js:289 +#: templates/js/translated/part.js:292 msgid "Parent part category" msgstr "" -#: templates/js/translated/part.js:333 +#: templates/js/translated/part.js:336 msgid "Edit Part" msgstr "" -#: templates/js/translated/part.js:335 +#: templates/js/translated/part.js:338 msgid "Part edited" msgstr "" -#: templates/js/translated/part.js:403 +#: templates/js/translated/part.js:410 msgid "You are subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:405 +#: templates/js/translated/part.js:412 msgid "You have subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:410 +#: templates/js/translated/part.js:417 msgid "Subscribe to notifications for this item" msgstr "" -#: templates/js/translated/part.js:412 +#: templates/js/translated/part.js:419 msgid "You have unsubscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:441 templates/js/translated/part.js:526 +#: templates/js/translated/part.js:448 templates/js/translated/part.js:533 msgid "Trackable part" msgstr "" -#: templates/js/translated/part.js:445 templates/js/translated/part.js:530 +#: templates/js/translated/part.js:452 templates/js/translated/part.js:537 msgid "Virtual part" msgstr "" -#: templates/js/translated/part.js:457 +#: templates/js/translated/part.js:464 msgid "Subscribed part" msgstr "" -#: templates/js/translated/part.js:461 +#: templates/js/translated/part.js:468 msgid "Salable part" msgstr "" -#: templates/js/translated/part.js:576 +#: templates/js/translated/part.js:583 msgid "No variants found" msgstr "" -#: templates/js/translated/part.js:765 +#: templates/js/translated/part.js:946 msgid "Delete part relationship" msgstr "" -#: templates/js/translated/part.js:789 +#: templates/js/translated/part.js:970 msgid "Delete Part Relationship" msgstr "" -#: templates/js/translated/part.js:856 templates/js/translated/part.js:1116 +#: templates/js/translated/part.js:1037 templates/js/translated/part.js:1297 msgid "No parts found" msgstr "" -#: templates/js/translated/part.js:1026 +#: templates/js/translated/part.js:1207 msgid "No category" msgstr "" -#: templates/js/translated/part.js:1049 +#: templates/js/translated/part.js:1230 #: templates/js/translated/table_filters.js:381 msgid "Low stock" msgstr "" -#: templates/js/translated/part.js:1140 templates/js/translated/part.js:1312 -#: templates/js/translated/stock.js:1832 +#: templates/js/translated/part.js:1321 templates/js/translated/part.js:1493 +#: templates/js/translated/stock.js:1914 msgid "Display as list" msgstr "" -#: templates/js/translated/part.js:1156 +#: templates/js/translated/part.js:1337 msgid "Display as grid" msgstr "" -#: templates/js/translated/part.js:1331 templates/js/translated/stock.js:1851 +#: templates/js/translated/part.js:1512 templates/js/translated/stock.js:1933 msgid "Display as tree" msgstr "" -#: templates/js/translated/part.js:1395 +#: templates/js/translated/part.js:1576 msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:1409 templates/js/translated/stock.js:1895 +#: templates/js/translated/part.js:1590 templates/js/translated/stock.js:1977 msgid "Path" msgstr "" -#: templates/js/translated/part.js:1453 +#: templates/js/translated/part.js:1634 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:1504 templates/js/translated/stock.js:816 +#: templates/js/translated/part.js:1685 templates/js/translated/stock.js:898 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:1505 templates/js/translated/stock.js:817 +#: templates/js/translated/part.js:1686 templates/js/translated/stock.js:899 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:1511 +#: templates/js/translated/part.js:1692 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:1533 +#: templates/js/translated/part.js:1714 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:1547 +#: templates/js/translated/part.js:1728 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:1572 +#: templates/js/translated/part.js:1753 #, python-brace-format msgid "No ${human_name} information found" msgstr "" -#: templates/js/translated/part.js:1627 +#: templates/js/translated/part.js:1808 #, python-brace-format msgid "Edit ${human_name}" msgstr "" -#: templates/js/translated/part.js:1628 +#: templates/js/translated/part.js:1809 #, python-brace-format msgid "Delete ${human_name}" msgstr "" -#: templates/js/translated/part.js:1729 +#: templates/js/translated/part.js:1910 msgid "Single Price" msgstr "" -#: templates/js/translated/part.js:1748 +#: templates/js/translated/part.js:1929 msgid "Single Price Difference" msgstr "" @@ -7930,276 +7964,300 @@ msgstr "" msgid "Sales Order(s) must be selected before printing report" msgstr "" -#: templates/js/translated/stock.js:70 +#: templates/js/translated/stock.js:71 msgid "Serialize Stock Item" msgstr "" -#: templates/js/translated/stock.js:88 templates/js/translated/stock.js:167 +#: templates/js/translated/stock.js:89 templates/js/translated/stock.js:168 msgid "Next available serial number" msgstr "" -#: templates/js/translated/stock.js:90 templates/js/translated/stock.js:169 +#: templates/js/translated/stock.js:91 templates/js/translated/stock.js:170 msgid "Latest serial number" msgstr "" -#: templates/js/translated/stock.js:104 +#: templates/js/translated/stock.js:105 msgid "Parent stock location" msgstr "" -#: templates/js/translated/stock.js:140 +#: templates/js/translated/stock.js:141 msgid "New Stock Location" msgstr "" -#: templates/js/translated/stock.js:180 +#: templates/js/translated/stock.js:181 msgid "This part cannot be serialized" msgstr "" -#: templates/js/translated/stock.js:219 +#: templates/js/translated/stock.js:220 msgid "Enter initial quantity for this stock item" msgstr "" -#: templates/js/translated/stock.js:225 +#: templates/js/translated/stock.js:226 msgid "Enter serial numbers for new stock (or leave blank)" msgstr "" -#: templates/js/translated/stock.js:368 +#: templates/js/translated/stock.js:369 msgid "Created new stock item" msgstr "" -#: templates/js/translated/stock.js:381 +#: templates/js/translated/stock.js:382 msgid "Created multiple stock items" msgstr "" -#: templates/js/translated/stock.js:420 +#: templates/js/translated/stock.js:407 +msgid "Find Serial Number" +msgstr "" + +#: templates/js/translated/stock.js:411 templates/js/translated/stock.js:412 +msgid "Enter serial number" +msgstr "" + +#: templates/js/translated/stock.js:428 +msgid "Enter a serial number" +msgstr "" + +#: templates/js/translated/stock.js:448 +msgid "No matching serial number" +msgstr "" + +#: templates/js/translated/stock.js:457 +msgid "More than one matching result found" +msgstr "" + +#: templates/js/translated/stock.js:502 msgid "Export Stock" msgstr "" -#: templates/js/translated/stock.js:431 +#: templates/js/translated/stock.js:513 msgid "Include Sublocations" msgstr "" -#: templates/js/translated/stock.js:432 +#: templates/js/translated/stock.js:514 msgid "Include stock items in sublocations" msgstr "" -#: templates/js/translated/stock.js:474 +#: templates/js/translated/stock.js:556 msgid "Transfer Stock" msgstr "" -#: templates/js/translated/stock.js:475 +#: templates/js/translated/stock.js:557 msgid "Move" msgstr "" -#: templates/js/translated/stock.js:481 +#: templates/js/translated/stock.js:563 msgid "Count Stock" msgstr "" -#: templates/js/translated/stock.js:482 +#: templates/js/translated/stock.js:564 msgid "Count" msgstr "" -#: templates/js/translated/stock.js:486 +#: templates/js/translated/stock.js:568 msgid "Remove Stock" msgstr "" -#: templates/js/translated/stock.js:487 +#: templates/js/translated/stock.js:569 msgid "Take" msgstr "" -#: templates/js/translated/stock.js:491 +#: templates/js/translated/stock.js:573 msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:492 users/models.py:200 +#: templates/js/translated/stock.js:574 users/models.py:200 msgid "Add" msgstr "" -#: templates/js/translated/stock.js:496 templates/stock_table.html:56 +#: templates/js/translated/stock.js:578 templates/stock_table.html:56 msgid "Delete Stock" msgstr "" -#: templates/js/translated/stock.js:585 +#: templates/js/translated/stock.js:667 msgid "Quantity cannot be adjusted for serialized stock" msgstr "" -#: templates/js/translated/stock.js:585 +#: templates/js/translated/stock.js:667 msgid "Specify stock quantity" msgstr "" -#: templates/js/translated/stock.js:625 +#: templates/js/translated/stock.js:707 msgid "You must select at least one available stock item" msgstr "" -#: templates/js/translated/stock.js:783 +#: templates/js/translated/stock.js:865 msgid "PASS" msgstr "" -#: templates/js/translated/stock.js:785 +#: templates/js/translated/stock.js:867 msgid "FAIL" msgstr "" -#: templates/js/translated/stock.js:790 +#: templates/js/translated/stock.js:872 msgid "NO RESULT" msgstr "" -#: templates/js/translated/stock.js:812 +#: templates/js/translated/stock.js:894 msgid "Add test result" msgstr "" -#: templates/js/translated/stock.js:838 +#: templates/js/translated/stock.js:920 msgid "No test results found" msgstr "" -#: templates/js/translated/stock.js:895 +#: templates/js/translated/stock.js:977 msgid "Test Date" msgstr "" -#: templates/js/translated/stock.js:1002 +#: templates/js/translated/stock.js:1084 msgid "In production" msgstr "" -#: templates/js/translated/stock.js:1006 +#: templates/js/translated/stock.js:1088 msgid "Installed in Stock Item" msgstr "" -#: templates/js/translated/stock.js:1010 +#: templates/js/translated/stock.js:1092 msgid "Shipped to customer" msgstr "" -#: templates/js/translated/stock.js:1014 +#: templates/js/translated/stock.js:1096 msgid "Assigned to Sales Order" msgstr "" -#: templates/js/translated/stock.js:1020 +#: templates/js/translated/stock.js:1102 msgid "No stock location set" msgstr "" -#: templates/js/translated/stock.js:1178 +#: templates/js/translated/stock.js:1260 msgid "Stock item is in production" msgstr "" -#: templates/js/translated/stock.js:1183 +#: templates/js/translated/stock.js:1265 msgid "Stock item assigned to sales order" msgstr "" -#: templates/js/translated/stock.js:1186 +#: templates/js/translated/stock.js:1268 msgid "Stock item assigned to customer" msgstr "" -#: templates/js/translated/stock.js:1190 +#: templates/js/translated/stock.js:1272 msgid "Stock item has expired" msgstr "" -#: templates/js/translated/stock.js:1192 +#: templates/js/translated/stock.js:1274 msgid "Stock item will expire soon" msgstr "" -#: templates/js/translated/stock.js:1196 +#: templates/js/translated/stock.js:1278 msgid "Stock item has been allocated" msgstr "" -#: templates/js/translated/stock.js:1200 +#: templates/js/translated/stock.js:1282 msgid "Stock item has been installed in another item" msgstr "" -#: templates/js/translated/stock.js:1207 +#: templates/js/translated/stock.js:1289 msgid "Stock item has been rejected" msgstr "" -#: templates/js/translated/stock.js:1209 +#: templates/js/translated/stock.js:1291 msgid "Stock item is lost" msgstr "" -#: templates/js/translated/stock.js:1211 +#: templates/js/translated/stock.js:1293 msgid "Stock item is destroyed" msgstr "" -#: templates/js/translated/stock.js:1215 +#: templates/js/translated/stock.js:1297 #: templates/js/translated/table_filters.js:183 msgid "Depleted" msgstr "" -#: templates/js/translated/stock.js:1265 +#: templates/js/translated/stock.js:1347 msgid "Stocktake" msgstr "" -#: templates/js/translated/stock.js:1338 +#: templates/js/translated/stock.js:1420 msgid "Supplier part not specified" msgstr "" -#: templates/js/translated/stock.js:1376 +#: templates/js/translated/stock.js:1458 msgid "No stock items matching query" msgstr "" -#: templates/js/translated/stock.js:1397 templates/js/translated/stock.js:1445 +#: templates/js/translated/stock.js:1479 templates/js/translated/stock.js:1527 msgid "items" msgstr "" -#: templates/js/translated/stock.js:1485 +#: templates/js/translated/stock.js:1567 msgid "batches" msgstr "" -#: templates/js/translated/stock.js:1512 +#: templates/js/translated/stock.js:1594 msgid "locations" msgstr "" -#: templates/js/translated/stock.js:1514 +#: templates/js/translated/stock.js:1596 msgid "Undefined location" msgstr "" -#: templates/js/translated/stock.js:1688 +#: templates/js/translated/stock.js:1770 msgid "Set Stock Status" msgstr "" -#: templates/js/translated/stock.js:1702 +#: templates/js/translated/stock.js:1784 msgid "Select Status Code" msgstr "" -#: templates/js/translated/stock.js:1703 +#: templates/js/translated/stock.js:1785 msgid "Status code must be selected" msgstr "" -#: templates/js/translated/stock.js:1927 +#: templates/js/translated/stock.js:2009 msgid "Invalid date" msgstr "" -#: templates/js/translated/stock.js:1974 +#: templates/js/translated/stock.js:2031 +msgid "Details" +msgstr "" + +#: templates/js/translated/stock.js:2056 msgid "Location no longer exists" msgstr "" -#: templates/js/translated/stock.js:1993 +#: templates/js/translated/stock.js:2075 msgid "Purchase order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2012 +#: templates/js/translated/stock.js:2094 msgid "Customer no longer exists" msgstr "" -#: templates/js/translated/stock.js:2030 +#: templates/js/translated/stock.js:2112 msgid "Stock item no longer exists" msgstr "" -#: templates/js/translated/stock.js:2053 +#: templates/js/translated/stock.js:2135 msgid "Added" msgstr "" -#: templates/js/translated/stock.js:2061 +#: templates/js/translated/stock.js:2143 msgid "Removed" msgstr "" -#: templates/js/translated/stock.js:2102 +#: templates/js/translated/stock.js:2184 msgid "Edit tracking entry" msgstr "" -#: templates/js/translated/stock.js:2103 +#: templates/js/translated/stock.js:2185 msgid "Delete tracking entry" msgstr "" -#: templates/js/translated/stock.js:2154 +#: templates/js/translated/stock.js:2236 msgid "No installed items" msgstr "" -#: templates/js/translated/stock.js:2205 +#: templates/js/translated/stock.js:2287 msgid "Uninstall Stock Item" msgstr "" diff --git a/InvenTree/locale/en/LC_MESSAGES/django.po b/InvenTree/locale/en/LC_MESSAGES/django.po index 11cca2ebb9..c752304ce6 100644 --- a/InvenTree/locale/en/LC_MESSAGES/django.po +++ b/InvenTree/locale/en/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-11-30 21:49+0000\n" +"POT-Creation-Date: 2021-11-30 22:21+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -195,8 +195,7 @@ msgstr "" #: InvenTree/models.py:271 InvenTree/models.py:272 company/models.py:415 #: label/models.py:112 part/models.py:741 part/models.py:2389 -#: part/templates/part/detail.html:25 report/models.py:181 -#: templates/InvenTree/settings/settings.html:259 +#: report/models.py:181 templates/InvenTree/settings/settings.html:259 #: templates/js/translated/company.js:638 templates/js/translated/part.js:499 #: templates/js/translated/part.js:636 templates/js/translated/part.js:1384 #: templates/js/translated/stock.js:1877 @@ -205,13 +204,15 @@ msgstr "" #: InvenTree/models.py:278 build/models.py:207 #: build/templates/build/detail.html:25 company/models.py:354 -#: company/models.py:570 company/templates/company/manufacturer_part.html:80 -#: company/templates/company/supplier_part.html:81 label/models.py:119 -#: order/models.py:161 part/models.py:764 part/templates/part/detail.html:30 +#: company/models.py:570 company/templates/company/company_base.html:68 +#: company/templates/company/manufacturer_part.html:76 +#: company/templates/company/supplier_part.html:73 label/models.py:119 +#: order/models.py:161 part/models.py:764 part/templates/part/category.html:70 +#: part/templates/part/part_base.html:163 #: part/templates/part/set_category.html:14 report/models.py:194 #: report/models.py:553 report/models.py:592 #: report/templates/report/inventree_build_order_base.html:118 -#: stock/templates/stock/location.html:108 templates/js/translated/bom.js:215 +#: stock/templates/stock/location.html:89 templates/js/translated/bom.js:215 #: templates/js/translated/bom.js:428 templates/js/translated/build.js:1621 #: templates/js/translated/company.js:345 #: templates/js/translated/company.js:548 @@ -362,7 +363,7 @@ msgid "Returned" msgstr "" #: InvenTree/status_codes.py:143 -#: order/templates/order/sales_order_base.html:147 +#: order/templates/order/sales_order_base.html:148 msgid "Shipped" msgstr "" @@ -567,7 +568,7 @@ msgid "Barcode associated with StockItem" msgstr "" #: build/forms.py:36 build/models.py:1283 -#: build/templates/build/build_base.html:124 +#: build/templates/build/build_base.html:132 #: build/templates/build/detail.html:35 common/models.py:1225 #: company/forms.py:42 company/templates/company/supplier_part.html:251 #: order/forms.py:102 order/models.py:729 order/models.py:991 @@ -575,7 +576,7 @@ msgstr "" #: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:223 #: part/forms.py:239 part/forms.py:255 part/models.py:2576 #: part/templates/part/bom_upload/match_parts.html:31 -#: part/templates/part/detail.html:1076 part/templates/part/detail.html:1162 +#: part/templates/part/detail.html:969 part/templates/part/detail.html:1055 #: part/templates/part/part_pricing.html:16 #: report/templates/report/inventree_build_order_base.html:114 #: report/templates/report/inventree_po_report.html:91 @@ -583,7 +584,7 @@ msgstr "" #: report/templates/report/inventree_test_report_base.html:81 #: report/templates/report/inventree_test_report_base.html:139 #: stock/forms.py:156 stock/serializers.py:286 -#: stock/templates/stock/item_base.html:256 +#: stock/templates/stock/item_base.html:167 #: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:443 #: templates/js/translated/build.js:235 templates/js/translated/build.js:435 #: templates/js/translated/build.js:629 templates/js/translated/build.js:639 @@ -647,7 +648,7 @@ msgstr "" #: build/templates/build/index.html:8 build/templates/build/index.html:12 #: order/templates/order/sales_order_detail.html:42 #: order/templates/order/so_sidebar.html:7 -#: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:221 +#: part/templates/part/part_sidebar.html:20 templates/InvenTree/index.html:221 #: templates/InvenTree/search.html:145 #: templates/InvenTree/settings/sidebar.html:42 users/models.py:44 msgid "Build Orders" @@ -671,7 +672,7 @@ msgstr "" msgid "Brief description of the build" msgstr "" -#: build/models.py:219 build/templates/build/build_base.html:156 +#: build/models.py:219 build/templates/build/build_base.html:164 #: build/templates/build/detail.html:88 msgid "Parent Build" msgstr "" @@ -680,7 +681,7 @@ msgstr "" msgid "BuildOrder to which this build is allocated" msgstr "" -#: build/models.py:225 build/templates/build/build_base.html:119 +#: build/models.py:225 build/templates/build/build_base.html:77 #: build/templates/build/detail.html:30 company/models.py:705 #: order/models.py:789 order/models.py:860 #: order/templates/order/order_wizard/select_parts.html:32 part/models.py:357 @@ -752,7 +753,7 @@ msgstr "" msgid "Number of stock items which have been completed" msgstr "" -#: build/models.py:277 part/templates/part/part_base.html:216 +#: build/models.py:277 part/templates/part/part_base.html:234 msgid "Build Status" msgstr "" @@ -769,7 +770,7 @@ msgid "Batch code for this build output" msgstr "" #: build/models.py:292 order/models.py:165 part/models.py:936 -#: part/templates/part/detail.html:86 templates/js/translated/order.js:1104 +#: part/templates/part/part_base.html:313 templates/js/translated/order.js:1104 msgid "Creation Date" msgstr "" @@ -798,10 +799,10 @@ msgstr "" msgid "User who issued this build order" msgstr "" -#: build/models.py:323 build/templates/build/build_base.html:177 +#: build/models.py:323 build/templates/build/build_base.html:185 #: build/templates/build/detail.html:116 order/models.py:179 -#: order/templates/order/order_base.html:154 -#: order/templates/order/sales_order_base.html:161 part/models.py:940 +#: order/templates/order/order_base.html:158 +#: order/templates/order/sales_order_base.html:162 part/models.py:940 #: report/templates/report/inventree_build_order_base.html:159 #: templates/js/translated/build.js:1680 templates/js/translated/order.js:700 msgid "Responsible" @@ -812,10 +813,10 @@ msgid "User responsible for this build order" msgstr "" #: build/models.py:329 build/templates/build/detail.html:102 -#: company/templates/company/manufacturer_part.html:87 -#: company/templates/company/supplier_part.html:88 -#: part/templates/part/detail.html:80 stock/models.py:538 -#: stock/templates/stock/item_base.html:346 +#: company/templates/company/manufacturer_part.html:102 +#: company/templates/company/supplier_part.html:126 +#: part/templates/part/part_base.html:347 stock/models.py:538 +#: stock/templates/stock/item_base.html:367 msgid "External Link" msgstr "" @@ -825,7 +826,7 @@ msgstr "" #: order/models.py:183 order/models.py:738 #: order/templates/order/po_sidebar.html:11 #: order/templates/order/so_sidebar.html:11 part/models.py:925 -#: part/templates/part/detail.html:223 part/templates/part/part_sidebar.html:52 +#: part/templates/part/detail.html:116 part/templates/part/part_sidebar.html:50 #: report/templates/report/inventree_build_order_base.html:173 #: stock/forms.py:154 stock/forms.py:204 stock/forms.py:238 stock/models.py:610 #: stock/models.py:1774 stock/models.py:1880 stock/serializers.py:325 @@ -878,7 +879,7 @@ msgstr "" msgid "Selected stock item not found in BOM" msgstr "" -#: build/models.py:1253 stock/templates/stock/item_base.html:318 +#: build/models.py:1253 stock/templates/stock/item_base.html:339 #: templates/InvenTree/search.html:143 templates/js/translated/build.js:1599 #: templates/navbar.html:33 msgid "Build" @@ -891,7 +892,7 @@ msgstr "" #: build/models.py:1270 build/serializers.py:328 #: stock/templates/stock/item_base.html:8 #: stock/templates/stock/item_base.html:16 -#: stock/templates/stock/item_base.html:340 +#: stock/templates/stock/item_base.html:361 #: templates/js/translated/build.js:408 templates/js/translated/build.js:413 #: templates/js/translated/build.js:1361 templates/js/translated/build.js:1742 #: templates/js/translated/order.js:1178 templates/js/translated/order.js:1183 @@ -937,7 +938,7 @@ msgstr "" #: build/serializers.py:190 order/serializers.py:219 order/serializers.py:287 #: stock/forms.py:236 stock/serializers.py:318 stock/serializers.py:685 -#: stock/templates/stock/item_base.html:286 +#: stock/templates/stock/item_base.html:307 #: templates/js/translated/barcode.js:384 #: templates/js/translated/barcode.js:557 templates/js/translated/build.js:420 #: templates/js/translated/build.js:1027 templates/js/translated/order.js:348 @@ -952,9 +953,9 @@ msgstr "" msgid "Location for completed build outputs" msgstr "" -#: build/serializers.py:197 build/templates/build/build_base.html:129 +#: build/serializers.py:197 build/templates/build/build_base.html:137 #: build/templates/build/detail.html:63 order/models.py:572 -#: order/serializers.py:240 stock/templates/stock/item_base.html:409 +#: order/serializers.py:240 stock/templates/stock/item_base.html:173 #: templates/js/translated/barcode.js:140 templates/js/translated/build.js:1655 #: templates/js/translated/order.js:431 templates/js/translated/order.js:677 #: templates/js/translated/order.js:1096 templates/js/translated/stock.js:1226 @@ -1032,7 +1033,7 @@ msgid "Edit Build" msgstr "" #: build/templates/build/build_base.html:56 -#: build/templates/build/build_base.html:207 build/views.py:56 +#: build/templates/build/build_base.html:215 build/views.py:56 msgid "Cancel Build" msgstr "" @@ -1042,93 +1043,95 @@ msgstr "" #: build/templates/build/build_base.html:64 #: build/templates/build/build_base.html:65 -#: build/templates/build/build_base.html:223 +#: build/templates/build/build_base.html:231 msgid "Complete Build" msgstr "" -#: build/templates/build/build_base.html:79 +#: build/templates/build/build_base.html:82 +msgid "Build Description" +msgstr "" + +#: build/templates/build/build_base.html:91 #, python-format msgid "This Build Order is allocated to Sales Order %(link)s" msgstr "" -#: build/templates/build/build_base.html:86 +#: build/templates/build/build_base.html:98 #, python-format msgid "This Build Order is a child of Build Order %(link)s" msgstr "" -#: build/templates/build/build_base.html:93 +#: build/templates/build/build_base.html:105 msgid "Build Order is ready to mark as completed" msgstr "" -#: build/templates/build/build_base.html:98 +#: build/templates/build/build_base.html:110 msgid "Build Order cannot be completed as outstanding outputs remain" msgstr "" -#: build/templates/build/build_base.html:103 +#: build/templates/build/build_base.html:115 msgid "Required build quantity has not yet been completed" msgstr "" -#: build/templates/build/build_base.html:108 +#: build/templates/build/build_base.html:120 msgid "Stock has not been fully allocated to this Build Order" msgstr "" -#: build/templates/build/build_base.html:138 +#: build/templates/build/build_base.html:146 #: build/templates/build/detail.html:132 -#: order/templates/order/order_base.html:140 -#: order/templates/order/sales_order_base.html:140 +#: order/templates/order/order_base.html:144 +#: order/templates/order/sales_order_base.html:141 #: report/templates/report/inventree_build_order_base.html:126 #: templates/js/translated/build.js:1692 templates/js/translated/order.js:690 #: templates/js/translated/order.js:1109 msgid "Target Date" msgstr "" -#: build/templates/build/build_base.html:143 +#: build/templates/build/build_base.html:151 #, python-format msgid "This build was due on %(target)s" msgstr "" -#: build/templates/build/build_base.html:143 -#: build/templates/build/build_base.html:188 -#: order/templates/order/order_base.html:81 -#: order/templates/order/order_base.html:102 -#: order/templates/order/sales_order_base.html:78 -#: order/templates/order/sales_order_base.html:107 +#: build/templates/build/build_base.html:151 +#: build/templates/build/build_base.html:196 +#: order/templates/order/order_base.html:98 +#: order/templates/order/sales_order_base.html:93 #: templates/js/translated/table_filters.js:294 #: templates/js/translated/table_filters.js:322 #: templates/js/translated/table_filters.js:339 msgid "Overdue" msgstr "" -#: build/templates/build/build_base.html:150 +#: build/templates/build/build_base.html:158 #: build/templates/build/detail.html:68 build/templates/build/detail.html:143 #: templates/js/translated/build.js:1641 #: templates/js/translated/table_filters.js:304 msgid "Completed" msgstr "" -#: build/templates/build/build_base.html:163 +#: build/templates/build/build_base.html:171 #: build/templates/build/detail.html:95 order/models.py:857 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: order/templates/order/sales_order_ship.html:25 #: report/templates/report/inventree_build_order_base.html:136 #: report/templates/report/inventree_so_report.html:77 -#: stock/templates/stock/item_base.html:280 +#: stock/templates/stock/item_base.html:301 #: templates/js/translated/order.js:1051 msgid "Sales Order" msgstr "" -#: build/templates/build/build_base.html:170 +#: build/templates/build/build_base.html:178 #: build/templates/build/detail.html:109 #: report/templates/report/inventree_build_order_base.html:153 msgid "Issued By" msgstr "" -#: build/templates/build/build_base.html:215 +#: build/templates/build/build_base.html:223 msgid "Incomplete Outputs" msgstr "" -#: build/templates/build/build_base.html:216 +#: build/templates/build/build_base.html:224 msgid "Build Order cannot be completed as incomplete build outputs remain" msgstr "" @@ -1202,7 +1205,7 @@ msgid "Allocated Parts" msgstr "" #: build/templates/build/detail.html:81 -#: stock/templates/stock/item_base.html:304 +#: stock/templates/stock/item_base.html:325 #: templates/js/translated/stock.js:1240 templates/js/translated/stock.js:2194 #: templates/js/translated/table_filters.js:151 #: templates/js/translated/table_filters.js:233 @@ -1210,8 +1213,8 @@ msgid "Batch" msgstr "" #: build/templates/build/detail.html:127 -#: order/templates/order/order_base.html:127 -#: order/templates/order/sales_order_base.html:134 +#: order/templates/order/order_base.html:131 +#: order/templates/order/sales_order_base.html:135 #: templates/js/translated/build.js:1663 msgid "Created" msgstr "" @@ -1255,7 +1258,7 @@ msgstr "" #: build/templates/build/detail.html:185 #: company/templates/company/detail.html:38 #: company/templates/company/detail.html:85 order/views.py:509 -#: part/templates/part/category.html:166 +#: part/templates/part/category.html:173 msgid "Order Parts" msgstr "" @@ -1307,8 +1310,8 @@ msgstr "" #: order/templates/order/po_sidebar.html:9 #: order/templates/order/purchase_order_detail.html:60 #: order/templates/order/sales_order_detail.html:52 -#: order/templates/order/so_sidebar.html:9 part/templates/part/detail.html:300 -#: part/templates/part/part_sidebar.html:50 stock/templates/stock/item.html:95 +#: order/templates/order/so_sidebar.html:9 part/templates/part/detail.html:193 +#: part/templates/part/part_sidebar.html:48 stock/templates/stock/item.html:95 #: stock/templates/stock/stock_sidebar.html:19 msgid "Attachments" msgstr "" @@ -1324,7 +1327,7 @@ msgstr "" #: order/templates/order/purchase_order_detail.html:108 #: order/templates/order/sales_order_detail.html:72 #: order/templates/order/sales_order_detail.html:99 -#: part/templates/part/detail.html:227 stock/templates/stock/item.html:115 +#: part/templates/part/detail.html:120 stock/templates/stock/item.html:115 #: stock/templates/stock/item.html:205 msgid "Edit Notes" msgstr "" @@ -1337,7 +1340,7 @@ msgstr "" msgid "All untracked stock items have been allocated" msgstr "" -#: build/templates/build/index.html:18 part/templates/part/detail.html:407 +#: build/templates/build/index.html:18 part/templates/part/detail.html:300 msgid "New Build Order" msgstr "" @@ -1676,7 +1679,7 @@ msgid "Parts are trackable by default" msgstr "" #: common/models.py:745 part/models.py:920 -#: part/templates/part/part_base.html:144 +#: part/templates/part/part_base.html:147 #: templates/js/translated/table_filters.js:42 msgid "Virtual" msgstr "" @@ -2207,7 +2210,7 @@ msgstr "" msgid "Description of the company" msgstr "" -#: company/models.py:112 company/templates/company/company_base.html:70 +#: company/models.py:112 company/templates/company/company_base.html:97 #: templates/js/translated/company.js:349 msgid "Website" msgstr "" @@ -2216,7 +2219,7 @@ msgstr "" msgid "Company website URL" msgstr "" -#: company/models.py:117 company/templates/company/company_base.html:88 +#: company/models.py:117 company/templates/company/company_base.html:115 msgid "Address" msgstr "" @@ -2232,7 +2235,7 @@ msgstr "" msgid "Contact phone number" msgstr "" -#: company/models.py:125 company/templates/company/company_base.html:102 +#: company/models.py:125 company/templates/company/company_base.html:129 #: templates/InvenTree/settings/user.html:47 msgid "Email" msgstr "" @@ -2241,7 +2244,7 @@ msgstr "" msgid "Contact email address" msgstr "" -#: company/models.py:128 company/templates/company/company_base.html:109 +#: company/models.py:128 company/templates/company/company_base.html:136 msgid "Contact" msgstr "" @@ -2282,7 +2285,7 @@ msgid "Does this company manufacture parts?" msgstr "" #: company/models.py:152 company/serializers.py:270 -#: company/templates/company/company_base.html:76 stock/serializers.py:172 +#: company/templates/company/company_base.html:103 stock/serializers.py:172 msgid "Currency" msgstr "" @@ -2291,7 +2294,7 @@ msgid "Default currency used for this company" msgstr "" #: company/models.py:320 company/models.py:535 stock/models.py:484 -#: stock/templates/stock/item_base.html:224 +#: stock/templates/stock/item_base.html:135 msgid "Base Part" msgstr "" @@ -2299,10 +2302,10 @@ msgstr "" msgid "Select part" msgstr "" -#: company/models.py:335 company/templates/company/company_base.html:116 -#: company/templates/company/manufacturer_part.html:93 -#: company/templates/company/supplier_part.html:104 -#: stock/templates/stock/item_base.html:353 +#: company/models.py:335 company/templates/company/company_base.html:73 +#: company/templates/company/manufacturer_part.html:91 +#: company/templates/company/supplier_part.html:97 +#: stock/templates/stock/item_base.html:374 #: templates/js/translated/company.js:333 #: templates/js/translated/company.js:514 #: templates/js/translated/company.js:797 templates/js/translated/part.js:229 @@ -2313,8 +2316,8 @@ msgstr "" msgid "Select manufacturer" msgstr "" -#: company/models.py:342 company/templates/company/manufacturer_part.html:97 -#: company/templates/company/supplier_part.html:112 +#: company/models.py:342 company/templates/company/manufacturer_part.html:96 +#: company/templates/company/supplier_part.html:105 #: templates/js/translated/company.js:530 #: templates/js/translated/company.js:815 templates/js/translated/order.js:874 #: templates/js/translated/part.js:240 @@ -2336,7 +2339,7 @@ msgstr "" #: company/models.py:409 company/models.py:558 #: company/templates/company/manufacturer_part.html:6 #: company/templates/company/manufacturer_part.html:23 -#: stock/templates/stock/item_base.html:363 +#: stock/templates/stock/item_base.html:384 msgid "Manufacturer Part" msgstr "" @@ -2356,7 +2359,7 @@ msgid "Parameter value" msgstr "" #: company/models.py:429 part/models.py:882 part/models.py:2397 -#: part/templates/part/detail.html:59 +#: part/templates/part/part_base.html:288 #: templates/InvenTree/settings/settings.html:264 #: templates/js/translated/company.js:650 templates/js/translated/part.js:651 msgid "Units" @@ -2370,11 +2373,11 @@ msgstr "" msgid "Linked manufacturer part must reference the same base part" msgstr "" -#: company/models.py:545 company/templates/company/company_base.html:121 -#: company/templates/company/supplier_part.html:94 order/models.py:263 -#: order/templates/order/order_base.html:108 +#: company/models.py:545 company/templates/company/company_base.html:78 +#: company/templates/company/supplier_part.html:87 order/models.py:263 +#: order/templates/order/order_base.html:112 #: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:219 -#: part/bom.py:247 stock/templates/stock/item_base.html:370 +#: part/bom.py:247 stock/templates/stock/item_base.html:391 #: templates/js/translated/company.js:337 #: templates/js/translated/company.js:771 templates/js/translated/order.js:660 #: templates/js/translated/part.js:210 @@ -2385,7 +2388,7 @@ msgstr "" msgid "Select supplier" msgstr "" -#: company/models.py:551 company/templates/company/supplier_part.html:98 +#: company/models.py:551 company/templates/company/supplier_part.html:91 #: part/bom.py:220 part/bom.py:248 templates/js/translated/order.js:861 #: templates/js/translated/part.js:221 msgid "SKU" @@ -2407,7 +2410,7 @@ msgstr "" msgid "Supplier part description" msgstr "" -#: company/models.py:576 company/templates/company/supplier_part.html:126 +#: company/models.py:576 company/templates/company/supplier_part.html:119 #: part/models.py:2588 report/templates/report/inventree_po_report.html:93 #: report/templates/report/inventree_so_report.html:93 msgid "Note" @@ -2421,8 +2424,8 @@ msgstr "" msgid "Minimum charge (e.g. stocking fee)" msgstr "" -#: company/models.py:582 company/templates/company/supplier_part.html:119 -#: stock/models.py:507 stock/templates/stock/item_base.html:311 +#: company/models.py:582 company/templates/company/supplier_part.html:112 +#: stock/models.py:507 stock/templates/stock/item_base.html:332 #: templates/js/translated/company.js:847 templates/js/translated/stock.js:1366 msgid "Packaging" msgstr "" @@ -2458,43 +2461,56 @@ msgstr "" msgid "Create Purchase Order" msgstr "" -#: company/templates/company/company_base.html:27 +#: company/templates/company/company_base.html:26 +msgid "Company actions" +msgstr "" + +#: company/templates/company/company_base.html:31 msgid "Edit company information" msgstr "" #: company/templates/company/company_base.html:32 -#: company/templates/company/company_base.html:148 +#: templates/js/translated/company.js:265 +msgid "Edit Company" +msgstr "" + +#: company/templates/company/company_base.html:36 +msgid "Delete company" +msgstr "" + +#: company/templates/company/company_base.html:37 +#: company/templates/company/company_base.html:159 msgid "Delete Company" msgstr "" -#: company/templates/company/company_base.html:48 +#: company/templates/company/company_base.html:53 #: part/templates/part/part_thumb.html:12 msgid "Upload new image" msgstr "" -#: company/templates/company/company_base.html:51 +#: company/templates/company/company_base.html:56 #: part/templates/part/part_thumb.html:14 msgid "Download image from URL" msgstr "" -#: company/templates/company/company_base.html:81 -msgid "Uses default currency" -msgstr "" - -#: company/templates/company/company_base.html:95 -msgid "Phone" -msgstr "" - -#: company/templates/company/company_base.html:126 order/models.py:567 -#: order/templates/order/sales_order_base.html:114 stock/models.py:525 -#: stock/models.py:526 stock/templates/stock/item_base.html:263 +#: company/templates/company/company_base.html:83 order/models.py:567 +#: order/templates/order/sales_order_base.html:115 stock/models.py:525 +#: stock/models.py:526 stock/templates/stock/item_base.html:284 #: templates/js/translated/company.js:329 templates/js/translated/order.js:1073 #: templates/js/translated/stock.js:2002 msgid "Customer" msgstr "" -#: company/templates/company/company_base.html:194 -#: part/templates/part/part_base.html:342 +#: company/templates/company/company_base.html:108 +msgid "Uses default currency" +msgstr "" + +#: company/templates/company/company_base.html:122 +msgid "Phone" +msgstr "" + +#: company/templates/company/company_base.html:205 +#: part/templates/part/part_base.html:464 msgid "Upload Image" msgstr "" @@ -2510,23 +2526,23 @@ msgid "Create new supplier part" msgstr "" #: company/templates/company/detail.html:20 -#: company/templates/company/manufacturer_part.html:112 -#: part/templates/part/detail.html:440 +#: company/templates/company/manufacturer_part.html:118 +#: part/templates/part/detail.html:333 msgid "New Supplier Part" msgstr "" #: company/templates/company/detail.html:32 #: company/templates/company/detail.html:79 -#: company/templates/company/manufacturer_part.html:121 -#: company/templates/company/manufacturer_part.html:150 -#: part/templates/part/category.html:160 part/templates/part/detail.html:449 -#: part/templates/part/detail.html:477 +#: company/templates/company/manufacturer_part.html:127 +#: company/templates/company/manufacturer_part.html:156 +#: part/templates/part/category.html:167 part/templates/part/detail.html:342 +#: part/templates/part/detail.html:370 msgid "Options" msgstr "" #: company/templates/company/detail.html:37 #: company/templates/company/detail.html:84 -#: part/templates/part/category.html:166 +#: part/templates/part/category.html:173 msgid "Order parts" msgstr "" @@ -2548,7 +2564,7 @@ msgstr "" msgid "Create new manufacturer part" msgstr "" -#: company/templates/company/detail.html:67 part/templates/part/detail.html:467 +#: company/templates/company/detail.html:67 part/templates/part/detail.html:360 msgid "New Manufacturer Part" msgstr "" @@ -2562,7 +2578,7 @@ msgstr "" #: order/templates/order/order_base.html:13 #: order/templates/order/purchase_orders.html:8 #: order/templates/order/purchase_orders.html:12 -#: part/templates/part/detail.html:171 part/templates/part/part_sidebar.html:35 +#: part/templates/part/detail.html:64 part/templates/part/part_sidebar.html:33 #: templates/InvenTree/index.html:252 templates/InvenTree/search.html:203 #: templates/InvenTree/settings/sidebar.html:44 templates/navbar.html:45 #: users/models.py:45 @@ -2584,7 +2600,7 @@ msgstr "" #: order/templates/order/sales_order_base.html:13 #: order/templates/order/sales_orders.html:8 #: order/templates/order/sales_orders.html:15 -#: part/templates/part/detail.html:194 part/templates/part/part_sidebar.html:39 +#: part/templates/part/detail.html:87 part/templates/part/part_sidebar.html:37 #: templates/InvenTree/index.html:283 templates/InvenTree/search.html:223 #: templates/InvenTree/settings/sidebar.html:46 templates/navbar.html:56 #: users/models.py:46 @@ -2611,14 +2627,14 @@ msgid "Company Notes" msgstr "" #: company/templates/company/detail.html:383 -#: company/templates/company/manufacturer_part.html:209 -#: part/templates/part/detail.html:520 +#: company/templates/company/manufacturer_part.html:215 +#: part/templates/part/detail.html:413 msgid "Delete Supplier Parts?" msgstr "" #: company/templates/company/detail.html:384 -#: company/templates/company/manufacturer_part.html:210 -#: part/templates/part/detail.html:521 +#: company/templates/company/manufacturer_part.html:216 +#: part/templates/part/detail.html:414 msgid "All selected supplier parts will be deleted" msgstr "" @@ -2635,7 +2651,7 @@ msgstr "" #: company/templates/company/manufacturer_part.html:35 #: company/templates/company/supplier_part.html:34 #: company/templates/company/supplier_part.html:159 -#: part/templates/part/detail.html:174 part/templates/part/part_base.html:76 +#: part/templates/part/detail.html:67 part/templates/part/part_base.html:76 msgid "Order part" msgstr "" @@ -2649,60 +2665,60 @@ msgstr "" msgid "Delete manufacturer part" msgstr "" -#: company/templates/company/manufacturer_part.html:70 -#: company/templates/company/supplier_part.html:71 +#: company/templates/company/manufacturer_part.html:66 +#: company/templates/company/supplier_part.html:63 msgid "Internal Part" msgstr "" -#: company/templates/company/manufacturer_part.html:108 +#: company/templates/company/manufacturer_part.html:114 #: company/templates/company/supplier_part.html:15 company/views.py:49 -#: part/templates/part/part_sidebar.html:33 part/templates/part/prices.html:163 +#: part/templates/part/part_sidebar.html:31 part/templates/part/prices.html:163 #: templates/InvenTree/search.html:194 templates/navbar.html:43 msgid "Suppliers" msgstr "" -#: company/templates/company/manufacturer_part.html:123 -#: part/templates/part/detail.html:451 +#: company/templates/company/manufacturer_part.html:129 +#: part/templates/part/detail.html:344 msgid "Delete supplier parts" msgstr "" -#: company/templates/company/manufacturer_part.html:123 -#: company/templates/company/manufacturer_part.html:152 -#: company/templates/company/manufacturer_part.html:248 -#: part/templates/part/detail.html:451 part/templates/part/detail.html:479 +#: company/templates/company/manufacturer_part.html:129 +#: company/templates/company/manufacturer_part.html:158 +#: company/templates/company/manufacturer_part.html:254 +#: part/templates/part/detail.html:344 part/templates/part/detail.html:372 #: templates/js/translated/company.js:425 templates/js/translated/helpers.js:31 #: users/models.py:204 msgid "Delete" msgstr "" -#: company/templates/company/manufacturer_part.html:137 +#: company/templates/company/manufacturer_part.html:143 #: company/templates/company/manufacturer_part_sidebar.html:5 #: part/templates/part/category_sidebar.html:17 -#: part/templates/part/detail.html:277 part/templates/part/part_sidebar.html:10 +#: part/templates/part/detail.html:170 part/templates/part/part_sidebar.html:8 msgid "Parameters" msgstr "" -#: company/templates/company/manufacturer_part.html:141 -#: part/templates/part/detail.html:282 +#: company/templates/company/manufacturer_part.html:147 +#: part/templates/part/detail.html:175 #: templates/InvenTree/settings/category.html:12 #: templates/InvenTree/settings/part.html:65 msgid "New Parameter" msgstr "" -#: company/templates/company/manufacturer_part.html:152 +#: company/templates/company/manufacturer_part.html:158 msgid "Delete parameters" msgstr "" -#: company/templates/company/manufacturer_part.html:185 -#: part/templates/part/detail.html:976 +#: company/templates/company/manufacturer_part.html:191 +#: part/templates/part/detail.html:869 msgid "Add Parameter" msgstr "" -#: company/templates/company/manufacturer_part.html:233 +#: company/templates/company/manufacturer_part.html:239 msgid "Selected parameters will be deleted" msgstr "" -#: company/templates/company/manufacturer_part.html:245 +#: company/templates/company/manufacturer_part.html:251 msgid "Delete Parameters" msgstr "" @@ -2724,7 +2740,7 @@ msgstr "" #: company/templates/company/supplier_part.html:7 #: company/templates/company/supplier_part.html:24 stock/models.py:492 -#: stock/templates/stock/item_base.html:375 +#: stock/templates/stock/item_base.html:396 #: templates/js/translated/company.js:787 templates/js/translated/stock.js:1323 msgid "Supplier Part" msgstr "" @@ -2745,12 +2761,12 @@ msgid "Supplier Part Stock" msgstr "" #: company/templates/company/supplier_part.html:141 -#: part/templates/part/detail.html:127 stock/templates/stock/location.html:147 +#: part/templates/part/detail.html:20 stock/templates/stock/location.html:162 msgid "Create new stock item" msgstr "" #: company/templates/company/supplier_part.html:142 -#: part/templates/part/detail.html:128 stock/templates/stock/location.html:148 +#: part/templates/part/detail.html:21 stock/templates/stock/location.html:163 #: templates/js/translated/stock.js:354 msgid "New Stock Item" msgstr "" @@ -2761,7 +2777,7 @@ msgid "Supplier Part Orders" msgstr "" #: company/templates/company/supplier_part.html:160 -#: part/templates/part/detail.html:175 +#: part/templates/part/detail.html:68 msgid "Order Part" msgstr "" @@ -2797,7 +2813,7 @@ msgid "Delete price break" msgstr "" #: company/templates/company/supplier_part_navbar.html:15 -#: part/templates/part/part_sidebar.html:16 +#: part/templates/part/part_sidebar.html:14 #: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:14 #: stock/templates/stock/stock_app_base.html:10 #: templates/InvenTree/search.html:156 @@ -2819,14 +2835,14 @@ msgid "Supplier Part Pricing" msgstr "" #: company/templates/company/supplier_part_navbar.html:29 -#: part/templates/part/part_sidebar.html:30 +#: part/templates/part/part_sidebar.html:28 msgid "Pricing" msgstr "" #: company/templates/company/supplier_part_sidebar.html:5 -#: stock/templates/stock/location.html:118 -#: stock/templates/stock/location.html:132 -#: stock/templates/stock/location.html:144 +#: stock/templates/stock/location.html:133 +#: stock/templates/stock/location.html:147 +#: stock/templates/stock/location.html:159 #: stock/templates/stock/location_sidebar.html:7 #: templates/InvenTree/search.html:158 templates/js/translated/stock.js:1901 #: templates/stats.html:93 templates/stats.html:102 users/models.py:43 @@ -2948,7 +2964,7 @@ msgstr "" msgid "Place order" msgstr "" -#: order/forms.py:37 order/templates/order/order_base.html:59 +#: order/forms.py:37 order/templates/order/order_base.html:60 msgid "Mark order as complete" msgstr "" @@ -3001,7 +3017,7 @@ msgstr "" msgid "Company from which the items are being ordered" msgstr "" -#: order/models.py:267 order/templates/order/order_base.html:114 +#: order/models.py:267 order/templates/order/order_base.html:118 #: templates/js/translated/order.js:669 msgid "Supplier Reference" msgstr "" @@ -3094,7 +3110,7 @@ msgstr "" #: order/models.py:769 order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_po_report.html:77 -#: stock/templates/stock/item_base.html:325 +#: stock/templates/stock/item_base.html:346 #: templates/js/translated/order.js:638 templates/js/translated/stock.js:1300 #: templates/js/translated/stock.js:1983 msgid "Purchase Order" @@ -3104,8 +3120,8 @@ msgstr "" msgid "Supplier part" msgstr "" -#: order/models.py:797 order/templates/order/order_base.html:147 -#: order/templates/order/sales_order_base.html:154 +#: order/models.py:797 order/templates/order/order_base.html:151 +#: order/templates/order/sales_order_base.html:155 #: templates/js/translated/order.js:429 templates/js/translated/order.js:954 msgid "Received" msgstr "" @@ -3115,7 +3131,7 @@ msgid "Number of items received" msgstr "" #: order/models.py:805 part/templates/part/prices.html:176 stock/models.py:619 -#: stock/serializers.py:163 stock/templates/stock/item_base.html:332 +#: stock/serializers.py:163 stock/templates/stock/item_base.html:353 #: templates/js/translated/stock.js:1354 msgid "Purchase Price" msgstr "" @@ -3249,22 +3265,36 @@ msgstr "" msgid "Receive items" msgstr "" -#: order/templates/order/order_base.html:93 -#: order/templates/order/sales_order_base.html:98 +#: order/templates/order/order_base.html:58 +#: order/templates/order/purchase_order_detail.html:31 +msgid "Receive Items" +msgstr "" + +#: order/templates/order/order_base.html:62 order/views.py:185 +msgid "Complete Order" +msgstr "" + +#: order/templates/order/order_base.html:84 +#: order/templates/order/sales_order_base.html:79 msgid "Order Reference" msgstr "" -#: order/templates/order/order_base.html:98 -#: order/templates/order/sales_order_base.html:103 +#: order/templates/order/order_base.html:89 +#: order/templates/order/sales_order_base.html:84 +msgid "Order Description" +msgstr "" + +#: order/templates/order/order_base.html:94 +#: order/templates/order/sales_order_base.html:89 msgid "Order Status" msgstr "" -#: order/templates/order/order_base.html:133 +#: order/templates/order/order_base.html:137 #: report/templates/report/inventree_build_order_base.html:122 msgid "Issued" msgstr "" -#: order/templates/order/order_base.html:203 +#: order/templates/order/order_base.html:207 msgid "Edit Purchase Order" msgstr "" @@ -3466,10 +3496,6 @@ msgstr "" msgid "Receive selected items" msgstr "" -#: order/templates/order/purchase_order_detail.html:31 -msgid "Receive Items" -msgstr "" - #: order/templates/order/purchase_order_detail.html:50 msgid "Received Items" msgstr "" @@ -3497,16 +3523,16 @@ msgstr "" msgid "Ship Order" msgstr "" -#: order/templates/order/sales_order_base.html:86 +#: order/templates/order/sales_order_base.html:102 msgid "This Sales Order has not been fully allocated" msgstr "" -#: order/templates/order/sales_order_base.html:121 +#: order/templates/order/sales_order_base.html:122 #: templates/js/translated/order.js:1086 msgid "Customer Reference" msgstr "" -#: order/templates/order/sales_order_base.html:194 +#: order/templates/order/sales_order_base.html:195 msgid "Edit Sales Order" msgstr "" @@ -3577,10 +3603,6 @@ msgstr "" msgid "Purchase order issued" msgstr "" -#: order/views.py:185 -msgid "Complete Order" -msgstr "" - #: order/views.py:201 msgid "Confirm order completion" msgstr "" @@ -3673,11 +3695,11 @@ msgid "This field is required" msgstr "" #: part/bom.py:125 part/models.py:81 part/models.py:816 -#: part/templates/part/category.html:90 part/templates/part/detail.html:104 +#: part/templates/part/category.html:104 part/templates/part/part_base.html:331 msgid "Default Location" msgstr "" -#: part/bom.py:126 part/templates/part/part_base.html:167 +#: part/bom.py:126 part/templates/part/part_base.html:185 msgid "Available Stock" msgstr "" @@ -3794,15 +3816,15 @@ msgstr "" msgid "Part Category" msgstr "" -#: part/models.py:96 part/templates/part/category.html:117 +#: part/models.py:96 part/templates/part/category.html:124 #: templates/InvenTree/search.html:101 templates/stats.html:84 #: users/models.py:40 msgid "Part Categories" msgstr "" #: part/models.py:358 part/templates/part/cat_link.html:3 -#: part/templates/part/category.html:13 part/templates/part/category.html:122 -#: part/templates/part/category.html:142 +#: part/templates/part/category.html:13 part/templates/part/category.html:129 +#: part/templates/part/category.html:149 #: part/templates/part/category_sidebar.html:9 #: templates/InvenTree/index.html:85 templates/InvenTree/search.html:88 #: templates/InvenTree/settings/sidebar.html:36 @@ -3860,8 +3882,8 @@ msgstr "" msgid "Part description" msgstr "" -#: part/models.py:770 part/templates/part/category.html:97 -#: part/templates/part/detail.html:73 +#: part/models.py:770 part/templates/part/category.html:82 +#: part/templates/part/part_base.html:302 msgid "Keywords" msgstr "" @@ -3870,7 +3892,8 @@ msgid "Part keywords to improve visibility in search results" msgstr "" #: part/models.py:778 part/models.py:2223 part/models.py:2472 -#: part/templates/part/detail.html:36 part/templates/part/set_category.html:15 +#: part/templates/part/part_base.html:265 +#: part/templates/part/set_category.html:15 #: templates/InvenTree/settings/settings.html:163 #: templates/js/translated/part.js:1021 msgid "Category" @@ -3880,7 +3903,7 @@ msgstr "" msgid "Part category" msgstr "" -#: part/models.py:784 part/templates/part/detail.html:45 +#: part/models.py:784 part/templates/part/part_base.html:274 #: templates/js/translated/part.js:550 templates/js/translated/part.js:974 #: templates/js/translated/stock.js:1134 msgid "IPN" @@ -3894,8 +3917,8 @@ msgstr "" msgid "Part revision or version number" msgstr "" -#: part/models.py:792 part/templates/part/detail.html:52 report/models.py:200 -#: templates/js/translated/part.js:554 +#: part/models.py:792 part/templates/part/part_base.html:281 +#: report/models.py:200 templates/js/translated/part.js:554 msgid "Revision" msgstr "" @@ -3903,7 +3926,7 @@ msgstr "" msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:861 part/templates/part/detail.html:113 +#: part/models.py:861 part/templates/part/part_base.html:340 msgid "Default Supplier" msgstr "" @@ -3919,7 +3942,7 @@ msgstr "" msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:875 part/templates/part/part_base.html:178 +#: part/models.py:875 part/templates/part/part_base.html:196 msgid "Minimum Stock" msgstr "" @@ -4214,7 +4237,7 @@ msgstr "" msgid "The BOM for %(part)s has not been validated." msgstr "" -#: part/templates/part/bom.html:30 part/templates/part/detail.html:357 +#: part/templates/part/bom.html:30 part/templates/part/detail.html:250 msgid "BOM actions" msgstr "" @@ -4299,68 +4322,64 @@ msgstr "" msgid "New Category" msgstr "" -#: part/templates/part/category.html:67 -msgid "Top level part category" -msgstr "" - -#: part/templates/part/category.html:79 +#: part/templates/part/category.html:76 part/templates/part/category.html:89 msgid "Category Path" msgstr "" -#: part/templates/part/category.html:84 -msgid "Category Description" +#: part/templates/part/category.html:90 +msgid "Top level part category" msgstr "" -#: part/templates/part/category.html:103 part/templates/part/category.html:194 +#: part/templates/part/category.html:110 part/templates/part/category.html:201 #: part/templates/part/category_sidebar.html:7 msgid "Subcategories" msgstr "" -#: part/templates/part/category.html:108 +#: part/templates/part/category.html:115 msgid "Parts (Including subcategories)" msgstr "" -#: part/templates/part/category.html:145 +#: part/templates/part/category.html:152 msgid "Export Part Data" msgstr "" -#: part/templates/part/category.html:146 part/templates/part/category.html:170 +#: part/templates/part/category.html:153 part/templates/part/category.html:177 msgid "Export" msgstr "" -#: part/templates/part/category.html:149 +#: part/templates/part/category.html:156 msgid "Create new part" msgstr "" -#: part/templates/part/category.html:150 templates/js/translated/bom.js:40 +#: part/templates/part/category.html:157 templates/js/translated/bom.js:40 msgid "New Part" msgstr "" -#: part/templates/part/category.html:164 +#: part/templates/part/category.html:171 msgid "Set category" msgstr "" -#: part/templates/part/category.html:164 +#: part/templates/part/category.html:171 msgid "Set Category" msgstr "" -#: part/templates/part/category.html:168 +#: part/templates/part/category.html:175 msgid "Print Labels" msgstr "" -#: part/templates/part/category.html:170 +#: part/templates/part/category.html:177 msgid "Export Data" msgstr "" -#: part/templates/part/category.html:184 +#: part/templates/part/category.html:191 msgid "Part Parameters" msgstr "" -#: part/templates/part/category.html:261 +#: part/templates/part/category.html:268 msgid "Create Part Category" msgstr "" -#: part/templates/part/category.html:288 +#: part/templates/part/category.html:295 msgid "Create Part" msgstr "" @@ -4427,167 +4446,155 @@ msgstr "" msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)" msgstr "" -#: part/templates/part/detail.html:16 -msgid "Part Details" -msgstr "" - -#: part/templates/part/detail.html:66 -msgid "Minimum stock level" -msgstr "" - -#: part/templates/part/detail.html:97 -msgid "Latest Serial Number" -msgstr "" - -#: part/templates/part/detail.html:124 +#: part/templates/part/detail.html:17 msgid "Part Stock" msgstr "" -#: part/templates/part/detail.html:136 +#: part/templates/part/detail.html:29 #, python-format msgid "Showing stock for all variants of %(full_name)s" msgstr "" -#: part/templates/part/detail.html:146 +#: part/templates/part/detail.html:39 msgid "Part Test Templates" msgstr "" -#: part/templates/part/detail.html:151 +#: part/templates/part/detail.html:44 msgid "Add Test Template" msgstr "" -#: part/templates/part/detail.html:208 +#: part/templates/part/detail.html:101 msgid "Sales Order Allocations" msgstr "" -#: part/templates/part/detail.html:249 +#: part/templates/part/detail.html:142 msgid "Part Variants" msgstr "" -#: part/templates/part/detail.html:253 +#: part/templates/part/detail.html:146 msgid "Create new variant" msgstr "" -#: part/templates/part/detail.html:254 +#: part/templates/part/detail.html:147 msgid "New Variant" msgstr "" -#: part/templates/part/detail.html:281 +#: part/templates/part/detail.html:174 msgid "Add new parameter" msgstr "" -#: part/templates/part/detail.html:315 part/templates/part/part_sidebar.html:47 +#: part/templates/part/detail.html:208 part/templates/part/part_sidebar.html:45 msgid "Related Parts" msgstr "" -#: part/templates/part/detail.html:319 part/templates/part/detail.html:320 +#: part/templates/part/detail.html:212 part/templates/part/detail.html:213 msgid "Add Related" msgstr "" -#: part/templates/part/detail.html:340 part/templates/part/part_sidebar.html:19 +#: part/templates/part/detail.html:233 part/templates/part/part_sidebar.html:17 msgid "Bill of Materials" msgstr "" -#: part/templates/part/detail.html:345 +#: part/templates/part/detail.html:238 msgid "Export actions" msgstr "" -#: part/templates/part/detail.html:349 +#: part/templates/part/detail.html:242 msgid "Export BOM" msgstr "" -#: part/templates/part/detail.html:351 +#: part/templates/part/detail.html:244 msgid "Print BOM Report" msgstr "" -#: part/templates/part/detail.html:361 +#: part/templates/part/detail.html:254 msgid "Upload BOM" msgstr "" -#: part/templates/part/detail.html:363 templates/js/translated/part.js:267 +#: part/templates/part/detail.html:256 templates/js/translated/part.js:267 msgid "Copy BOM" msgstr "" -#: part/templates/part/detail.html:365 part/views.py:755 +#: part/templates/part/detail.html:258 part/views.py:755 msgid "Validate BOM" msgstr "" -#: part/templates/part/detail.html:370 +#: part/templates/part/detail.html:263 msgid "New BOM Item" msgstr "" -#: part/templates/part/detail.html:371 +#: part/templates/part/detail.html:264 msgid "Add BOM Item" msgstr "" -#: part/templates/part/detail.html:384 +#: part/templates/part/detail.html:277 msgid "Assemblies" msgstr "" -#: part/templates/part/detail.html:401 +#: part/templates/part/detail.html:294 msgid "Part Builds" msgstr "" -#: part/templates/part/detail.html:426 +#: part/templates/part/detail.html:319 msgid "Build Order Allocations" msgstr "" -#: part/templates/part/detail.html:436 +#: part/templates/part/detail.html:329 msgid "Part Suppliers" msgstr "" -#: part/templates/part/detail.html:463 +#: part/templates/part/detail.html:356 msgid "Part Manufacturers" msgstr "" -#: part/templates/part/detail.html:479 +#: part/templates/part/detail.html:372 msgid "Delete manufacturer parts" msgstr "" -#: part/templates/part/detail.html:660 +#: part/templates/part/detail.html:553 msgid "Delete selected BOM items?" msgstr "" -#: part/templates/part/detail.html:661 +#: part/templates/part/detail.html:554 msgid "All selected BOM items will be deleted" msgstr "" -#: part/templates/part/detail.html:712 +#: part/templates/part/detail.html:605 msgid "Create BOM Item" msgstr "" -#: part/templates/part/detail.html:764 +#: part/templates/part/detail.html:657 msgid "Related Part" msgstr "" -#: part/templates/part/detail.html:772 +#: part/templates/part/detail.html:665 msgid "Add Related Part" msgstr "" -#: part/templates/part/detail.html:869 +#: part/templates/part/detail.html:762 msgid "Add Test Result Template" msgstr "" -#: part/templates/part/detail.html:926 +#: part/templates/part/detail.html:819 msgid "Edit Part Notes" msgstr "" -#: part/templates/part/detail.html:1039 +#: part/templates/part/detail.html:932 #, python-format msgid "Purchase Unit Price - %(currency)s" msgstr "" -#: part/templates/part/detail.html:1051 +#: part/templates/part/detail.html:944 #, python-format msgid "Unit Price-Cost Difference - %(currency)s" msgstr "" -#: part/templates/part/detail.html:1063 +#: part/templates/part/detail.html:956 #, python-format msgid "Supplier Unit Cost - %(currency)s" msgstr "" -#: part/templates/part/detail.html:1152 +#: part/templates/part/detail.html:1045 #, python-format msgid "Unit Price - %(currency)s" msgstr "" @@ -4669,36 +4676,36 @@ msgstr "" msgid "Delete part" msgstr "" -#: part/templates/part/part_base.html:109 +#: part/templates/part/part_base.html:112 msgid "Part is a template part (variants can be made from this part)" msgstr "" -#: part/templates/part/part_base.html:113 +#: part/templates/part/part_base.html:116 msgid "Part can be assembled from other parts" msgstr "" -#: part/templates/part/part_base.html:117 +#: part/templates/part/part_base.html:120 msgid "Part can be used in assemblies" msgstr "" -#: part/templates/part/part_base.html:121 +#: part/templates/part/part_base.html:124 msgid "Part stock is tracked by serial number" msgstr "" -#: part/templates/part/part_base.html:125 +#: part/templates/part/part_base.html:128 msgid "Part can be purchased from external suppliers" msgstr "" -#: part/templates/part/part_base.html:129 +#: part/templates/part/part_base.html:132 msgid "Part can be sold to customers" msgstr "" -#: part/templates/part/part_base.html:135 -#: part/templates/part/part_base.html:143 +#: part/templates/part/part_base.html:138 +#: part/templates/part/part_base.html:146 msgid "Part is virtual (not a physical part)" msgstr "" -#: part/templates/part/part_base.html:136 +#: part/templates/part/part_base.html:139 #: templates/js/translated/company.js:505 #: templates/js/translated/company.js:762 #: templates/js/translated/model_renderers.js:175 @@ -4706,49 +4713,66 @@ msgstr "" msgid "Inactive" msgstr "" -#: part/templates/part/part_base.html:155 +#: part/templates/part/part_base.html:156 +#: part/templates/part/part_base.html:572 +msgid "Show Part Details" +msgstr "" + +#: part/templates/part/part_base.html:173 #, python-format msgid "This part is a variant of %(link)s" msgstr "" -#: part/templates/part/part_base.html:172 templates/js/translated/order.js:1546 +#: part/templates/part/part_base.html:190 templates/js/translated/order.js:1546 #: templates/js/translated/table_filters.js:188 msgid "In Stock" msgstr "" -#: part/templates/part/part_base.html:185 templates/js/translated/part.js:1054 +#: part/templates/part/part_base.html:203 templates/js/translated/part.js:1054 msgid "On Order" msgstr "" -#: part/templates/part/part_base.html:192 templates/InvenTree/index.html:178 +#: part/templates/part/part_base.html:210 templates/InvenTree/index.html:178 msgid "Required for Build Orders" msgstr "" -#: part/templates/part/part_base.html:199 +#: part/templates/part/part_base.html:217 msgid "Required for Sales Orders" msgstr "" -#: part/templates/part/part_base.html:206 +#: part/templates/part/part_base.html:224 msgid "Allocated to Orders" msgstr "" -#: part/templates/part/part_base.html:221 templates/js/translated/bom.js:566 +#: part/templates/part/part_base.html:239 templates/js/translated/bom.js:566 msgid "Can Build" msgstr "" -#: part/templates/part/part_base.html:227 templates/js/translated/part.js:885 +#: part/templates/part/part_base.html:245 templates/js/translated/part.js:885 #: templates/js/translated/part.js:1058 msgid "Building" msgstr "" -#: part/templates/part/part_base.html:320 part/templates/part/prices.html:144 +#: part/templates/part/part_base.html:295 +msgid "Minimum stock level" +msgstr "" + +#: part/templates/part/part_base.html:324 +msgid "Latest Serial Number" +msgstr "" + +#: part/templates/part/part_base.html:442 part/templates/part/prices.html:144 msgid "Calculate" msgstr "" -#: part/templates/part/part_base.html:363 +#: part/templates/part/part_base.html:485 msgid "No matching images found" msgstr "" +#: part/templates/part/part_base.html:566 +msgid "Hide Part Details" +msgstr "" + #: part/templates/part/part_pricing.html:22 part/templates/part/prices.html:21 msgid "Supplier Pricing" msgstr "" @@ -4806,20 +4830,15 @@ msgstr "" msgid "No pricing information is available for this part." msgstr "" -#: part/templates/part/part_sidebar.html:8 -#: templates/js/translated/stock.js:1949 -msgid "Details" -msgstr "" - -#: part/templates/part/part_sidebar.html:13 +#: part/templates/part/part_sidebar.html:11 msgid "Variants" msgstr "" -#: part/templates/part/part_sidebar.html:27 +#: part/templates/part/part_sidebar.html:25 msgid "Used In" msgstr "" -#: part/templates/part/part_sidebar.html:43 +#: part/templates/part/part_sidebar.html:41 msgid "Test Templates" msgstr "" @@ -5173,7 +5192,7 @@ msgid "Stock Item Test Report" msgstr "" #: report/templates/report/inventree_test_report_base.html:79 -#: stock/models.py:530 stock/templates/stock/item_base.html:238 +#: stock/models.py:530 stock/templates/stock/item_base.html:149 #: templates/js/translated/build.js:233 templates/js/translated/build.js:637 #: templates/js/translated/build.js:1013 #: templates/js/translated/model_renderers.js:95 @@ -5223,7 +5242,7 @@ msgid "Quantity is required" msgstr "" #: stock/forms.py:91 stock/forms.py:265 stock/models.py:587 -#: stock/templates/stock/item_base.html:382 +#: stock/templates/stock/item_base.html:179 #: templates/js/translated/stock.js:1276 msgid "Expiry Date" msgstr "" @@ -5273,7 +5292,7 @@ msgid "Confirm removal of installed stock items" msgstr "" #: stock/models.py:60 stock/models.py:624 -#: stock/templates/stock/item_base.html:422 +#: stock/templates/stock/item_base.html:410 msgid "Owner" msgstr "" @@ -5335,7 +5354,7 @@ msgstr "" msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:513 stock/templates/stock/item_base.html:271 +#: stock/models.py:513 stock/templates/stock/item_base.html:292 msgid "Installed In" msgstr "" @@ -5631,125 +5650,123 @@ msgstr "" msgid "Install" msgstr "" -#: stock/templates/stock/item_base.html:106 +#: stock/templates/stock/item_base.html:108 msgid "Convert to variant" msgstr "" -#: stock/templates/stock/item_base.html:109 +#: stock/templates/stock/item_base.html:111 msgid "Duplicate stock item" msgstr "" -#: stock/templates/stock/item_base.html:111 +#: stock/templates/stock/item_base.html:113 msgid "Edit stock item" msgstr "" -#: stock/templates/stock/item_base.html:114 +#: stock/templates/stock/item_base.html:116 msgid "Delete stock item" msgstr "" -#: stock/templates/stock/item_base.html:136 -#: stock/templates/stock/item_base.html:386 -#: templates/js/translated/table_filters.js:247 -msgid "Expired" -msgstr "" - -#: stock/templates/stock/item_base.html:146 -#: stock/templates/stock/item_base.html:388 -#: templates/js/translated/table_filters.js:253 -msgid "Stale" -msgstr "" - -#: stock/templates/stock/item_base.html:161 -msgid "You are not in the list of owners of this item. This stock item cannot be edited." -msgstr "" - -#: stock/templates/stock/item_base.html:168 -msgid "This stock item is in production and cannot be edited." -msgstr "" - -#: stock/templates/stock/item_base.html:169 -msgid "Edit the stock item from the build view." -msgstr "" - -#: stock/templates/stock/item_base.html:182 -msgid "This stock item has not passed all required tests" -msgstr "" - -#: stock/templates/stock/item_base.html:190 -#, python-format -msgid "This stock item is allocated to Sales Order %(link)s (Quantity: %(qty)s)" -msgstr "" - -#: stock/templates/stock/item_base.html:198 -#, python-format -msgid "This stock item is allocated to Build %(link)s (Quantity: %(qty)s)" -msgstr "" - -#: stock/templates/stock/item_base.html:204 -msgid "This stock item is serialized - it has a unique serial number and the quantity cannot be adjusted." -msgstr "" - -#: stock/templates/stock/item_base.html:208 -msgid "This stock item cannot be deleted as it has child items" -msgstr "" - -#: stock/templates/stock/item_base.html:212 -msgid "This stock item will be automatically deleted when all stock is depleted." -msgstr "" - -#: stock/templates/stock/item_base.html:241 +#: stock/templates/stock/item_base.html:152 msgid "previous page" msgstr "" -#: stock/templates/stock/item_base.html:247 +#: stock/templates/stock/item_base.html:158 msgid "next page" msgstr "" -#: stock/templates/stock/item_base.html:290 -#: templates/js/translated/build.js:1035 -msgid "No location set" -msgstr "" - -#: stock/templates/stock/item_base.html:297 -msgid "Barcode Identifier" -msgstr "" - -#: stock/templates/stock/item_base.html:339 -msgid "Parent Item" -msgstr "" - -#: stock/templates/stock/item_base.html:357 -msgid "No manufacturer set" -msgstr "" - -#: stock/templates/stock/item_base.html:386 +#: stock/templates/stock/item_base.html:183 #, python-format msgid "This StockItem expired on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:388 +#: stock/templates/stock/item_base.html:183 +#: templates/js/translated/table_filters.js:247 +msgid "Expired" +msgstr "" + +#: stock/templates/stock/item_base.html:185 #, python-format msgid "This StockItem expires on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:395 +#: stock/templates/stock/item_base.html:185 +#: templates/js/translated/table_filters.js:253 +msgid "Stale" +msgstr "" + +#: stock/templates/stock/item_base.html:192 #: templates/js/translated/stock.js:1289 msgid "Last Updated" msgstr "" -#: stock/templates/stock/item_base.html:400 +#: stock/templates/stock/item_base.html:197 msgid "Last Stocktake" msgstr "" -#: stock/templates/stock/item_base.html:404 +#: stock/templates/stock/item_base.html:201 msgid "No stocktake performed" msgstr "" -#: stock/templates/stock/item_base.html:415 +#: stock/templates/stock/item_base.html:219 +msgid "You are not in the list of owners of this item. This stock item cannot be edited." +msgstr "" + +#: stock/templates/stock/item_base.html:226 +msgid "This stock item is in production and cannot be edited." +msgstr "" + +#: stock/templates/stock/item_base.html:227 +msgid "Edit the stock item from the build view." +msgstr "" + +#: stock/templates/stock/item_base.html:240 +msgid "This stock item has not passed all required tests" +msgstr "" + +#: stock/templates/stock/item_base.html:248 +#, python-format +msgid "This stock item is allocated to Sales Order %(link)s (Quantity: %(qty)s)" +msgstr "" + +#: stock/templates/stock/item_base.html:256 +#, python-format +msgid "This stock item is allocated to Build %(link)s (Quantity: %(qty)s)" +msgstr "" + +#: stock/templates/stock/item_base.html:262 +msgid "This stock item is serialized - it has a unique serial number and the quantity cannot be adjusted." +msgstr "" + +#: stock/templates/stock/item_base.html:266 +msgid "This stock item cannot be deleted as it has child items" +msgstr "" + +#: stock/templates/stock/item_base.html:270 +msgid "This stock item will be automatically deleted when all stock is depleted." +msgstr "" + +#: stock/templates/stock/item_base.html:311 +#: templates/js/translated/build.js:1035 +msgid "No location set" +msgstr "" + +#: stock/templates/stock/item_base.html:318 +msgid "Barcode Identifier" +msgstr "" + +#: stock/templates/stock/item_base.html:360 +msgid "Parent Item" +msgstr "" + +#: stock/templates/stock/item_base.html:378 +msgid "No manufacturer set" +msgstr "" + +#: stock/templates/stock/item_base.html:403 msgid "Tests" msgstr "" -#: stock/templates/stock/item_base.html:505 +#: stock/templates/stock/item_base.html:493 msgid "Edit Stock Status" msgstr "" @@ -5827,30 +5844,35 @@ msgstr "" msgid "New Location" msgstr "" -#: stock/templates/stock/location.html:86 +#: stock/templates/stock/location.html:95 +#: stock/templates/stock/location.html:101 +msgid "Location Path" +msgstr "" + +#: stock/templates/stock/location.html:102 msgid "Top level stock location" msgstr "" -#: stock/templates/stock/location.html:95 +#: stock/templates/stock/location.html:115 msgid "You are not in the list of owners of this location. This stock location cannot be edited." msgstr "" -#: stock/templates/stock/location.html:113 -#: stock/templates/stock/location.html:160 +#: stock/templates/stock/location.html:128 +#: stock/templates/stock/location.html:175 #: stock/templates/stock/location_sidebar.html:5 msgid "Sublocations" msgstr "" -#: stock/templates/stock/location.html:127 templates/InvenTree/search.html:170 +#: stock/templates/stock/location.html:142 templates/InvenTree/search.html:170 #: templates/stats.html:97 users/models.py:42 msgid "Stock Locations" msgstr "" -#: stock/templates/stock/location.html:167 templates/stock_table.html:30 +#: stock/templates/stock/location.html:182 templates/stock_table.html:30 msgid "Printing Actions" msgstr "" -#: stock/templates/stock/location.html:171 templates/stock_table.html:34 +#: stock/templates/stock/location.html:186 templates/stock_table.html:34 msgid "Print labels" msgstr "" @@ -7201,10 +7223,6 @@ msgstr "" msgid "Delete Supplier Part" msgstr "" -#: templates/js/translated/company.js:265 -msgid "Edit Company" -msgstr "" - #: templates/js/translated/company.js:286 msgid "Add new Company" msgstr "" @@ -8167,6 +8185,10 @@ msgstr "" msgid "Invalid date" msgstr "" +#: templates/js/translated/stock.js:1949 +msgid "Details" +msgstr "" + #: templates/js/translated/stock.js:1974 msgid "Location no longer exists" msgstr "" diff --git a/InvenTree/locale/es/LC_MESSAGES/django.po b/InvenTree/locale/es/LC_MESSAGES/django.po index db90b2d66d..ed69daafd0 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-11-30 21:49+0000\n" -"PO-Revision-Date: 2021-11-30 21:52\n" +"POT-Creation-Date: 2021-12-03 10:37+0000\n" +"PO-Revision-Date: 2021-12-03 11:26\n" "Last-Translator: \n" "Language-Team: Spanish, Mexico\n" "Language: es_MX\n" @@ -114,129 +114,130 @@ msgstr "No se encontraron números de serie" msgid "Number of unique serial number ({s}) must match quantity ({q})" msgstr "Número único de número de serie ({s}) debe coincidir con la cantidad ({q})" -#: InvenTree/models.py:114 +#: InvenTree/models.py:120 msgid "Missing file" msgstr "Falta archivo" -#: InvenTree/models.py:115 +#: InvenTree/models.py:121 msgid "Missing external link" msgstr "Falta enlace externo" -#: InvenTree/models.py:126 stock/models.py:1874 +#: InvenTree/models.py:132 stock/models.py:1864 #: templates/js/translated/attachment.js:117 msgid "Attachment" msgstr "Adjunto" -#: InvenTree/models.py:127 +#: InvenTree/models.py:133 msgid "Select file to attach" msgstr "Seleccionar archivo a adjuntar" -#: InvenTree/models.py:133 company/models.py:131 company/models.py:348 +#: InvenTree/models.py:139 company/models.py:131 company/models.py:348 #: company/models.py:564 order/models.py:163 part/models.py:797 #: report/templates/report/inventree_build_order_base.html:165 #: templates/js/translated/company.js:537 -#: templates/js/translated/company.js:826 templates/js/translated/part.js:1077 +#: templates/js/translated/company.js:826 templates/js/translated/part.js:1258 msgid "Link" msgstr "Enlace" -#: InvenTree/models.py:134 build/models.py:330 part/models.py:798 -#: stock/models.py:540 +#: InvenTree/models.py:140 build/models.py:330 part/models.py:798 +#: stock/models.py:530 msgid "Link to external URL" msgstr "Enlace a URL externa" -#: InvenTree/models.py:137 templates/js/translated/attachment.js:161 +#: InvenTree/models.py:143 templates/js/translated/attachment.js:161 msgid "Comment" msgstr "Comentario" -#: InvenTree/models.py:137 +#: InvenTree/models.py:143 msgid "File comment" msgstr "Comentario de archivo" -#: InvenTree/models.py:143 InvenTree/models.py:144 common/models.py:1185 +#: InvenTree/models.py:149 InvenTree/models.py:150 common/models.py:1185 #: common/models.py:1186 part/models.py:2205 part/models.py:2225 #: report/templates/report/inventree_test_report_base.html:96 -#: templates/js/translated/stock.js:2084 +#: templates/js/translated/stock.js:2166 msgid "User" msgstr "Usuario" -#: InvenTree/models.py:147 +#: InvenTree/models.py:153 msgid "upload date" msgstr "fecha de subida" -#: InvenTree/models.py:170 +#: InvenTree/models.py:176 msgid "Filename must not be empty" msgstr "El nombre del archivo no debe estar vacío" -#: InvenTree/models.py:193 +#: InvenTree/models.py:199 msgid "Invalid attachment directory" msgstr "Directorio adjunto inválido" -#: InvenTree/models.py:203 +#: InvenTree/models.py:209 #, python-brace-format msgid "Filename contains illegal character '{c}'" msgstr "El nombre de archivo contiene caracteres no válidos '{c}'" -#: InvenTree/models.py:206 +#: InvenTree/models.py:212 msgid "Filename missing extension" msgstr "Falta extensión del nombre de archivo" -#: InvenTree/models.py:213 +#: InvenTree/models.py:219 msgid "Attachment with this filename already exists" msgstr "Ya existe un adjunto con este nombre de archivo" -#: InvenTree/models.py:220 +#: InvenTree/models.py:226 msgid "Error renaming file" msgstr "Error renombrando archivo" -#: InvenTree/models.py:255 +#: InvenTree/models.py:261 msgid "Invalid choice" msgstr "Elección no válida" -#: InvenTree/models.py:271 InvenTree/models.py:272 company/models.py:415 +#: InvenTree/models.py:277 InvenTree/models.py:278 company/models.py:415 #: label/models.py:112 part/models.py:741 part/models.py:2389 -#: part/templates/part/detail.html:25 report/models.py:181 -#: templates/InvenTree/settings/settings.html:259 -#: templates/js/translated/company.js:638 templates/js/translated/part.js:499 -#: templates/js/translated/part.js:636 templates/js/translated/part.js:1384 -#: templates/js/translated/stock.js:1877 +#: report/models.py:181 templates/InvenTree/settings/settings.html:259 +#: templates/js/translated/company.js:638 templates/js/translated/part.js:506 +#: templates/js/translated/part.js:643 templates/js/translated/part.js:1565 +#: templates/js/translated/stock.js:1959 msgid "Name" msgstr "Nombre" -#: InvenTree/models.py:278 build/models.py:207 +#: InvenTree/models.py:284 build/models.py:207 #: build/templates/build/detail.html:25 company/models.py:354 -#: company/models.py:570 company/templates/company/manufacturer_part.html:80 -#: company/templates/company/supplier_part.html:81 label/models.py:119 -#: order/models.py:161 part/models.py:764 part/templates/part/detail.html:30 +#: company/models.py:570 company/templates/company/company_base.html:68 +#: company/templates/company/manufacturer_part.html:76 +#: company/templates/company/supplier_part.html:73 label/models.py:119 +#: order/models.py:161 part/models.py:764 part/templates/part/category.html:70 +#: part/templates/part/part_base.html:163 #: part/templates/part/set_category.html:14 report/models.py:194 #: report/models.py:553 report/models.py:592 #: report/templates/report/inventree_build_order_base.html:118 -#: stock/templates/stock/location.html:108 templates/js/translated/bom.js:215 +#: stock/templates/stock/location.html:89 templates/js/translated/bom.js:215 #: templates/js/translated/bom.js:428 templates/js/translated/build.js:1621 #: templates/js/translated/company.js:345 #: templates/js/translated/company.js:548 -#: templates/js/translated/company.js:837 templates/js/translated/order.js:673 -#: templates/js/translated/order.js:855 templates/js/translated/order.js:1091 -#: templates/js/translated/part.js:558 templates/js/translated/part.js:752 -#: templates/js/translated/part.js:837 templates/js/translated/part.js:1007 -#: templates/js/translated/part.js:1403 templates/js/translated/part.js:1472 -#: templates/js/translated/stock.js:1151 templates/js/translated/stock.js:1889 -#: templates/js/translated/stock.js:1934 +#: templates/js/translated/company.js:837 templates/js/translated/order.js:680 +#: templates/js/translated/order.js:854 templates/js/translated/order.js:1090 +#: templates/js/translated/part.js:565 templates/js/translated/part.js:933 +#: templates/js/translated/part.js:1018 templates/js/translated/part.js:1188 +#: templates/js/translated/part.js:1584 templates/js/translated/part.js:1653 +#: templates/js/translated/stock.js:1233 templates/js/translated/stock.js:1971 +#: templates/js/translated/stock.js:2016 msgid "Description" msgstr "Descripción" -#: InvenTree/models.py:279 +#: InvenTree/models.py:285 msgid "Description (optional)" msgstr "Descripción (opcional)" -#: InvenTree/models.py:287 +#: InvenTree/models.py:293 msgid "parent" msgstr "principal" -#: InvenTree/serializers.py:62 part/models.py:2674 +#: InvenTree/serializers.py:65 part/models.py:2674 msgid "Must be a valid number" msgstr "Debe ser un número válido" -#: InvenTree/serializers.py:285 +#: InvenTree/serializers.py:299 msgid "Filename" msgstr "Nombre de archivo" @@ -361,7 +362,7 @@ msgid "Returned" msgstr "" #: InvenTree/status_codes.py:143 -#: order/templates/order/sales_order_base.html:147 +#: order/templates/order/sales_order_base.html:148 msgid "Shipped" msgstr "" @@ -566,7 +567,7 @@ msgid "Barcode associated with StockItem" msgstr "" #: build/forms.py:36 build/models.py:1283 -#: build/templates/build/build_base.html:124 +#: build/templates/build/build_base.html:132 #: build/templates/build/detail.html:35 common/models.py:1225 #: company/forms.py:42 company/templates/company/supplier_part.html:251 #: order/forms.py:102 order/models.py:729 order/models.py:991 @@ -574,26 +575,27 @@ msgstr "" #: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:223 #: part/forms.py:239 part/forms.py:255 part/models.py:2576 #: part/templates/part/bom_upload/match_parts.html:31 -#: part/templates/part/detail.html:1076 part/templates/part/detail.html:1162 +#: part/templates/part/detail.html:967 part/templates/part/detail.html:1053 #: part/templates/part/part_pricing.html:16 #: report/templates/report/inventree_build_order_base.html:114 #: report/templates/report/inventree_po_report.html:91 #: report/templates/report/inventree_so_report.html:91 #: report/templates/report/inventree_test_report_base.html:81 #: report/templates/report/inventree_test_report_base.html:139 -#: stock/forms.py:156 stock/serializers.py:286 -#: stock/templates/stock/item_base.html:256 +#: stock/forms.py:156 stock/serializers.py:291 +#: stock/templates/stock/item_base.html:174 #: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:443 #: templates/js/translated/build.js:235 templates/js/translated/build.js:435 #: templates/js/translated/build.js:629 templates/js/translated/build.js:639 #: templates/js/translated/build.js:1015 templates/js/translated/build.js:1362 #: templates/js/translated/model_renderers.js:99 -#: templates/js/translated/order.js:892 templates/js/translated/order.js:1205 -#: templates/js/translated/order.js:1283 templates/js/translated/order.js:1290 -#: templates/js/translated/order.js:1379 templates/js/translated/order.js:1479 -#: templates/js/translated/part.js:1615 templates/js/translated/part.js:1738 -#: templates/js/translated/part.js:1816 templates/js/translated/stock.js:377 -#: templates/js/translated/stock.js:2069 templates/js/translated/stock.js:2171 +#: templates/js/translated/order.js:891 templates/js/translated/order.js:1204 +#: templates/js/translated/order.js:1282 templates/js/translated/order.js:1289 +#: templates/js/translated/order.js:1378 templates/js/translated/order.js:1478 +#: templates/js/translated/part.js:843 templates/js/translated/part.js:1796 +#: templates/js/translated/part.js:1919 templates/js/translated/part.js:1997 +#: templates/js/translated/stock.js:378 templates/js/translated/stock.js:2151 +#: templates/js/translated/stock.js:2253 msgid "Quantity" msgstr "" @@ -602,8 +604,8 @@ msgid "Enter quantity for build output" msgstr "" #: build/forms.py:41 order/forms.py:96 stock/forms.py:95 -#: stock/serializers.py:307 templates/js/translated/stock.js:224 -#: templates/js/translated/stock.js:378 +#: stock/serializers.py:312 templates/js/translated/stock.js:225 +#: templates/js/translated/stock.js:379 msgid "Serial Numbers" msgstr "" @@ -646,7 +648,7 @@ msgstr "" #: build/templates/build/index.html:8 build/templates/build/index.html:12 #: order/templates/order/sales_order_detail.html:42 #: order/templates/order/so_sidebar.html:7 -#: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:221 +#: part/templates/part/part_sidebar.html:20 templates/InvenTree/index.html:221 #: templates/InvenTree/search.html:145 #: templates/InvenTree/settings/sidebar.html:42 users/models.py:44 msgid "Build Orders" @@ -662,7 +664,7 @@ msgstr "" #: report/templates/report/inventree_po_report.html:92 #: report/templates/report/inventree_so_report.html:92 #: templates/js/translated/bom.js:435 templates/js/translated/build.js:1119 -#: templates/js/translated/order.js:886 templates/js/translated/order.js:1473 +#: templates/js/translated/order.js:885 templates/js/translated/order.js:1472 msgid "Reference" msgstr "" @@ -670,7 +672,7 @@ msgstr "" msgid "Brief description of the build" msgstr "" -#: build/models.py:219 build/templates/build/build_base.html:156 +#: build/models.py:219 build/templates/build/build_base.html:164 #: build/templates/build/detail.html:88 msgid "Parent Build" msgstr "Armado Principal" @@ -679,7 +681,7 @@ msgstr "Armado Principal" msgid "BuildOrder to which this build is allocated" msgstr "" -#: build/models.py:225 build/templates/build/build_base.html:119 +#: build/models.py:225 build/templates/build/build_base.html:77 #: build/templates/build/detail.html:30 company/models.py:705 #: order/models.py:789 order/models.py:860 #: order/templates/order/order_wizard/select_parts.html:32 part/models.py:357 @@ -700,10 +702,10 @@ msgstr "" #: templates/js/translated/build.js:988 templates/js/translated/build.js:1359 #: templates/js/translated/build.js:1626 templates/js/translated/company.js:489 #: templates/js/translated/company.js:746 templates/js/translated/order.js:426 -#: templates/js/translated/order.js:840 templates/js/translated/order.js:1457 -#: templates/js/translated/part.js:737 templates/js/translated/part.js:818 -#: templates/js/translated/part.js:985 templates/js/translated/stock.js:508 -#: templates/js/translated/stock.js:1108 templates/js/translated/stock.js:2159 +#: templates/js/translated/order.js:839 templates/js/translated/order.js:1456 +#: templates/js/translated/part.js:918 templates/js/translated/part.js:999 +#: templates/js/translated/part.js:1166 templates/js/translated/stock.js:590 +#: templates/js/translated/stock.js:1190 templates/js/translated/stock.js:2241 msgid "Part" msgstr "" @@ -751,7 +753,7 @@ msgstr "Elementos completados" msgid "Number of stock items which have been completed" msgstr "Número de artículos de stock que han sido completados" -#: build/models.py:277 part/templates/part/part_base.html:216 +#: build/models.py:277 part/templates/part/part_base.html:234 msgid "Build Status" msgstr "" @@ -759,7 +761,7 @@ msgstr "" msgid "Build status code" msgstr "" -#: build/models.py:285 stock/models.py:544 +#: build/models.py:285 stock/models.py:534 msgid "Batch Code" msgstr "" @@ -768,7 +770,7 @@ msgid "Batch code for this build output" msgstr "" #: build/models.py:292 order/models.py:165 part/models.py:936 -#: part/templates/part/detail.html:86 templates/js/translated/order.js:1104 +#: part/templates/part/part_base.html:313 templates/js/translated/order.js:1103 msgid "Creation Date" msgstr "" @@ -797,12 +799,12 @@ msgstr "" msgid "User who issued this build order" msgstr "" -#: build/models.py:323 build/templates/build/build_base.html:177 +#: build/models.py:323 build/templates/build/build_base.html:185 #: build/templates/build/detail.html:116 order/models.py:179 -#: order/templates/order/order_base.html:154 -#: order/templates/order/sales_order_base.html:161 part/models.py:940 +#: order/templates/order/order_base.html:158 +#: order/templates/order/sales_order_base.html:162 part/models.py:940 #: report/templates/report/inventree_build_order_base.html:159 -#: templates/js/translated/build.js:1680 templates/js/translated/order.js:700 +#: templates/js/translated/build.js:1680 templates/js/translated/order.js:699 msgid "Responsible" msgstr "" @@ -811,10 +813,10 @@ msgid "User responsible for this build order" msgstr "" #: build/models.py:329 build/templates/build/detail.html:102 -#: company/templates/company/manufacturer_part.html:87 -#: company/templates/company/supplier_part.html:88 -#: part/templates/part/detail.html:80 stock/models.py:538 -#: stock/templates/stock/item_base.html:346 +#: company/templates/company/manufacturer_part.html:102 +#: company/templates/company/supplier_part.html:126 +#: part/templates/part/part_base.html:354 stock/models.py:528 +#: stock/templates/stock/item_base.html:374 msgid "External Link" msgstr "" @@ -824,15 +826,15 @@ msgstr "" #: order/models.py:183 order/models.py:738 #: order/templates/order/po_sidebar.html:11 #: order/templates/order/so_sidebar.html:11 part/models.py:925 -#: part/templates/part/detail.html:223 part/templates/part/part_sidebar.html:52 +#: part/templates/part/detail.html:116 part/templates/part/part_sidebar.html:50 #: report/templates/report/inventree_build_order_base.html:173 -#: stock/forms.py:154 stock/forms.py:204 stock/forms.py:238 stock/models.py:610 -#: stock/models.py:1774 stock/models.py:1880 stock/serializers.py:325 -#: stock/serializers.py:583 stock/templates/stock/stock_sidebar.html:21 +#: stock/forms.py:154 stock/forms.py:204 stock/forms.py:238 stock/models.py:600 +#: stock/models.py:1764 stock/models.py:1870 stock/serializers.py:330 +#: stock/serializers.py:588 stock/templates/stock/stock_sidebar.html:21 #: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:599 -#: templates/js/translated/company.js:842 templates/js/translated/order.js:985 -#: templates/js/translated/order.js:1583 templates/js/translated/stock.js:891 -#: templates/js/translated/stock.js:1370 +#: templates/js/translated/company.js:842 templates/js/translated/order.js:984 +#: templates/js/translated/order.js:1582 templates/js/translated/stock.js:973 +#: templates/js/translated/stock.js:1452 msgid "Notes" msgstr "" @@ -877,7 +879,7 @@ msgstr "" msgid "Selected stock item not found in BOM" msgstr "" -#: build/models.py:1253 stock/templates/stock/item_base.html:318 +#: build/models.py:1253 stock/templates/stock/item_base.html:346 #: templates/InvenTree/search.html:143 templates/js/translated/build.js:1599 #: templates/navbar.html:33 msgid "Build" @@ -890,11 +892,11 @@ msgstr "" #: build/models.py:1270 build/serializers.py:328 #: stock/templates/stock/item_base.html:8 #: stock/templates/stock/item_base.html:16 -#: stock/templates/stock/item_base.html:340 +#: stock/templates/stock/item_base.html:368 #: templates/js/translated/build.js:408 templates/js/translated/build.js:413 #: templates/js/translated/build.js:1361 templates/js/translated/build.js:1742 -#: templates/js/translated/order.js:1178 templates/js/translated/order.js:1183 -#: templates/js/translated/stock.js:2020 +#: templates/js/translated/order.js:1177 templates/js/translated/order.js:1182 +#: templates/js/translated/stock.js:2102 msgid "Stock Item" msgstr "" @@ -920,7 +922,7 @@ msgstr "" #: build/serializers.py:146 msgid "Build output does not match the parent build" -msgstr "" +msgstr "Salida de armado no coincide con armado principal" #: build/serializers.py:150 msgid "Output part does not match BuildOrder part" @@ -934,16 +936,16 @@ msgstr "" msgid "This build output is not fully allocated" msgstr "" -#: build/serializers.py:190 order/serializers.py:219 order/serializers.py:287 -#: stock/forms.py:236 stock/serializers.py:318 stock/serializers.py:685 -#: stock/templates/stock/item_base.html:286 +#: build/serializers.py:190 order/serializers.py:228 order/serializers.py:296 +#: stock/forms.py:236 stock/serializers.py:323 stock/serializers.py:690 +#: stock/templates/stock/item_base.html:314 #: templates/js/translated/barcode.js:384 #: templates/js/translated/barcode.js:557 templates/js/translated/build.js:420 #: templates/js/translated/build.js:1027 templates/js/translated/order.js:348 -#: templates/js/translated/order.js:1190 templates/js/translated/order.js:1298 -#: templates/js/translated/order.js:1304 templates/js/translated/part.js:181 -#: templates/js/translated/stock.js:510 templates/js/translated/stock.js:1251 -#: templates/js/translated/stock.js:1961 +#: templates/js/translated/order.js:1189 templates/js/translated/order.js:1297 +#: templates/js/translated/order.js:1303 templates/js/translated/part.js:177 +#: templates/js/translated/stock.js:592 templates/js/translated/stock.js:1333 +#: templates/js/translated/stock.js:2043 msgid "Location" msgstr "" @@ -951,13 +953,13 @@ msgstr "" msgid "Location for completed build outputs" msgstr "" -#: build/serializers.py:197 build/templates/build/build_base.html:129 +#: build/serializers.py:197 build/templates/build/build_base.html:137 #: build/templates/build/detail.html:63 order/models.py:572 -#: order/serializers.py:240 stock/templates/stock/item_base.html:409 +#: order/serializers.py:249 stock/templates/stock/item_base.html:180 #: templates/js/translated/barcode.js:140 templates/js/translated/build.js:1655 -#: templates/js/translated/order.js:431 templates/js/translated/order.js:677 -#: templates/js/translated/order.js:1096 templates/js/translated/stock.js:1226 -#: templates/js/translated/stock.js:2038 templates/js/translated/stock.js:2187 +#: templates/js/translated/order.js:431 templates/js/translated/order.js:1095 +#: templates/js/translated/stock.js:1308 templates/js/translated/stock.js:2120 +#: templates/js/translated/stock.js:2269 msgid "Status" msgstr "" @@ -986,8 +988,8 @@ msgstr "" msgid "Item must be in stock" msgstr "" -#: build/serializers.py:348 order/models.py:316 order/serializers.py:233 -#: stock/models.py:381 stock/models.py:1103 stock/serializers.py:298 +#: build/serializers.py:348 order/models.py:316 order/serializers.py:242 +#: stock/models.py:371 stock/models.py:1093 stock/serializers.py:303 msgid "Quantity must be greater than zero" msgstr "" @@ -1031,7 +1033,7 @@ msgid "Edit Build" msgstr "" #: build/templates/build/build_base.html:56 -#: build/templates/build/build_base.html:207 build/views.py:56 +#: build/templates/build/build_base.html:215 build/views.py:56 msgid "Cancel Build" msgstr "" @@ -1041,93 +1043,95 @@ msgstr "" #: build/templates/build/build_base.html:64 #: build/templates/build/build_base.html:65 -#: build/templates/build/build_base.html:223 +#: build/templates/build/build_base.html:231 msgid "Complete Build" msgstr "" -#: build/templates/build/build_base.html:79 +#: build/templates/build/build_base.html:82 +msgid "Build Description" +msgstr "" + +#: build/templates/build/build_base.html:91 #, python-format msgid "This Build Order is allocated to Sales Order %(link)s" msgstr "" -#: build/templates/build/build_base.html:86 +#: build/templates/build/build_base.html:98 #, python-format msgid "This Build Order is a child of Build Order %(link)s" msgstr "" -#: build/templates/build/build_base.html:93 +#: build/templates/build/build_base.html:105 msgid "Build Order is ready to mark as completed" msgstr "" -#: build/templates/build/build_base.html:98 +#: build/templates/build/build_base.html:110 msgid "Build Order cannot be completed as outstanding outputs remain" msgstr "" -#: build/templates/build/build_base.html:103 +#: build/templates/build/build_base.html:115 msgid "Required build quantity has not yet been completed" msgstr "" -#: build/templates/build/build_base.html:108 +#: build/templates/build/build_base.html:120 msgid "Stock has not been fully allocated to this Build Order" msgstr "" -#: build/templates/build/build_base.html:138 +#: build/templates/build/build_base.html:146 #: build/templates/build/detail.html:132 -#: order/templates/order/order_base.html:140 -#: order/templates/order/sales_order_base.html:140 +#: order/templates/order/order_base.html:144 +#: order/templates/order/sales_order_base.html:141 #: report/templates/report/inventree_build_order_base.html:126 -#: templates/js/translated/build.js:1692 templates/js/translated/order.js:690 -#: templates/js/translated/order.js:1109 +#: templates/js/translated/build.js:1692 templates/js/translated/order.js:689 +#: templates/js/translated/order.js:1108 msgid "Target Date" msgstr "" -#: build/templates/build/build_base.html:143 +#: build/templates/build/build_base.html:151 #, python-format msgid "This build was due on %(target)s" msgstr "" -#: build/templates/build/build_base.html:143 -#: build/templates/build/build_base.html:188 -#: order/templates/order/order_base.html:81 -#: order/templates/order/order_base.html:102 -#: order/templates/order/sales_order_base.html:78 -#: order/templates/order/sales_order_base.html:107 +#: build/templates/build/build_base.html:151 +#: build/templates/build/build_base.html:196 +#: order/templates/order/order_base.html:98 +#: order/templates/order/sales_order_base.html:93 #: templates/js/translated/table_filters.js:294 #: templates/js/translated/table_filters.js:322 #: templates/js/translated/table_filters.js:339 msgid "Overdue" msgstr "" -#: build/templates/build/build_base.html:150 +#: build/templates/build/build_base.html:158 #: build/templates/build/detail.html:68 build/templates/build/detail.html:143 #: templates/js/translated/build.js:1641 #: templates/js/translated/table_filters.js:304 msgid "Completed" msgstr "" -#: build/templates/build/build_base.html:163 +#: build/templates/build/build_base.html:171 #: build/templates/build/detail.html:95 order/models.py:857 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: order/templates/order/sales_order_ship.html:25 #: report/templates/report/inventree_build_order_base.html:136 #: report/templates/report/inventree_so_report.html:77 -#: stock/templates/stock/item_base.html:280 -#: templates/js/translated/order.js:1051 +#: stock/templates/stock/item_base.html:308 +#: templates/js/translated/order.js:1050 msgid "Sales Order" msgstr "" -#: build/templates/build/build_base.html:170 +#: build/templates/build/build_base.html:178 #: build/templates/build/detail.html:109 #: report/templates/report/inventree_build_order_base.html:153 msgid "Issued By" msgstr "" -#: build/templates/build/build_base.html:215 +#: build/templates/build/build_base.html:223 msgid "Incomplete Outputs" msgstr "" -#: build/templates/build/build_base.html:216 +#: build/templates/build/build_base.html:224 msgid "Build Order cannot be completed as incomplete build outputs remain" msgstr "" @@ -1188,7 +1192,7 @@ msgid "Stock can be taken from any available location." msgstr "" #: build/templates/build/detail.html:50 order/models.py:811 stock/forms.py:150 -#: templates/js/translated/order.js:432 templates/js/translated/order.js:974 +#: templates/js/translated/order.js:432 templates/js/translated/order.js:973 msgid "Destination" msgstr "" @@ -1201,16 +1205,16 @@ msgid "Allocated Parts" msgstr "" #: build/templates/build/detail.html:81 -#: stock/templates/stock/item_base.html:304 -#: templates/js/translated/stock.js:1240 templates/js/translated/stock.js:2194 +#: stock/templates/stock/item_base.html:332 +#: templates/js/translated/stock.js:1322 templates/js/translated/stock.js:2276 #: templates/js/translated/table_filters.js:151 #: templates/js/translated/table_filters.js:233 msgid "Batch" msgstr "" #: build/templates/build/detail.html:127 -#: order/templates/order/order_base.html:127 -#: order/templates/order/sales_order_base.html:134 +#: order/templates/order/order_base.html:131 +#: order/templates/order/sales_order_base.html:135 #: templates/js/translated/build.js:1663 msgid "Created" msgstr "" @@ -1254,7 +1258,7 @@ msgstr "" #: build/templates/build/detail.html:185 #: company/templates/company/detail.html:38 #: company/templates/company/detail.html:85 order/views.py:509 -#: part/templates/part/category.html:166 +#: part/templates/part/category.html:173 msgid "Order Parts" msgstr "" @@ -1306,8 +1310,8 @@ msgstr "" #: order/templates/order/po_sidebar.html:9 #: order/templates/order/purchase_order_detail.html:60 #: order/templates/order/sales_order_detail.html:52 -#: order/templates/order/so_sidebar.html:9 part/templates/part/detail.html:300 -#: part/templates/part/part_sidebar.html:50 stock/templates/stock/item.html:95 +#: order/templates/order/so_sidebar.html:9 part/templates/part/detail.html:193 +#: part/templates/part/part_sidebar.html:48 stock/templates/stock/item.html:95 #: stock/templates/stock/stock_sidebar.html:19 msgid "Attachments" msgstr "" @@ -1323,7 +1327,7 @@ msgstr "" #: order/templates/order/purchase_order_detail.html:108 #: order/templates/order/sales_order_detail.html:72 #: order/templates/order/sales_order_detail.html:99 -#: part/templates/part/detail.html:227 stock/templates/stock/item.html:115 +#: part/templates/part/detail.html:120 stock/templates/stock/item.html:115 #: stock/templates/stock/item.html:205 msgid "Edit Notes" msgstr "" @@ -1336,7 +1340,7 @@ msgstr "" msgid "All untracked stock items have been allocated" msgstr "Todos los artículos de stock no rastreados han sido asignados" -#: build/templates/build/index.html:18 part/templates/part/detail.html:407 +#: build/templates/build/index.html:18 part/templates/part/detail.html:300 msgid "New Build Order" msgstr "" @@ -1380,7 +1384,7 @@ msgstr "" msgid "Maximum output quantity is " msgstr "" -#: build/views.py:122 stock/serializers.py:356 stock/views.py:1290 +#: build/views.py:122 stock/serializers.py:361 stock/views.py:1290 msgid "Serial numbers already exist" msgstr "" @@ -1675,7 +1679,7 @@ msgid "Parts are trackable by default" msgstr "" #: common/models.py:745 part/models.py:920 -#: part/templates/part/part_base.html:144 +#: part/templates/part/part_base.html:147 #: templates/js/translated/table_filters.js:42 msgid "Virtual" msgstr "" @@ -2142,7 +2146,7 @@ msgstr "" #: common/models.py:1233 company/serializers.py:264 #: company/templates/company/supplier_part.html:256 -#: templates/js/translated/part.js:1620 +#: templates/js/translated/part.js:852 templates/js/translated/part.js:1801 msgid "Price" msgstr "" @@ -2206,7 +2210,7 @@ msgstr "" msgid "Description of the company" msgstr "" -#: company/models.py:112 company/templates/company/company_base.html:70 +#: company/models.py:112 company/templates/company/company_base.html:97 #: templates/js/translated/company.js:349 msgid "Website" msgstr "" @@ -2215,7 +2219,7 @@ msgstr "" msgid "Company website URL" msgstr "" -#: company/models.py:117 company/templates/company/company_base.html:88 +#: company/models.py:117 company/templates/company/company_base.html:115 msgid "Address" msgstr "" @@ -2231,7 +2235,7 @@ msgstr "" msgid "Contact phone number" msgstr "" -#: company/models.py:125 company/templates/company/company_base.html:102 +#: company/models.py:125 company/templates/company/company_base.html:129 #: templates/InvenTree/settings/user.html:47 msgid "Email" msgstr "" @@ -2240,7 +2244,7 @@ msgstr "" msgid "Contact email address" msgstr "" -#: company/models.py:128 company/templates/company/company_base.html:109 +#: company/models.py:128 company/templates/company/company_base.html:136 msgid "Contact" msgstr "" @@ -2281,7 +2285,7 @@ msgid "Does this company manufacture parts?" msgstr "" #: company/models.py:152 company/serializers.py:270 -#: company/templates/company/company_base.html:76 stock/serializers.py:172 +#: company/templates/company/company_base.html:103 stock/serializers.py:177 msgid "Currency" msgstr "" @@ -2289,8 +2293,8 @@ msgstr "" msgid "Default currency used for this company" msgstr "" -#: company/models.py:320 company/models.py:535 stock/models.py:484 -#: stock/templates/stock/item_base.html:224 +#: company/models.py:320 company/models.py:535 stock/models.py:474 +#: stock/templates/stock/item_base.html:135 msgid "Base Part" msgstr "" @@ -2298,29 +2302,29 @@ msgstr "" msgid "Select part" msgstr "" -#: company/models.py:335 company/templates/company/company_base.html:116 -#: company/templates/company/manufacturer_part.html:93 -#: company/templates/company/supplier_part.html:104 -#: stock/templates/stock/item_base.html:353 +#: company/models.py:335 company/templates/company/company_base.html:73 +#: company/templates/company/manufacturer_part.html:91 +#: company/templates/company/supplier_part.html:97 +#: stock/templates/stock/item_base.html:381 #: templates/js/translated/company.js:333 #: templates/js/translated/company.js:514 -#: templates/js/translated/company.js:797 templates/js/translated/part.js:229 +#: templates/js/translated/company.js:797 templates/js/translated/part.js:232 msgid "Manufacturer" msgstr "" -#: company/models.py:336 templates/js/translated/part.js:230 +#: company/models.py:336 templates/js/translated/part.js:233 msgid "Select manufacturer" msgstr "" -#: company/models.py:342 company/templates/company/manufacturer_part.html:97 -#: company/templates/company/supplier_part.html:112 +#: company/models.py:342 company/templates/company/manufacturer_part.html:96 +#: company/templates/company/supplier_part.html:105 #: templates/js/translated/company.js:530 -#: templates/js/translated/company.js:815 templates/js/translated/order.js:874 -#: templates/js/translated/part.js:240 +#: templates/js/translated/company.js:815 templates/js/translated/order.js:873 +#: templates/js/translated/part.js:243 templates/js/translated/part.js:832 msgid "MPN" msgstr "" -#: company/models.py:343 templates/js/translated/part.js:241 +#: company/models.py:343 templates/js/translated/part.js:244 msgid "Manufacturer Part Number" msgstr "" @@ -2335,7 +2339,7 @@ msgstr "" #: company/models.py:409 company/models.py:558 #: company/templates/company/manufacturer_part.html:6 #: company/templates/company/manufacturer_part.html:23 -#: stock/templates/stock/item_base.html:363 +#: stock/templates/stock/item_base.html:391 msgid "Manufacturer Part" msgstr "" @@ -2345,8 +2349,8 @@ msgstr "" #: company/models.py:422 #: report/templates/report/inventree_test_report_base.html:95 -#: stock/models.py:1867 templates/js/translated/company.js:644 -#: templates/js/translated/part.js:645 templates/js/translated/stock.js:878 +#: stock/models.py:1857 templates/js/translated/company.js:644 +#: templates/js/translated/part.js:652 templates/js/translated/stock.js:960 msgid "Value" msgstr "" @@ -2355,9 +2359,9 @@ msgid "Parameter value" msgstr "" #: company/models.py:429 part/models.py:882 part/models.py:2397 -#: part/templates/part/detail.html:59 +#: part/templates/part/part_base.html:288 #: templates/InvenTree/settings/settings.html:264 -#: templates/js/translated/company.js:650 templates/js/translated/part.js:651 +#: templates/js/translated/company.js:650 templates/js/translated/part.js:658 msgid "Units" msgstr "" @@ -2369,28 +2373,28 @@ msgstr "" msgid "Linked manufacturer part must reference the same base part" msgstr "" -#: company/models.py:545 company/templates/company/company_base.html:121 -#: company/templates/company/supplier_part.html:94 order/models.py:263 -#: order/templates/order/order_base.html:108 +#: company/models.py:545 company/templates/company/company_base.html:78 +#: company/templates/company/supplier_part.html:87 order/models.py:263 +#: order/templates/order/order_base.html:112 #: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:219 -#: part/bom.py:247 stock/templates/stock/item_base.html:370 +#: part/bom.py:247 stock/templates/stock/item_base.html:398 #: templates/js/translated/company.js:337 -#: templates/js/translated/company.js:771 templates/js/translated/order.js:660 -#: templates/js/translated/part.js:210 +#: templates/js/translated/company.js:771 templates/js/translated/order.js:667 +#: templates/js/translated/part.js:213 templates/js/translated/part.js:800 msgid "Supplier" msgstr "" -#: company/models.py:546 templates/js/translated/part.js:211 +#: company/models.py:546 templates/js/translated/part.js:214 msgid "Select supplier" msgstr "" -#: company/models.py:551 company/templates/company/supplier_part.html:98 -#: part/bom.py:220 part/bom.py:248 templates/js/translated/order.js:861 -#: templates/js/translated/part.js:221 +#: company/models.py:551 company/templates/company/supplier_part.html:91 +#: part/bom.py:220 part/bom.py:248 templates/js/translated/order.js:860 +#: templates/js/translated/part.js:224 templates/js/translated/part.js:818 msgid "SKU" msgstr "" -#: company/models.py:552 templates/js/translated/part.js:222 +#: company/models.py:552 templates/js/translated/part.js:225 msgid "Supplier stock keeping unit" msgstr "" @@ -2406,7 +2410,7 @@ msgstr "" msgid "Supplier part description" msgstr "" -#: company/models.py:576 company/templates/company/supplier_part.html:126 +#: company/models.py:576 company/templates/company/supplier_part.html:119 #: part/models.py:2588 report/templates/report/inventree_po_report.html:93 #: report/templates/report/inventree_so_report.html:93 msgid "Note" @@ -2420,9 +2424,9 @@ msgstr "" msgid "Minimum charge (e.g. stocking fee)" msgstr "" -#: company/models.py:582 company/templates/company/supplier_part.html:119 -#: stock/models.py:507 stock/templates/stock/item_base.html:311 -#: templates/js/translated/company.js:847 templates/js/translated/stock.js:1366 +#: company/models.py:582 company/templates/company/supplier_part.html:112 +#: stock/models.py:497 stock/templates/stock/item_base.html:339 +#: templates/js/translated/company.js:847 templates/js/translated/stock.js:1448 msgid "Packaging" msgstr "" @@ -2457,43 +2461,56 @@ msgstr "" msgid "Create Purchase Order" msgstr "" -#: company/templates/company/company_base.html:27 +#: company/templates/company/company_base.html:26 +msgid "Company actions" +msgstr "" + +#: company/templates/company/company_base.html:31 msgid "Edit company information" msgstr "" #: company/templates/company/company_base.html:32 -#: company/templates/company/company_base.html:148 +#: templates/js/translated/company.js:265 +msgid "Edit Company" +msgstr "" + +#: company/templates/company/company_base.html:36 +msgid "Delete company" +msgstr "" + +#: company/templates/company/company_base.html:37 +#: company/templates/company/company_base.html:159 msgid "Delete Company" msgstr "" -#: company/templates/company/company_base.html:48 +#: company/templates/company/company_base.html:53 #: part/templates/part/part_thumb.html:12 msgid "Upload new image" msgstr "" -#: company/templates/company/company_base.html:51 +#: company/templates/company/company_base.html:56 #: part/templates/part/part_thumb.html:14 msgid "Download image from URL" msgstr "" -#: company/templates/company/company_base.html:81 -msgid "Uses default currency" -msgstr "" - -#: company/templates/company/company_base.html:95 -msgid "Phone" -msgstr "" - -#: company/templates/company/company_base.html:126 order/models.py:567 -#: order/templates/order/sales_order_base.html:114 stock/models.py:525 -#: stock/models.py:526 stock/templates/stock/item_base.html:263 -#: templates/js/translated/company.js:329 templates/js/translated/order.js:1073 -#: templates/js/translated/stock.js:2002 +#: company/templates/company/company_base.html:83 order/models.py:567 +#: order/templates/order/sales_order_base.html:115 stock/models.py:515 +#: stock/models.py:516 stock/templates/stock/item_base.html:291 +#: templates/js/translated/company.js:329 templates/js/translated/order.js:1072 +#: templates/js/translated/stock.js:2084 msgid "Customer" msgstr "" -#: company/templates/company/company_base.html:194 -#: part/templates/part/part_base.html:342 +#: company/templates/company/company_base.html:108 +msgid "Uses default currency" +msgstr "" + +#: company/templates/company/company_base.html:122 +msgid "Phone" +msgstr "" + +#: company/templates/company/company_base.html:205 +#: part/templates/part/part_base.html:471 msgid "Upload Image" msgstr "" @@ -2509,23 +2526,23 @@ msgid "Create new supplier part" msgstr "" #: company/templates/company/detail.html:20 -#: company/templates/company/manufacturer_part.html:112 -#: part/templates/part/detail.html:440 +#: company/templates/company/manufacturer_part.html:118 +#: part/templates/part/detail.html:333 msgid "New Supplier Part" msgstr "" #: company/templates/company/detail.html:32 #: company/templates/company/detail.html:79 -#: company/templates/company/manufacturer_part.html:121 -#: company/templates/company/manufacturer_part.html:150 -#: part/templates/part/category.html:160 part/templates/part/detail.html:449 -#: part/templates/part/detail.html:477 +#: company/templates/company/manufacturer_part.html:127 +#: company/templates/company/manufacturer_part.html:156 +#: part/templates/part/category.html:167 part/templates/part/detail.html:342 +#: part/templates/part/detail.html:370 msgid "Options" msgstr "" #: company/templates/company/detail.html:37 #: company/templates/company/detail.html:84 -#: part/templates/part/category.html:166 +#: part/templates/part/category.html:173 msgid "Order parts" msgstr "" @@ -2547,7 +2564,7 @@ msgstr "" msgid "Create new manufacturer part" msgstr "" -#: company/templates/company/detail.html:67 part/templates/part/detail.html:467 +#: company/templates/company/detail.html:67 part/templates/part/detail.html:360 msgid "New Manufacturer Part" msgstr "" @@ -2561,7 +2578,7 @@ msgstr "" #: order/templates/order/order_base.html:13 #: order/templates/order/purchase_orders.html:8 #: order/templates/order/purchase_orders.html:12 -#: part/templates/part/detail.html:171 part/templates/part/part_sidebar.html:35 +#: part/templates/part/detail.html:64 part/templates/part/part_sidebar.html:33 #: templates/InvenTree/index.html:252 templates/InvenTree/search.html:203 #: templates/InvenTree/settings/sidebar.html:44 templates/navbar.html:45 #: users/models.py:45 @@ -2583,7 +2600,7 @@ msgstr "" #: order/templates/order/sales_order_base.html:13 #: order/templates/order/sales_orders.html:8 #: order/templates/order/sales_orders.html:15 -#: part/templates/part/detail.html:194 part/templates/part/part_sidebar.html:39 +#: part/templates/part/detail.html:87 part/templates/part/part_sidebar.html:37 #: templates/InvenTree/index.html:283 templates/InvenTree/search.html:223 #: templates/InvenTree/settings/sidebar.html:46 templates/navbar.html:56 #: users/models.py:46 @@ -2610,14 +2627,14 @@ msgid "Company Notes" msgstr "" #: company/templates/company/detail.html:383 -#: company/templates/company/manufacturer_part.html:209 -#: part/templates/part/detail.html:520 +#: company/templates/company/manufacturer_part.html:215 +#: part/templates/part/detail.html:413 msgid "Delete Supplier Parts?" msgstr "" #: company/templates/company/detail.html:384 -#: company/templates/company/manufacturer_part.html:210 -#: part/templates/part/detail.html:521 +#: company/templates/company/manufacturer_part.html:216 +#: part/templates/part/detail.html:414 msgid "All selected supplier parts will be deleted" msgstr "" @@ -2634,7 +2651,7 @@ msgstr "" #: company/templates/company/manufacturer_part.html:35 #: company/templates/company/supplier_part.html:34 #: company/templates/company/supplier_part.html:159 -#: part/templates/part/detail.html:174 part/templates/part/part_base.html:76 +#: part/templates/part/detail.html:67 part/templates/part/part_base.html:76 msgid "Order part" msgstr "" @@ -2648,60 +2665,60 @@ msgstr "" msgid "Delete manufacturer part" msgstr "" -#: company/templates/company/manufacturer_part.html:70 -#: company/templates/company/supplier_part.html:71 +#: company/templates/company/manufacturer_part.html:66 +#: company/templates/company/supplier_part.html:63 msgid "Internal Part" msgstr "" -#: company/templates/company/manufacturer_part.html:108 +#: company/templates/company/manufacturer_part.html:114 #: company/templates/company/supplier_part.html:15 company/views.py:49 -#: part/templates/part/part_sidebar.html:33 part/templates/part/prices.html:163 +#: part/templates/part/part_sidebar.html:31 part/templates/part/prices.html:163 #: templates/InvenTree/search.html:194 templates/navbar.html:43 msgid "Suppliers" msgstr "" -#: company/templates/company/manufacturer_part.html:123 -#: part/templates/part/detail.html:451 +#: company/templates/company/manufacturer_part.html:129 +#: part/templates/part/detail.html:344 msgid "Delete supplier parts" msgstr "" -#: company/templates/company/manufacturer_part.html:123 -#: company/templates/company/manufacturer_part.html:152 -#: company/templates/company/manufacturer_part.html:248 -#: part/templates/part/detail.html:451 part/templates/part/detail.html:479 +#: company/templates/company/manufacturer_part.html:129 +#: company/templates/company/manufacturer_part.html:158 +#: company/templates/company/manufacturer_part.html:254 +#: part/templates/part/detail.html:344 part/templates/part/detail.html:372 #: templates/js/translated/company.js:425 templates/js/translated/helpers.js:31 #: users/models.py:204 msgid "Delete" msgstr "" -#: company/templates/company/manufacturer_part.html:137 +#: company/templates/company/manufacturer_part.html:143 #: company/templates/company/manufacturer_part_sidebar.html:5 #: part/templates/part/category_sidebar.html:17 -#: part/templates/part/detail.html:277 part/templates/part/part_sidebar.html:10 +#: part/templates/part/detail.html:170 part/templates/part/part_sidebar.html:8 msgid "Parameters" msgstr "" -#: company/templates/company/manufacturer_part.html:141 -#: part/templates/part/detail.html:282 +#: company/templates/company/manufacturer_part.html:147 +#: part/templates/part/detail.html:175 #: templates/InvenTree/settings/category.html:12 #: templates/InvenTree/settings/part.html:65 msgid "New Parameter" msgstr "" -#: company/templates/company/manufacturer_part.html:152 +#: company/templates/company/manufacturer_part.html:158 msgid "Delete parameters" msgstr "" -#: company/templates/company/manufacturer_part.html:185 -#: part/templates/part/detail.html:976 +#: company/templates/company/manufacturer_part.html:191 +#: part/templates/part/detail.html:867 msgid "Add Parameter" msgstr "" -#: company/templates/company/manufacturer_part.html:233 +#: company/templates/company/manufacturer_part.html:239 msgid "Selected parameters will be deleted" msgstr "" -#: company/templates/company/manufacturer_part.html:245 +#: company/templates/company/manufacturer_part.html:251 msgid "Delete Parameters" msgstr "" @@ -2722,9 +2739,9 @@ msgid "Assigned Stock Items" msgstr "Artículos de Stock Asignados" #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 stock/models.py:492 -#: stock/templates/stock/item_base.html:375 -#: templates/js/translated/company.js:787 templates/js/translated/stock.js:1323 +#: company/templates/company/supplier_part.html:24 stock/models.py:482 +#: stock/templates/stock/item_base.html:403 +#: templates/js/translated/company.js:787 templates/js/translated/stock.js:1405 msgid "Supplier Part" msgstr "" @@ -2744,13 +2761,13 @@ msgid "Supplier Part Stock" msgstr "" #: company/templates/company/supplier_part.html:141 -#: part/templates/part/detail.html:127 stock/templates/stock/location.html:147 +#: part/templates/part/detail.html:20 stock/templates/stock/location.html:162 msgid "Create new stock item" msgstr "" #: company/templates/company/supplier_part.html:142 -#: part/templates/part/detail.html:128 stock/templates/stock/location.html:148 -#: templates/js/translated/stock.js:354 +#: part/templates/part/detail.html:21 stock/templates/stock/location.html:163 +#: templates/js/translated/stock.js:355 msgid "New Stock Item" msgstr "" @@ -2760,7 +2777,7 @@ msgid "Supplier Part Orders" msgstr "" #: company/templates/company/supplier_part.html:160 -#: part/templates/part/detail.html:175 +#: part/templates/part/detail.html:68 msgid "Order Part" msgstr "" @@ -2796,15 +2813,15 @@ msgid "Delete price break" msgstr "" #: company/templates/company/supplier_part_navbar.html:15 -#: part/templates/part/part_sidebar.html:16 +#: part/templates/part/part_sidebar.html:14 #: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:14 #: stock/templates/stock/stock_app_base.html:10 #: templates/InvenTree/search.html:156 #: templates/InvenTree/settings/sidebar.html:40 -#: templates/js/translated/bom.js:216 templates/js/translated/part.js:427 -#: templates/js/translated/part.js:562 templates/js/translated/part.js:878 -#: templates/js/translated/part.js:1039 templates/js/translated/stock.js:509 -#: templates/js/translated/stock.js:1162 templates/navbar.html:26 +#: templates/js/translated/bom.js:216 templates/js/translated/part.js:434 +#: templates/js/translated/part.js:569 templates/js/translated/part.js:1059 +#: templates/js/translated/part.js:1220 templates/js/translated/stock.js:591 +#: templates/js/translated/stock.js:1244 templates/navbar.html:26 msgid "Stock" msgstr "" @@ -2818,16 +2835,16 @@ msgid "Supplier Part Pricing" msgstr "" #: company/templates/company/supplier_part_navbar.html:29 -#: part/templates/part/part_sidebar.html:30 +#: part/templates/part/part_sidebar.html:28 msgid "Pricing" msgstr "" #: company/templates/company/supplier_part_sidebar.html:5 -#: stock/templates/stock/location.html:118 -#: stock/templates/stock/location.html:132 -#: stock/templates/stock/location.html:144 +#: stock/templates/stock/location.html:133 +#: stock/templates/stock/location.html:147 +#: stock/templates/stock/location.html:159 #: stock/templates/stock/location_sidebar.html:7 -#: templates/InvenTree/search.html:158 templates/js/translated/stock.js:1901 +#: templates/InvenTree/search.html:158 templates/js/translated/stock.js:1983 #: templates/stats.html:93 templates/stats.html:102 users/models.py:43 msgid "Stock Items" msgstr "Artículos de Stock" @@ -2947,7 +2964,7 @@ msgstr "" msgid "Place order" msgstr "" -#: order/forms.py:37 order/templates/order/order_base.html:59 +#: order/forms.py:37 order/templates/order/order_base.html:60 msgid "Mark order as complete" msgstr "" @@ -3000,8 +3017,8 @@ msgstr "" msgid "Company from which the items are being ordered" msgstr "Empresa de la que se están pidiendo los artículos" -#: order/models.py:267 order/templates/order/order_base.html:114 -#: templates/js/translated/order.js:669 +#: order/models.py:267 order/templates/order/order_base.html:118 +#: templates/js/translated/order.js:676 msgid "Supplier Reference" msgstr "" @@ -3061,7 +3078,7 @@ msgstr "" msgid "Target date for order completion. Order will be overdue after this date." msgstr "" -#: order/models.py:582 templates/js/translated/order.js:1114 +#: order/models.py:582 templates/js/translated/order.js:1113 msgid "Shipment Date" msgstr "" @@ -3086,16 +3103,16 @@ msgid "Line item notes" msgstr "" #: order/models.py:768 order/models.py:856 -#: templates/js/translated/order.js:1166 +#: templates/js/translated/order.js:1165 msgid "Order" msgstr "" #: order/models.py:769 order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_po_report.html:77 -#: stock/templates/stock/item_base.html:325 -#: templates/js/translated/order.js:638 templates/js/translated/stock.js:1300 -#: templates/js/translated/stock.js:1983 +#: stock/templates/stock/item_base.html:353 +#: templates/js/translated/order.js:638 templates/js/translated/part.js:775 +#: templates/js/translated/stock.js:1382 templates/js/translated/stock.js:2065 msgid "Purchase Order" msgstr "" @@ -3103,9 +3120,10 @@ msgstr "" msgid "Supplier part" msgstr "" -#: order/models.py:797 order/templates/order/order_base.html:147 -#: order/templates/order/sales_order_base.html:154 -#: templates/js/translated/order.js:429 templates/js/translated/order.js:954 +#: order/models.py:797 order/templates/order/order_base.html:151 +#: order/templates/order/sales_order_base.html:155 +#: templates/js/translated/order.js:429 templates/js/translated/order.js:953 +#: templates/js/translated/part.js:847 templates/js/translated/part.js:873 msgid "Received" msgstr "" @@ -3113,9 +3131,9 @@ msgstr "" msgid "Number of items received" msgstr "Número de artículos recibidos" -#: order/models.py:805 part/templates/part/prices.html:176 stock/models.py:619 -#: stock/serializers.py:163 stock/templates/stock/item_base.html:332 -#: templates/js/translated/stock.js:1354 +#: order/models.py:805 part/templates/part/prices.html:176 stock/models.py:609 +#: stock/serializers.py:168 stock/templates/stock/item_base.html:360 +#: templates/js/translated/stock.js:1436 msgid "Purchase Price" msgstr "" @@ -3176,47 +3194,47 @@ msgstr "" msgid "Enter stock allocation quantity" msgstr "" -#: order/serializers.py:169 +#: order/serializers.py:175 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:204 +#: order/serializers.py:213 msgid "Line Item" msgstr "" -#: order/serializers.py:210 +#: order/serializers.py:219 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:220 order/serializers.py:288 +#: order/serializers.py:229 order/serializers.py:297 msgid "Select destination location for received items" msgstr "Seleccione la ubicación de destino para los artículos recibidos" -#: order/serializers.py:244 +#: order/serializers.py:253 msgid "Barcode Hash" msgstr "" -#: order/serializers.py:245 +#: order/serializers.py:254 msgid "Unique identifier field" msgstr "" -#: order/serializers.py:262 +#: order/serializers.py:271 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:300 +#: order/serializers.py:309 msgid "Line items must be provided" msgstr "Debe proporcionar elementos de línea" -#: order/serializers.py:317 +#: order/serializers.py:326 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:328 +#: order/serializers.py:337 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:569 +#: order/serializers.py:578 msgid "Sale price currency" msgstr "" @@ -3248,22 +3266,36 @@ msgstr "" msgid "Receive items" msgstr "Recibir artículos" -#: order/templates/order/order_base.html:93 -#: order/templates/order/sales_order_base.html:98 +#: order/templates/order/order_base.html:58 +#: order/templates/order/purchase_order_detail.html:31 +msgid "Receive Items" +msgstr "Recibir Artículos" + +#: order/templates/order/order_base.html:62 order/views.py:185 +msgid "Complete Order" +msgstr "" + +#: order/templates/order/order_base.html:84 +#: order/templates/order/sales_order_base.html:79 msgid "Order Reference" msgstr "" -#: order/templates/order/order_base.html:98 -#: order/templates/order/sales_order_base.html:103 +#: order/templates/order/order_base.html:89 +#: order/templates/order/sales_order_base.html:84 +msgid "Order Description" +msgstr "" + +#: order/templates/order/order_base.html:94 +#: order/templates/order/sales_order_base.html:89 msgid "Order Status" msgstr "" -#: order/templates/order/order_base.html:133 +#: order/templates/order/order_base.html:137 #: report/templates/report/inventree_build_order_base.html:122 msgid "Issued" msgstr "" -#: order/templates/order/order_base.html:203 +#: order/templates/order/order_base.html:207 msgid "Edit Purchase Order" msgstr "" @@ -3421,7 +3453,7 @@ msgid "Select existing purchase orders, or create new orders." msgstr "" #: order/templates/order/order_wizard/select_pos.html:31 -#: templates/js/translated/order.js:695 templates/js/translated/order.js:1119 +#: templates/js/translated/order.js:694 templates/js/translated/order.js:1118 msgid "Items" msgstr "Artículos" @@ -3465,10 +3497,6 @@ msgstr "" msgid "Receive selected items" msgstr "Recibir artículos seleccionados" -#: order/templates/order/purchase_order_detail.html:31 -msgid "Receive Items" -msgstr "Recibir Artículos" - #: order/templates/order/purchase_order_detail.html:50 msgid "Received Items" msgstr "Artículos Recibidos" @@ -3496,16 +3524,16 @@ msgstr "" msgid "Ship Order" msgstr "" -#: order/templates/order/sales_order_base.html:86 +#: order/templates/order/sales_order_base.html:102 msgid "This Sales Order has not been fully allocated" msgstr "" -#: order/templates/order/sales_order_base.html:121 -#: templates/js/translated/order.js:1086 +#: order/templates/order/sales_order_base.html:122 +#: templates/js/translated/order.js:1085 msgid "Customer Reference" msgstr "" -#: order/templates/order/sales_order_base.html:194 +#: order/templates/order/sales_order_base.html:195 msgid "Edit Sales Order" msgstr "" @@ -3576,10 +3604,6 @@ msgstr "" msgid "Purchase order issued" msgstr "" -#: order/views.py:185 -msgid "Complete Order" -msgstr "" - #: order/views.py:201 msgid "Confirm order completion" msgstr "" @@ -3672,11 +3696,11 @@ msgid "This field is required" msgstr "" #: part/bom.py:125 part/models.py:81 part/models.py:816 -#: part/templates/part/category.html:90 part/templates/part/detail.html:104 +#: part/templates/part/category.html:104 part/templates/part/part_base.html:338 msgid "Default Location" msgstr "" -#: part/bom.py:126 part/templates/part/part_base.html:167 +#: part/bom.py:126 part/templates/part/part_base.html:185 msgid "Available Stock" msgstr "" @@ -3738,11 +3762,11 @@ msgstr "" #: part/forms.py:96 part/models.py:2427 msgid "Parent Part" -msgstr "" +msgstr "Parte principal" #: part/forms.py:97 part/templates/part/bom_duplicate.html:7 msgid "Select parent part to copy BOM from" -msgstr "" +msgstr "Seleccionar parte principal de la que copiar BOM" #: part/forms.py:103 msgid "Clear existing BOM items" @@ -3793,26 +3817,26 @@ msgstr "" msgid "Part Category" msgstr "" -#: part/models.py:96 part/templates/part/category.html:117 +#: part/models.py:96 part/templates/part/category.html:124 #: templates/InvenTree/search.html:101 templates/stats.html:84 #: users/models.py:40 msgid "Part Categories" msgstr "" #: part/models.py:358 part/templates/part/cat_link.html:3 -#: part/templates/part/category.html:13 part/templates/part/category.html:122 -#: part/templates/part/category.html:142 +#: part/templates/part/category.html:13 part/templates/part/category.html:129 +#: part/templates/part/category.html:149 #: part/templates/part/category_sidebar.html:9 #: templates/InvenTree/index.html:85 templates/InvenTree/search.html:88 #: templates/InvenTree/settings/sidebar.html:36 -#: templates/js/translated/part.js:1416 templates/navbar.html:19 +#: templates/js/translated/part.js:1597 templates/navbar.html:19 #: templates/stats.html:80 templates/stats.html:89 users/models.py:41 msgid "Parts" msgstr "" #: part/models.py:450 msgid "Invalid choice for parent part" -msgstr "" +msgstr "Parte inválida para parte principal" #: part/models.py:502 part/models.py:514 #, python-brace-format @@ -3859,8 +3883,8 @@ msgstr "" msgid "Part description" msgstr "" -#: part/models.py:770 part/templates/part/category.html:97 -#: part/templates/part/detail.html:73 +#: part/models.py:770 part/templates/part/category.html:82 +#: part/templates/part/part_base.html:302 msgid "Keywords" msgstr "" @@ -3869,9 +3893,10 @@ msgid "Part keywords to improve visibility in search results" msgstr "" #: part/models.py:778 part/models.py:2223 part/models.py:2472 -#: part/templates/part/detail.html:36 part/templates/part/set_category.html:15 +#: part/templates/part/part_base.html:265 +#: part/templates/part/set_category.html:15 #: templates/InvenTree/settings/settings.html:163 -#: templates/js/translated/part.js:1021 +#: templates/js/translated/part.js:1202 msgid "Category" msgstr "" @@ -3879,9 +3904,9 @@ msgstr "" msgid "Part category" msgstr "" -#: part/models.py:784 part/templates/part/detail.html:45 -#: templates/js/translated/part.js:550 templates/js/translated/part.js:974 -#: templates/js/translated/stock.js:1134 +#: part/models.py:784 part/templates/part/part_base.html:274 +#: templates/js/translated/part.js:557 templates/js/translated/part.js:1155 +#: templates/js/translated/stock.js:1216 msgid "IPN" msgstr "" @@ -3893,8 +3918,8 @@ msgstr "" msgid "Part revision or version number" msgstr "" -#: part/models.py:792 part/templates/part/detail.html:52 report/models.py:200 -#: templates/js/translated/part.js:554 +#: part/models.py:792 part/templates/part/part_base.html:281 +#: report/models.py:200 templates/js/translated/part.js:561 msgid "Revision" msgstr "" @@ -3902,7 +3927,7 @@ msgstr "" msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:861 part/templates/part/detail.html:113 +#: part/models.py:861 part/templates/part/part_base.html:347 msgid "Default Supplier" msgstr "" @@ -3918,7 +3943,7 @@ msgstr "" msgid "Expiry time (in days) for stock items of this part" msgstr "Tiempo de expiración (en días) para los artículos de stock de esta parte" -#: part/models.py:875 part/templates/part/part_base.html:178 +#: part/models.py:875 part/templates/part/part_base.html:196 msgid "Minimum Stock" msgstr "" @@ -4001,8 +4026,8 @@ msgstr "" msgid "Test with this name already exists for this part" msgstr "" -#: part/models.py:2310 templates/js/translated/part.js:1467 -#: templates/js/translated/stock.js:858 +#: part/models.py:2310 templates/js/translated/part.js:1648 +#: templates/js/translated/stock.js:940 msgid "Test Name" msgstr "" @@ -4018,7 +4043,7 @@ msgstr "" msgid "Enter description for this test" msgstr "" -#: part/models.py:2322 templates/js/translated/part.js:1476 +#: part/models.py:2322 templates/js/translated/part.js:1657 #: templates/js/translated/table_filters.js:276 msgid "Required" msgstr "" @@ -4027,7 +4052,7 @@ msgstr "" msgid "Is this test required to pass?" msgstr "" -#: part/models.py:2328 templates/js/translated/part.js:1484 +#: part/models.py:2328 templates/js/translated/part.js:1665 msgid "Requires Value" msgstr "" @@ -4035,7 +4060,7 @@ msgstr "" msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:2334 templates/js/translated/part.js:1491 +#: part/models.py:2334 templates/js/translated/part.js:1672 msgid "Requires Attachment" msgstr "" @@ -4083,7 +4108,7 @@ msgstr "" #: part/models.py:2561 msgid "Select parent part" -msgstr "" +msgstr "Seleccionar parte principal" #: part/models.py:2569 msgid "Sub part" @@ -4150,7 +4175,7 @@ msgstr "" msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:2686 stock/models.py:371 +#: part/models.py:2686 stock/models.py:361 msgid "Quantity must be integer value for trackable parts" msgstr "" @@ -4168,7 +4193,7 @@ msgstr "" #: part/models.py:2860 msgid "Parent BOM item" -msgstr "" +msgstr "Artículo BOM principal" #: part/models.py:2868 msgid "Substitute part" @@ -4213,7 +4238,7 @@ msgstr "" msgid "The BOM for %(part)s has not been validated." msgstr "" -#: part/templates/part/bom.html:30 part/templates/part/detail.html:357 +#: part/templates/part/bom.html:30 part/templates/part/detail.html:250 msgid "BOM actions" msgstr "" @@ -4298,68 +4323,64 @@ msgstr "" msgid "New Category" msgstr "" -#: part/templates/part/category.html:67 -msgid "Top level part category" -msgstr "" - -#: part/templates/part/category.html:79 +#: part/templates/part/category.html:76 part/templates/part/category.html:89 msgid "Category Path" msgstr "" -#: part/templates/part/category.html:84 -msgid "Category Description" +#: part/templates/part/category.html:90 +msgid "Top level part category" msgstr "" -#: part/templates/part/category.html:103 part/templates/part/category.html:194 +#: part/templates/part/category.html:110 part/templates/part/category.html:201 #: part/templates/part/category_sidebar.html:7 msgid "Subcategories" msgstr "" -#: part/templates/part/category.html:108 +#: part/templates/part/category.html:115 msgid "Parts (Including subcategories)" msgstr "" -#: part/templates/part/category.html:145 +#: part/templates/part/category.html:152 msgid "Export Part Data" msgstr "" -#: part/templates/part/category.html:146 part/templates/part/category.html:170 +#: part/templates/part/category.html:153 part/templates/part/category.html:177 msgid "Export" msgstr "" -#: part/templates/part/category.html:149 +#: part/templates/part/category.html:156 msgid "Create new part" msgstr "" -#: part/templates/part/category.html:150 templates/js/translated/bom.js:40 +#: part/templates/part/category.html:157 templates/js/translated/bom.js:40 msgid "New Part" msgstr "" -#: part/templates/part/category.html:164 +#: part/templates/part/category.html:171 msgid "Set category" msgstr "" -#: part/templates/part/category.html:164 +#: part/templates/part/category.html:171 msgid "Set Category" msgstr "" -#: part/templates/part/category.html:168 +#: part/templates/part/category.html:175 msgid "Print Labels" msgstr "" -#: part/templates/part/category.html:170 +#: part/templates/part/category.html:177 msgid "Export Data" msgstr "" -#: part/templates/part/category.html:184 +#: part/templates/part/category.html:191 msgid "Part Parameters" msgstr "" -#: part/templates/part/category.html:261 +#: part/templates/part/category.html:268 msgid "Create Part Category" msgstr "" -#: part/templates/part/category.html:288 +#: part/templates/part/category.html:295 msgid "Create Part" msgstr "" @@ -4392,7 +4413,7 @@ msgstr "" #: part/templates/part/category_delete.html:27 #, python-format msgid "If this category is deleted, these parts will be moved to the parent category %(path)s" -msgstr "" +msgstr "Si se elimina esta categoría, estas partes se moverán a la categoría principal %(path)s" #: part/templates/part/category_delete.html:29 msgid "If this category is deleted, these parts will be moved to the top-level category Teile" @@ -4402,7 +4423,7 @@ msgstr "" msgid "Import Parts" msgstr "" -#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:366 +#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:373 msgid "Duplicate Part" msgstr "" @@ -4426,167 +4447,155 @@ msgstr "" msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)" msgstr "" -#: part/templates/part/detail.html:16 -msgid "Part Details" -msgstr "" - -#: part/templates/part/detail.html:66 -msgid "Minimum stock level" -msgstr "" - -#: part/templates/part/detail.html:97 -msgid "Latest Serial Number" -msgstr "" - -#: part/templates/part/detail.html:124 +#: part/templates/part/detail.html:17 msgid "Part Stock" msgstr "" -#: part/templates/part/detail.html:136 +#: part/templates/part/detail.html:29 #, python-format msgid "Showing stock for all variants of %(full_name)s" msgstr "" -#: part/templates/part/detail.html:146 +#: part/templates/part/detail.html:39 msgid "Part Test Templates" msgstr "" -#: part/templates/part/detail.html:151 +#: part/templates/part/detail.html:44 msgid "Add Test Template" msgstr "" -#: part/templates/part/detail.html:208 +#: part/templates/part/detail.html:101 msgid "Sales Order Allocations" msgstr "" -#: part/templates/part/detail.html:249 +#: part/templates/part/detail.html:142 msgid "Part Variants" msgstr "" -#: part/templates/part/detail.html:253 +#: part/templates/part/detail.html:146 msgid "Create new variant" msgstr "" -#: part/templates/part/detail.html:254 +#: part/templates/part/detail.html:147 msgid "New Variant" msgstr "" -#: part/templates/part/detail.html:281 +#: part/templates/part/detail.html:174 msgid "Add new parameter" msgstr "" -#: part/templates/part/detail.html:315 part/templates/part/part_sidebar.html:47 +#: part/templates/part/detail.html:208 part/templates/part/part_sidebar.html:45 msgid "Related Parts" msgstr "" -#: part/templates/part/detail.html:319 part/templates/part/detail.html:320 +#: part/templates/part/detail.html:212 part/templates/part/detail.html:213 msgid "Add Related" msgstr "" -#: part/templates/part/detail.html:340 part/templates/part/part_sidebar.html:19 +#: part/templates/part/detail.html:233 part/templates/part/part_sidebar.html:17 msgid "Bill of Materials" msgstr "" -#: part/templates/part/detail.html:345 +#: part/templates/part/detail.html:238 msgid "Export actions" msgstr "" -#: part/templates/part/detail.html:349 +#: part/templates/part/detail.html:242 msgid "Export BOM" msgstr "" -#: part/templates/part/detail.html:351 +#: part/templates/part/detail.html:244 msgid "Print BOM Report" msgstr "" -#: part/templates/part/detail.html:361 +#: part/templates/part/detail.html:254 msgid "Upload BOM" msgstr "" -#: part/templates/part/detail.html:363 templates/js/translated/part.js:267 +#: part/templates/part/detail.html:256 templates/js/translated/part.js:270 msgid "Copy BOM" msgstr "" -#: part/templates/part/detail.html:365 part/views.py:755 +#: part/templates/part/detail.html:258 part/views.py:755 msgid "Validate BOM" msgstr "" -#: part/templates/part/detail.html:370 +#: part/templates/part/detail.html:263 msgid "New BOM Item" msgstr "" -#: part/templates/part/detail.html:371 +#: part/templates/part/detail.html:264 msgid "Add BOM Item" msgstr "" -#: part/templates/part/detail.html:384 +#: part/templates/part/detail.html:277 msgid "Assemblies" msgstr "" -#: part/templates/part/detail.html:401 +#: part/templates/part/detail.html:294 msgid "Part Builds" msgstr "" -#: part/templates/part/detail.html:426 +#: part/templates/part/detail.html:319 msgid "Build Order Allocations" msgstr "" -#: part/templates/part/detail.html:436 +#: part/templates/part/detail.html:329 msgid "Part Suppliers" msgstr "" -#: part/templates/part/detail.html:463 +#: part/templates/part/detail.html:356 msgid "Part Manufacturers" msgstr "" -#: part/templates/part/detail.html:479 +#: part/templates/part/detail.html:372 msgid "Delete manufacturer parts" msgstr "" -#: part/templates/part/detail.html:660 +#: part/templates/part/detail.html:553 msgid "Delete selected BOM items?" msgstr "" -#: part/templates/part/detail.html:661 +#: part/templates/part/detail.html:554 msgid "All selected BOM items will be deleted" msgstr "" -#: part/templates/part/detail.html:712 +#: part/templates/part/detail.html:605 msgid "Create BOM Item" msgstr "" -#: part/templates/part/detail.html:764 +#: part/templates/part/detail.html:657 msgid "Related Part" msgstr "" -#: part/templates/part/detail.html:772 +#: part/templates/part/detail.html:665 msgid "Add Related Part" msgstr "" -#: part/templates/part/detail.html:869 +#: part/templates/part/detail.html:760 msgid "Add Test Result Template" msgstr "" -#: part/templates/part/detail.html:926 +#: part/templates/part/detail.html:817 msgid "Edit Part Notes" msgstr "" -#: part/templates/part/detail.html:1039 +#: part/templates/part/detail.html:930 #, python-format msgid "Purchase Unit Price - %(currency)s" msgstr "" -#: part/templates/part/detail.html:1051 +#: part/templates/part/detail.html:942 #, python-format msgid "Unit Price-Cost Difference - %(currency)s" msgstr "" -#: part/templates/part/detail.html:1063 +#: part/templates/part/detail.html:954 #, python-format msgid "Supplier Unit Cost - %(currency)s" msgstr "" -#: part/templates/part/detail.html:1152 +#: part/templates/part/detail.html:1043 #, python-format msgid "Unit Price - %(currency)s" msgstr "" @@ -4668,86 +4677,108 @@ msgstr "" msgid "Delete part" msgstr "" -#: part/templates/part/part_base.html:109 +#: part/templates/part/part_base.html:112 msgid "Part is a template part (variants can be made from this part)" msgstr "" -#: part/templates/part/part_base.html:113 +#: part/templates/part/part_base.html:116 msgid "Part can be assembled from other parts" msgstr "" -#: part/templates/part/part_base.html:117 +#: part/templates/part/part_base.html:120 msgid "Part can be used in assemblies" msgstr "" -#: part/templates/part/part_base.html:121 +#: part/templates/part/part_base.html:124 msgid "Part stock is tracked by serial number" msgstr "" -#: part/templates/part/part_base.html:125 +#: part/templates/part/part_base.html:128 msgid "Part can be purchased from external suppliers" msgstr "" -#: part/templates/part/part_base.html:129 +#: part/templates/part/part_base.html:132 msgid "Part can be sold to customers" msgstr "" -#: part/templates/part/part_base.html:135 -#: part/templates/part/part_base.html:143 +#: part/templates/part/part_base.html:138 +#: part/templates/part/part_base.html:146 msgid "Part is virtual (not a physical part)" msgstr "" -#: part/templates/part/part_base.html:136 +#: part/templates/part/part_base.html:139 #: templates/js/translated/company.js:505 #: templates/js/translated/company.js:762 #: templates/js/translated/model_renderers.js:175 -#: templates/js/translated/part.js:465 templates/js/translated/part.js:542 +#: templates/js/translated/part.js:472 templates/js/translated/part.js:549 msgid "Inactive" msgstr "" -#: part/templates/part/part_base.html:155 +#: part/templates/part/part_base.html:156 +#: part/templates/part/part_base.html:579 +msgid "Show Part Details" +msgstr "" + +#: part/templates/part/part_base.html:173 #, python-format msgid "This part is a variant of %(link)s" msgstr "" -#: part/templates/part/part_base.html:172 templates/js/translated/order.js:1546 +#: part/templates/part/part_base.html:190 templates/js/translated/order.js:1545 #: templates/js/translated/table_filters.js:188 msgid "In Stock" msgstr "" -#: part/templates/part/part_base.html:185 templates/js/translated/part.js:1054 +#: part/templates/part/part_base.html:203 templates/js/translated/part.js:1235 msgid "On Order" msgstr "" -#: part/templates/part/part_base.html:192 templates/InvenTree/index.html:178 +#: part/templates/part/part_base.html:210 templates/InvenTree/index.html:178 msgid "Required for Build Orders" msgstr "" -#: part/templates/part/part_base.html:199 +#: part/templates/part/part_base.html:217 msgid "Required for Sales Orders" msgstr "" -#: part/templates/part/part_base.html:206 +#: part/templates/part/part_base.html:224 msgid "Allocated to Orders" msgstr "" -#: part/templates/part/part_base.html:221 templates/js/translated/bom.js:566 +#: part/templates/part/part_base.html:239 templates/js/translated/bom.js:566 msgid "Can Build" msgstr "" -#: part/templates/part/part_base.html:227 templates/js/translated/part.js:885 -#: templates/js/translated/part.js:1058 +#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1066 +#: templates/js/translated/part.js:1239 msgid "Building" msgstr "" -#: part/templates/part/part_base.html:320 part/templates/part/prices.html:144 +#: part/templates/part/part_base.html:295 +msgid "Minimum stock level" +msgstr "" + +#: part/templates/part/part_base.html:324 +msgid "Latest Serial Number" +msgstr "" + +#: part/templates/part/part_base.html:328 +#: stock/templates/stock/item_base.html:159 +msgid "Search for serial number" +msgstr "" + +#: part/templates/part/part_base.html:449 part/templates/part/prices.html:144 msgid "Calculate" msgstr "" -#: part/templates/part/part_base.html:363 +#: part/templates/part/part_base.html:492 msgid "No matching images found" msgstr "" +#: part/templates/part/part_base.html:573 +msgid "Hide Part Details" +msgstr "" + #: part/templates/part/part_pricing.html:22 part/templates/part/prices.html:21 msgid "Supplier Pricing" msgstr "" @@ -4805,20 +4836,15 @@ msgstr "" msgid "No pricing information is available for this part." msgstr "" -#: part/templates/part/part_sidebar.html:8 -#: templates/js/translated/stock.js:1949 -msgid "Details" -msgstr "" - -#: part/templates/part/part_sidebar.html:13 +#: part/templates/part/part_sidebar.html:11 msgid "Variants" msgstr "" -#: part/templates/part/part_sidebar.html:27 +#: part/templates/part/part_sidebar.html:25 msgid "Used In" msgstr "" -#: part/templates/part/part_sidebar.html:43 +#: part/templates/part/part_sidebar.html:41 msgid "Test Templates" msgstr "" @@ -4934,8 +4960,8 @@ msgid "Set category for the following parts" msgstr "" #: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:476 -#: templates/js/translated/part.js:429 templates/js/translated/part.js:875 -#: templates/js/translated/part.js:1062 +#: templates/js/translated/part.js:436 templates/js/translated/part.js:1056 +#: templates/js/translated/part.js:1243 msgid "No Stock" msgstr "" @@ -4995,7 +5021,7 @@ msgstr "" #: part/views.py:734 msgid "Confirm duplication of BOM from parent" -msgstr "" +msgstr "Confirmar duplicación de BOM desde principal" #: part/views.py:776 msgid "Confirm that the BOM is valid" @@ -5037,7 +5063,7 @@ msgstr "" msgid "Delete Part Parameter Template" msgstr "" -#: part/views.py:1489 templates/js/translated/part.js:310 +#: part/views.py:1489 templates/js/translated/part.js:313 msgid "Edit Part Category" msgstr "" @@ -5171,11 +5197,12 @@ msgid "Stock Item Test Report" msgstr "" #: report/templates/report/inventree_test_report_base.html:79 -#: stock/models.py:530 stock/templates/stock/item_base.html:238 +#: stock/models.py:520 stock/templates/stock/item_base.html:149 #: templates/js/translated/build.js:233 templates/js/translated/build.js:637 #: templates/js/translated/build.js:1013 #: templates/js/translated/model_renderers.js:95 -#: templates/js/translated/order.js:1288 templates/js/translated/order.js:1377 +#: templates/js/translated/order.js:1287 templates/js/translated/order.js:1376 +#: templates/js/translated/stock.js:410 msgid "Serial Number" msgstr "" @@ -5184,17 +5211,17 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:93 -#: stock/models.py:1855 +#: stock/models.py:1845 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:94 -#: stock/models.py:1861 +#: stock/models.py:1851 msgid "Result" msgstr "" #: report/templates/report/inventree_test_report_base.html:97 -#: templates/js/translated/order.js:685 templates/js/translated/stock.js:1917 +#: templates/js/translated/order.js:684 templates/js/translated/stock.js:1999 msgid "Date" msgstr "" @@ -5212,7 +5239,7 @@ msgid "Installed Items" msgstr "" #: report/templates/report/inventree_test_report_base.html:137 -#: templates/js/translated/stock.js:2177 +#: templates/js/translated/stock.js:2259 msgid "Serial" msgstr "" @@ -5220,9 +5247,9 @@ msgstr "" msgid "Quantity is required" msgstr "" -#: stock/forms.py:91 stock/forms.py:265 stock/models.py:587 -#: stock/templates/stock/item_base.html:382 -#: templates/js/translated/stock.js:1276 +#: stock/forms.py:91 stock/forms.py:265 stock/models.py:577 +#: stock/templates/stock/item_base.html:186 +#: templates/js/translated/stock.js:1358 msgid "Expiry Date" msgstr "" @@ -5270,241 +5297,241 @@ msgstr "" msgid "Confirm removal of installed stock items" msgstr "" -#: stock/models.py:60 stock/models.py:624 -#: stock/templates/stock/item_base.html:422 +#: stock/models.py:60 stock/models.py:614 +#: stock/templates/stock/item_base.html:417 msgid "Owner" msgstr "" -#: stock/models.py:61 stock/models.py:625 +#: stock/models.py:61 stock/models.py:615 msgid "Select Owner" msgstr "" -#: stock/models.py:352 +#: stock/models.py:342 msgid "StockItem with this serial number already exists" msgstr "" -#: stock/models.py:388 +#: stock/models.py:378 #, python-brace-format msgid "Part type ('{pf}') must be {pe}" msgstr "" -#: stock/models.py:398 stock/models.py:407 +#: stock/models.py:388 stock/models.py:397 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:399 +#: stock/models.py:389 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:421 +#: stock/models.py:411 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:427 +#: stock/models.py:417 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:434 +#: stock/models.py:424 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:476 +#: stock/models.py:466 msgid "Parent Stock Item" -msgstr "" +msgstr "Artículo de stock principal" -#: stock/models.py:485 +#: stock/models.py:475 msgid "Base part" msgstr "" -#: stock/models.py:493 +#: stock/models.py:483 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:498 stock/templates/stock/location.html:12 +#: stock/models.py:488 stock/templates/stock/location.html:12 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" msgstr "" -#: stock/models.py:501 +#: stock/models.py:491 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:508 +#: stock/models.py:498 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:513 stock/templates/stock/item_base.html:271 +#: stock/models.py:503 stock/templates/stock/item_base.html:299 msgid "Installed In" msgstr "" -#: stock/models.py:516 +#: stock/models.py:506 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:532 +#: stock/models.py:522 msgid "Serial number for this item" msgstr "" -#: stock/models.py:546 +#: stock/models.py:536 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:550 +#: stock/models.py:540 msgid "Stock Quantity" msgstr "" -#: stock/models.py:559 +#: stock/models.py:549 msgid "Source Build" msgstr "" -#: stock/models.py:561 +#: stock/models.py:551 msgid "Build for this stock item" msgstr "" -#: stock/models.py:572 +#: stock/models.py:562 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:575 +#: stock/models.py:565 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:581 +#: stock/models.py:571 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:588 +#: stock/models.py:578 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:601 +#: stock/models.py:591 msgid "Delete on deplete" msgstr "" -#: stock/models.py:601 +#: stock/models.py:591 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:611 stock/templates/stock/item.html:111 +#: stock/models.py:601 stock/templates/stock/item.html:111 msgid "Stock Item Notes" msgstr "" -#: stock/models.py:620 +#: stock/models.py:610 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:630 +#: stock/models.py:620 msgid "Scheduled for deletion" msgstr "" -#: stock/models.py:631 +#: stock/models.py:621 msgid "This StockItem will be deleted by the background worker" msgstr "" -#: stock/models.py:1094 +#: stock/models.py:1084 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1100 +#: stock/models.py:1090 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1106 +#: stock/models.py:1096 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({n})" msgstr "" -#: stock/models.py:1109 +#: stock/models.py:1099 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1112 +#: stock/models.py:1102 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1119 +#: stock/models.py:1109 #, python-brace-format msgid "Serial numbers already exist: {exists}" msgstr "" -#: stock/models.py:1277 +#: stock/models.py:1267 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:1775 +#: stock/models.py:1765 msgid "Entry notes" msgstr "" -#: stock/models.py:1832 +#: stock/models.py:1822 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:1838 +#: stock/models.py:1828 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:1856 +#: stock/models.py:1846 msgid "Test name" msgstr "" -#: stock/models.py:1862 templates/js/translated/table_filters.js:266 +#: stock/models.py:1852 templates/js/translated/table_filters.js:266 msgid "Test result" msgstr "" -#: stock/models.py:1868 +#: stock/models.py:1858 msgid "Test output value" msgstr "" -#: stock/models.py:1875 +#: stock/models.py:1865 msgid "Test result attachment" msgstr "" -#: stock/models.py:1881 +#: stock/models.py:1871 msgid "Test notes" msgstr "" -#: stock/serializers.py:166 +#: stock/serializers.py:171 msgid "Purchase price of this stock item" msgstr "" -#: stock/serializers.py:173 +#: stock/serializers.py:178 msgid "Purchase currency of this stock item" msgstr "" -#: stock/serializers.py:287 +#: stock/serializers.py:292 msgid "Enter number of stock items to serialize" msgstr "" -#: stock/serializers.py:302 +#: stock/serializers.py:307 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "" -#: stock/serializers.py:308 +#: stock/serializers.py:313 msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:319 stock/serializers.py:686 +#: stock/serializers.py:324 stock/serializers.py:691 msgid "Destination stock location" msgstr "" -#: stock/serializers.py:326 +#: stock/serializers.py:331 msgid "Optional note field" msgstr "" -#: stock/serializers.py:339 +#: stock/serializers.py:344 msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:556 +#: stock/serializers.py:561 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:584 +#: stock/serializers.py:589 msgid "Stock transaction notes" msgstr "" -#: stock/serializers.py:594 +#: stock/serializers.py:599 msgid "A list of stock items must be provided" msgstr "" @@ -5629,125 +5656,131 @@ msgstr "" msgid "Install" msgstr "" -#: stock/templates/stock/item_base.html:106 +#: stock/templates/stock/item_base.html:108 msgid "Convert to variant" msgstr "" -#: stock/templates/stock/item_base.html:109 +#: stock/templates/stock/item_base.html:111 msgid "Duplicate stock item" msgstr "" -#: stock/templates/stock/item_base.html:111 +#: stock/templates/stock/item_base.html:113 msgid "Edit stock item" msgstr "" -#: stock/templates/stock/item_base.html:114 +#: stock/templates/stock/item_base.html:116 msgid "Delete stock item" msgstr "" -#: stock/templates/stock/item_base.html:136 -#: stock/templates/stock/item_base.html:386 -#: templates/js/translated/table_filters.js:247 -msgid "Expired" +#: stock/templates/stock/item_base.html:154 +msgid "previous page" msgstr "" -#: stock/templates/stock/item_base.html:146 -#: stock/templates/stock/item_base.html:388 -#: templates/js/translated/table_filters.js:253 -msgid "Stale" +#: stock/templates/stock/item_base.html:154 +msgid "Navigate to previous serial number" msgstr "" -#: stock/templates/stock/item_base.html:161 -msgid "You are not in the list of owners of this item. This stock item cannot be edited." +#: stock/templates/stock/item_base.html:163 +msgid "next page" msgstr "" -#: stock/templates/stock/item_base.html:168 -msgid "This stock item is in production and cannot be edited." -msgstr "" - -#: stock/templates/stock/item_base.html:169 -msgid "Edit the stock item from the build view." -msgstr "" - -#: stock/templates/stock/item_base.html:182 -msgid "This stock item has not passed all required tests" +#: stock/templates/stock/item_base.html:163 +msgid "Navigate to next serial number" msgstr "" #: stock/templates/stock/item_base.html:190 #, python-format -msgid "This stock item is allocated to Sales Order %(link)s (Quantity: %(qty)s)" -msgstr "" - -#: stock/templates/stock/item_base.html:198 -#, python-format -msgid "This stock item is allocated to Build %(link)s (Quantity: %(qty)s)" -msgstr "" - -#: stock/templates/stock/item_base.html:204 -msgid "This stock item is serialized - it has a unique serial number and the quantity cannot be adjusted." -msgstr "" - -#: stock/templates/stock/item_base.html:208 -msgid "This stock item cannot be deleted as it has child items" -msgstr "" - -#: stock/templates/stock/item_base.html:212 -msgid "This stock item will be automatically deleted when all stock is depleted." -msgstr "" - -#: stock/templates/stock/item_base.html:241 -msgid "previous page" -msgstr "" - -#: stock/templates/stock/item_base.html:247 -msgid "next page" -msgstr "" - -#: stock/templates/stock/item_base.html:290 -#: templates/js/translated/build.js:1035 -msgid "No location set" -msgstr "" - -#: stock/templates/stock/item_base.html:297 -msgid "Barcode Identifier" -msgstr "" - -#: stock/templates/stock/item_base.html:339 -msgid "Parent Item" -msgstr "" - -#: stock/templates/stock/item_base.html:357 -msgid "No manufacturer set" -msgstr "" - -#: stock/templates/stock/item_base.html:386 -#, python-format msgid "This StockItem expired on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:388 +#: stock/templates/stock/item_base.html:190 +#: templates/js/translated/table_filters.js:247 +msgid "Expired" +msgstr "" + +#: stock/templates/stock/item_base.html:192 #, python-format msgid "This StockItem expires on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:395 -#: templates/js/translated/stock.js:1289 +#: stock/templates/stock/item_base.html:192 +#: templates/js/translated/table_filters.js:253 +msgid "Stale" +msgstr "" + +#: stock/templates/stock/item_base.html:199 +#: templates/js/translated/stock.js:1371 msgid "Last Updated" msgstr "" -#: stock/templates/stock/item_base.html:400 +#: stock/templates/stock/item_base.html:204 msgid "Last Stocktake" msgstr "Último Inventario" -#: stock/templates/stock/item_base.html:404 +#: stock/templates/stock/item_base.html:208 msgid "No stocktake performed" msgstr "Ningún inventario realizado" -#: stock/templates/stock/item_base.html:415 +#: stock/templates/stock/item_base.html:226 +msgid "You are not in the list of owners of this item. This stock item cannot be edited." +msgstr "" + +#: stock/templates/stock/item_base.html:233 +msgid "This stock item is in production and cannot be edited." +msgstr "" + +#: stock/templates/stock/item_base.html:234 +msgid "Edit the stock item from the build view." +msgstr "" + +#: stock/templates/stock/item_base.html:247 +msgid "This stock item has not passed all required tests" +msgstr "" + +#: stock/templates/stock/item_base.html:255 +#, python-format +msgid "This stock item is allocated to Sales Order %(link)s (Quantity: %(qty)s)" +msgstr "" + +#: stock/templates/stock/item_base.html:263 +#, python-format +msgid "This stock item is allocated to Build %(link)s (Quantity: %(qty)s)" +msgstr "" + +#: stock/templates/stock/item_base.html:269 +msgid "This stock item is serialized - it has a unique serial number and the quantity cannot be adjusted." +msgstr "" + +#: stock/templates/stock/item_base.html:273 +msgid "This stock item cannot be deleted as it has child items" +msgstr "" + +#: stock/templates/stock/item_base.html:277 +msgid "This stock item will be automatically deleted when all stock is depleted." +msgstr "" + +#: stock/templates/stock/item_base.html:318 +#: templates/js/translated/build.js:1035 +msgid "No location set" +msgstr "" + +#: stock/templates/stock/item_base.html:325 +msgid "Barcode Identifier" +msgstr "" + +#: stock/templates/stock/item_base.html:367 +msgid "Parent Item" +msgstr "Artículo principal" + +#: stock/templates/stock/item_base.html:385 +msgid "No manufacturer set" +msgstr "" + +#: stock/templates/stock/item_base.html:410 msgid "Tests" msgstr "" -#: stock/templates/stock/item_base.html:505 +#: stock/templates/stock/item_base.html:500 msgid "Edit Stock Status" msgstr "" @@ -5825,30 +5858,35 @@ msgstr "" msgid "New Location" msgstr "" -#: stock/templates/stock/location.html:86 +#: stock/templates/stock/location.html:95 +#: stock/templates/stock/location.html:101 +msgid "Location Path" +msgstr "" + +#: stock/templates/stock/location.html:102 msgid "Top level stock location" msgstr "" -#: stock/templates/stock/location.html:95 +#: stock/templates/stock/location.html:115 msgid "You are not in the list of owners of this location. This stock location cannot be edited." msgstr "" -#: stock/templates/stock/location.html:113 -#: stock/templates/stock/location.html:160 +#: stock/templates/stock/location.html:128 +#: stock/templates/stock/location.html:175 #: stock/templates/stock/location_sidebar.html:5 msgid "Sublocations" msgstr "" -#: stock/templates/stock/location.html:127 templates/InvenTree/search.html:170 +#: stock/templates/stock/location.html:142 templates/InvenTree/search.html:170 #: templates/stats.html:97 users/models.py:42 msgid "Stock Locations" msgstr "" -#: stock/templates/stock/location.html:167 templates/stock_table.html:30 +#: stock/templates/stock/location.html:182 templates/stock_table.html:30 msgid "Printing Actions" msgstr "" -#: stock/templates/stock/location.html:171 templates/stock_table.html:34 +#: stock/templates/stock/location.html:186 templates/stock_table.html:34 msgid "Print labels" msgstr "" @@ -5942,7 +5980,7 @@ msgstr "" msgid "Uninstall Stock Items" msgstr "" -#: stock/views.py:760 templates/js/translated/stock.js:648 +#: stock/views.py:760 templates/js/translated/stock.js:730 msgid "Confirm stock adjustment" msgstr "" @@ -5950,7 +5988,7 @@ msgstr "" msgid "Uninstalled stock items" msgstr "" -#: stock/views.py:793 templates/js/translated/stock.js:318 +#: stock/views.py:793 templates/js/translated/stock.js:319 msgid "Edit Stock Item" msgstr "" @@ -5962,7 +6000,7 @@ msgstr "" msgid "Create new Stock Item" msgstr "" -#: stock/views.py:1186 templates/js/translated/stock.js:298 +#: stock/views.py:1186 templates/js/translated/stock.js:299 msgid "Duplicate Stock Item" msgstr "" @@ -6868,7 +6906,7 @@ msgstr "" msgid "Unlink" msgstr "" -#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:600 +#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:682 msgid "Remove stock item" msgstr "" @@ -6963,7 +7001,7 @@ msgid "View BOM" msgstr "" #: templates/js/translated/bom.js:608 templates/js/translated/build.js:1183 -#: templates/js/translated/order.js:1320 +#: templates/js/translated/order.js:1319 msgid "Actions" msgstr "" @@ -7001,7 +7039,7 @@ msgstr "" #: templates/js/translated/bom.js:996 msgid "Inherited from parent BOM" -msgstr "" +msgstr "Heredado de BOM principal" #: templates/js/translated/build.js:78 msgid "Edit Build Order" @@ -7055,7 +7093,7 @@ msgstr "" msgid "No build order allocations found" msgstr "" -#: templates/js/translated/build.js:424 templates/js/translated/order.js:1194 +#: templates/js/translated/build.js:424 templates/js/translated/order.js:1193 msgid "Location not specified" msgstr "" @@ -7064,12 +7102,12 @@ msgid "No active build outputs found" msgstr "" #: templates/js/translated/build.js:1052 templates/js/translated/build.js:1760 -#: templates/js/translated/order.js:1327 +#: templates/js/translated/order.js:1326 msgid "Edit stock allocation" msgstr "" #: templates/js/translated/build.js:1054 templates/js/translated/build.js:1761 -#: templates/js/translated/order.js:1328 +#: templates/js/translated/order.js:1327 msgid "Delete stock allocation" msgstr "" @@ -7090,11 +7128,11 @@ msgid "Quantity Per" msgstr "" #: templates/js/translated/build.js:1134 templates/js/translated/build.js:1360 -#: templates/js/translated/build.js:1756 templates/js/translated/order.js:1557 +#: templates/js/translated/build.js:1756 templates/js/translated/order.js:1556 msgid "Allocated" msgstr "" -#: templates/js/translated/build.js:1190 templates/js/translated/order.js:1611 +#: templates/js/translated/build.js:1190 templates/js/translated/order.js:1610 msgid "Build stock" msgstr "" @@ -7102,7 +7140,7 @@ msgstr "" msgid "Order stock" msgstr "" -#: templates/js/translated/build.js:1197 templates/js/translated/order.js:1604 +#: templates/js/translated/build.js:1197 templates/js/translated/order.js:1603 msgid "Allocate stock" msgstr "" @@ -7143,9 +7181,9 @@ msgstr "" msgid "No builds matching query" msgstr "" -#: templates/js/translated/build.js:1593 templates/js/translated/part.js:966 -#: templates/js/translated/part.js:1377 templates/js/translated/stock.js:1094 -#: templates/js/translated/stock.js:1871 +#: templates/js/translated/build.js:1593 templates/js/translated/part.js:1147 +#: templates/js/translated/part.js:1558 templates/js/translated/stock.js:1176 +#: templates/js/translated/stock.js:1953 msgid "Select" msgstr "" @@ -7153,7 +7191,7 @@ msgstr "" msgid "Build order is overdue" msgstr "" -#: templates/js/translated/build.js:1674 templates/js/translated/stock.js:2090 +#: templates/js/translated/build.js:1674 templates/js/translated/stock.js:2172 msgid "No user information" msgstr "" @@ -7197,10 +7235,6 @@ msgstr "" msgid "Delete Supplier Part" msgstr "" -#: templates/js/translated/company.js:265 -msgid "Edit Company" -msgstr "" - #: templates/js/translated/company.js:286 msgid "Add new Company" msgstr "" @@ -7230,34 +7264,34 @@ msgid "No manufacturer parts found" msgstr "" #: templates/js/translated/company.js:497 -#: templates/js/translated/company.js:754 templates/js/translated/part.js:449 -#: templates/js/translated/part.js:534 +#: templates/js/translated/company.js:754 templates/js/translated/part.js:456 +#: templates/js/translated/part.js:541 msgid "Template part" msgstr "" #: templates/js/translated/company.js:501 -#: templates/js/translated/company.js:758 templates/js/translated/part.js:453 -#: templates/js/translated/part.js:538 +#: templates/js/translated/company.js:758 templates/js/translated/part.js:460 +#: templates/js/translated/part.js:545 msgid "Assembled part" msgstr "" -#: templates/js/translated/company.js:628 templates/js/translated/part.js:626 +#: templates/js/translated/company.js:628 templates/js/translated/part.js:633 msgid "No parameters found" msgstr "" -#: templates/js/translated/company.js:665 templates/js/translated/part.js:668 +#: templates/js/translated/company.js:665 templates/js/translated/part.js:675 msgid "Edit parameter" msgstr "" -#: templates/js/translated/company.js:666 templates/js/translated/part.js:669 +#: templates/js/translated/company.js:666 templates/js/translated/part.js:676 msgid "Delete parameter" msgstr "" -#: templates/js/translated/company.js:685 templates/js/translated/part.js:686 +#: templates/js/translated/company.js:685 templates/js/translated/part.js:693 msgid "Edit Parameter" msgstr "" -#: templates/js/translated/company.js:696 templates/js/translated/part.js:698 +#: templates/js/translated/company.js:696 templates/js/translated/part.js:705 msgid "Delete Parameter" msgstr "" @@ -7346,7 +7380,7 @@ msgid "NO" msgstr "" #: templates/js/translated/label.js:29 templates/js/translated/report.js:118 -#: templates/js/translated/stock.js:624 +#: templates/js/translated/stock.js:706 msgid "Select Stock Items" msgstr "" @@ -7502,11 +7536,11 @@ msgstr "" msgid "Export Order" msgstr "" -#: templates/js/translated/order.js:211 templates/js/translated/stock.js:423 +#: templates/js/translated/order.js:211 templates/js/translated/stock.js:505 msgid "Format" msgstr "" -#: templates/js/translated/order.js:212 templates/js/translated/stock.js:424 +#: templates/js/translated/order.js:212 templates/js/translated/stock.js:506 msgid "Select file format" msgstr "" @@ -7522,7 +7556,7 @@ msgstr "" msgid "Quantity to receive" msgstr "" -#: templates/js/translated/order.js:360 templates/js/translated/stock.js:1673 +#: templates/js/translated/order.js:360 templates/js/translated/stock.js:1755 msgid "Stock Status" msgstr "" @@ -7546,321 +7580,321 @@ msgstr "" msgid "Receive Purchase Order Items" msgstr "" -#: templates/js/translated/order.js:627 +#: templates/js/translated/order.js:627 templates/js/translated/part.js:746 msgid "No purchase orders found" msgstr "" -#: templates/js/translated/order.js:652 templates/js/translated/order.js:1063 +#: templates/js/translated/order.js:659 templates/js/translated/order.js:1062 msgid "Order is overdue" msgstr "" -#: templates/js/translated/order.js:772 templates/js/translated/order.js:1646 +#: templates/js/translated/order.js:771 templates/js/translated/order.js:1645 msgid "Edit Line Item" msgstr "" -#: templates/js/translated/order.js:784 templates/js/translated/order.js:1657 +#: templates/js/translated/order.js:783 templates/js/translated/order.js:1656 msgid "Delete Line Item" msgstr "" -#: templates/js/translated/order.js:823 +#: templates/js/translated/order.js:822 msgid "No line items found" msgstr "" -#: templates/js/translated/order.js:850 templates/js/translated/order.js:1467 +#: templates/js/translated/order.js:849 templates/js/translated/order.js:1466 msgid "Total" msgstr "" -#: templates/js/translated/order.js:904 templates/js/translated/order.js:1492 -#: templates/js/translated/part.js:1594 templates/js/translated/part.js:1805 +#: templates/js/translated/order.js:903 templates/js/translated/order.js:1491 +#: templates/js/translated/part.js:1775 templates/js/translated/part.js:1986 msgid "Unit Price" msgstr "" -#: templates/js/translated/order.js:919 templates/js/translated/order.js:1508 +#: templates/js/translated/order.js:918 templates/js/translated/order.js:1507 msgid "Total Price" msgstr "" -#: templates/js/translated/order.js:997 templates/js/translated/order.js:1617 +#: templates/js/translated/order.js:996 templates/js/translated/order.js:1616 msgid "Edit line item" msgstr "" -#: templates/js/translated/order.js:998 +#: templates/js/translated/order.js:997 msgid "Delete line item" msgstr "" -#: templates/js/translated/order.js:1002 +#: templates/js/translated/order.js:1001 templates/js/translated/part.js:878 msgid "Receive line item" msgstr "" -#: templates/js/translated/order.js:1039 +#: templates/js/translated/order.js:1038 msgid "No sales orders found" msgstr "" -#: templates/js/translated/order.js:1077 +#: templates/js/translated/order.js:1076 msgid "Invalid Customer" msgstr "" -#: templates/js/translated/order.js:1155 +#: templates/js/translated/order.js:1154 msgid "No sales order allocations found" msgstr "" -#: templates/js/translated/order.js:1248 +#: templates/js/translated/order.js:1247 msgid "Edit Stock Allocation" msgstr "" -#: templates/js/translated/order.js:1265 +#: templates/js/translated/order.js:1264 msgid "Confirm Delete Operation" msgstr "" -#: templates/js/translated/order.js:1266 +#: templates/js/translated/order.js:1265 msgid "Delete Stock Allocation" msgstr "" -#: templates/js/translated/order.js:1308 +#: templates/js/translated/order.js:1307 msgid "Stock location not specified" msgstr "" -#: templates/js/translated/order.js:1557 +#: templates/js/translated/order.js:1556 msgid "Fulfilled" msgstr "" -#: templates/js/translated/order.js:1601 +#: templates/js/translated/order.js:1600 msgid "Allocate serial numbers" msgstr "" -#: templates/js/translated/order.js:1607 +#: templates/js/translated/order.js:1606 msgid "Purchase stock" msgstr "" -#: templates/js/translated/order.js:1614 templates/js/translated/order.js:1793 +#: templates/js/translated/order.js:1613 templates/js/translated/order.js:1792 msgid "Calculate price" msgstr "" -#: templates/js/translated/order.js:1618 +#: templates/js/translated/order.js:1617 msgid "Delete line item " msgstr "" -#: templates/js/translated/order.js:1741 +#: templates/js/translated/order.js:1740 msgid "Allocate Stock Item" msgstr "" -#: templates/js/translated/order.js:1801 +#: templates/js/translated/order.js:1800 msgid "Update Unit Price" msgstr "" -#: templates/js/translated/order.js:1815 +#: templates/js/translated/order.js:1814 msgid "No matching line items" msgstr "" -#: templates/js/translated/part.js:51 +#: templates/js/translated/part.js:52 msgid "Part Attributes" msgstr "" -#: templates/js/translated/part.js:55 +#: templates/js/translated/part.js:56 msgid "Part Creation Options" msgstr "" -#: templates/js/translated/part.js:59 +#: templates/js/translated/part.js:60 msgid "Part Duplication Options" msgstr "" -#: templates/js/translated/part.js:63 +#: templates/js/translated/part.js:64 msgid "Supplier Options" msgstr "" -#: templates/js/translated/part.js:77 +#: templates/js/translated/part.js:78 msgid "Add Part Category" msgstr "" -#: templates/js/translated/part.js:166 +#: templates/js/translated/part.js:162 msgid "Create Initial Stock" msgstr "" -#: templates/js/translated/part.js:167 +#: templates/js/translated/part.js:163 msgid "Create an initial stock item for this part" msgstr "" -#: templates/js/translated/part.js:174 +#: templates/js/translated/part.js:170 msgid "Initial Stock Quantity" msgstr "" -#: templates/js/translated/part.js:175 +#: templates/js/translated/part.js:171 msgid "Specify initial stock quantity for this part" msgstr "" -#: templates/js/translated/part.js:182 +#: templates/js/translated/part.js:178 msgid "Select destination stock location" msgstr "" -#: templates/js/translated/part.js:193 +#: templates/js/translated/part.js:196 msgid "Copy Category Parameters" msgstr "" -#: templates/js/translated/part.js:194 +#: templates/js/translated/part.js:197 msgid "Copy parameter templates from selected part category" msgstr "" -#: templates/js/translated/part.js:202 +#: templates/js/translated/part.js:205 msgid "Add Supplier Data" msgstr "" -#: templates/js/translated/part.js:203 +#: templates/js/translated/part.js:206 msgid "Create initial supplier data for this part" msgstr "" -#: templates/js/translated/part.js:259 +#: templates/js/translated/part.js:262 msgid "Copy Image" msgstr "" -#: templates/js/translated/part.js:260 +#: templates/js/translated/part.js:263 msgid "Copy image from original part" msgstr "" -#: templates/js/translated/part.js:268 +#: templates/js/translated/part.js:271 msgid "Copy bill of materials from original part" msgstr "" -#: templates/js/translated/part.js:275 +#: templates/js/translated/part.js:278 msgid "Copy Parameters" msgstr "" -#: templates/js/translated/part.js:276 +#: templates/js/translated/part.js:279 msgid "Copy parameter data from original part" msgstr "" -#: templates/js/translated/part.js:289 +#: templates/js/translated/part.js:292 msgid "Parent part category" -msgstr "" +msgstr "Categoría principal de parte" -#: templates/js/translated/part.js:333 +#: templates/js/translated/part.js:336 msgid "Edit Part" msgstr "" -#: templates/js/translated/part.js:335 +#: templates/js/translated/part.js:338 msgid "Part edited" msgstr "" -#: templates/js/translated/part.js:403 +#: templates/js/translated/part.js:410 msgid "You are subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:405 +#: templates/js/translated/part.js:412 msgid "You have subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:410 +#: templates/js/translated/part.js:417 msgid "Subscribe to notifications for this item" msgstr "" -#: templates/js/translated/part.js:412 +#: templates/js/translated/part.js:419 msgid "You have unsubscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:441 templates/js/translated/part.js:526 +#: templates/js/translated/part.js:448 templates/js/translated/part.js:533 msgid "Trackable part" msgstr "" -#: templates/js/translated/part.js:445 templates/js/translated/part.js:530 +#: templates/js/translated/part.js:452 templates/js/translated/part.js:537 msgid "Virtual part" msgstr "" -#: templates/js/translated/part.js:457 +#: templates/js/translated/part.js:464 msgid "Subscribed part" msgstr "" -#: templates/js/translated/part.js:461 +#: templates/js/translated/part.js:468 msgid "Salable part" msgstr "" -#: templates/js/translated/part.js:576 +#: templates/js/translated/part.js:583 msgid "No variants found" msgstr "" -#: templates/js/translated/part.js:765 +#: templates/js/translated/part.js:946 msgid "Delete part relationship" msgstr "" -#: templates/js/translated/part.js:789 +#: templates/js/translated/part.js:970 msgid "Delete Part Relationship" msgstr "" -#: templates/js/translated/part.js:856 templates/js/translated/part.js:1116 +#: templates/js/translated/part.js:1037 templates/js/translated/part.js:1297 msgid "No parts found" msgstr "" -#: templates/js/translated/part.js:1026 +#: templates/js/translated/part.js:1207 msgid "No category" msgstr "" -#: templates/js/translated/part.js:1049 +#: templates/js/translated/part.js:1230 #: templates/js/translated/table_filters.js:381 msgid "Low stock" msgstr "" -#: templates/js/translated/part.js:1140 templates/js/translated/part.js:1312 -#: templates/js/translated/stock.js:1832 +#: templates/js/translated/part.js:1321 templates/js/translated/part.js:1493 +#: templates/js/translated/stock.js:1914 msgid "Display as list" msgstr "" -#: templates/js/translated/part.js:1156 +#: templates/js/translated/part.js:1337 msgid "Display as grid" msgstr "" -#: templates/js/translated/part.js:1331 templates/js/translated/stock.js:1851 +#: templates/js/translated/part.js:1512 templates/js/translated/stock.js:1933 msgid "Display as tree" msgstr "" -#: templates/js/translated/part.js:1395 +#: templates/js/translated/part.js:1576 msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:1409 templates/js/translated/stock.js:1895 +#: templates/js/translated/part.js:1590 templates/js/translated/stock.js:1977 msgid "Path" msgstr "" -#: templates/js/translated/part.js:1453 +#: templates/js/translated/part.js:1634 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:1504 templates/js/translated/stock.js:816 +#: templates/js/translated/part.js:1685 templates/js/translated/stock.js:898 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:1505 templates/js/translated/stock.js:817 +#: templates/js/translated/part.js:1686 templates/js/translated/stock.js:899 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:1511 +#: templates/js/translated/part.js:1692 msgid "This test is defined for a parent part" -msgstr "" +msgstr "Esta prueba está definida para una parte principal" -#: templates/js/translated/part.js:1533 +#: templates/js/translated/part.js:1714 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:1547 +#: templates/js/translated/part.js:1728 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:1572 +#: templates/js/translated/part.js:1753 #, python-brace-format msgid "No ${human_name} information found" msgstr "" -#: templates/js/translated/part.js:1627 +#: templates/js/translated/part.js:1808 #, python-brace-format msgid "Edit ${human_name}" msgstr "" -#: templates/js/translated/part.js:1628 +#: templates/js/translated/part.js:1809 #, python-brace-format msgid "Delete ${human_name}" msgstr "" -#: templates/js/translated/part.js:1729 +#: templates/js/translated/part.js:1910 msgid "Single Price" msgstr "" -#: templates/js/translated/part.js:1748 +#: templates/js/translated/part.js:1929 msgid "Single Price Difference" msgstr "" @@ -7930,276 +7964,300 @@ msgstr "" msgid "Sales Order(s) must be selected before printing report" msgstr "" -#: templates/js/translated/stock.js:70 +#: templates/js/translated/stock.js:71 msgid "Serialize Stock Item" msgstr "" -#: templates/js/translated/stock.js:88 templates/js/translated/stock.js:167 +#: templates/js/translated/stock.js:89 templates/js/translated/stock.js:168 msgid "Next available serial number" msgstr "" -#: templates/js/translated/stock.js:90 templates/js/translated/stock.js:169 +#: templates/js/translated/stock.js:91 templates/js/translated/stock.js:170 msgid "Latest serial number" msgstr "" -#: templates/js/translated/stock.js:104 +#: templates/js/translated/stock.js:105 msgid "Parent stock location" -msgstr "" +msgstr "Ubicación del stock principal" -#: templates/js/translated/stock.js:140 +#: templates/js/translated/stock.js:141 msgid "New Stock Location" msgstr "" -#: templates/js/translated/stock.js:180 +#: templates/js/translated/stock.js:181 msgid "This part cannot be serialized" msgstr "" -#: templates/js/translated/stock.js:219 +#: templates/js/translated/stock.js:220 msgid "Enter initial quantity for this stock item" msgstr "" -#: templates/js/translated/stock.js:225 +#: templates/js/translated/stock.js:226 msgid "Enter serial numbers for new stock (or leave blank)" msgstr "" -#: templates/js/translated/stock.js:368 +#: templates/js/translated/stock.js:369 msgid "Created new stock item" msgstr "" -#: templates/js/translated/stock.js:381 +#: templates/js/translated/stock.js:382 msgid "Created multiple stock items" msgstr "" -#: templates/js/translated/stock.js:420 +#: templates/js/translated/stock.js:407 +msgid "Find Serial Number" +msgstr "" + +#: templates/js/translated/stock.js:411 templates/js/translated/stock.js:412 +msgid "Enter serial number" +msgstr "" + +#: templates/js/translated/stock.js:428 +msgid "Enter a serial number" +msgstr "" + +#: templates/js/translated/stock.js:448 +msgid "No matching serial number" +msgstr "" + +#: templates/js/translated/stock.js:457 +msgid "More than one matching result found" +msgstr "" + +#: templates/js/translated/stock.js:502 msgid "Export Stock" msgstr "" -#: templates/js/translated/stock.js:431 +#: templates/js/translated/stock.js:513 msgid "Include Sublocations" msgstr "" -#: templates/js/translated/stock.js:432 +#: templates/js/translated/stock.js:514 msgid "Include stock items in sublocations" msgstr "" -#: templates/js/translated/stock.js:474 +#: templates/js/translated/stock.js:556 msgid "Transfer Stock" msgstr "" -#: templates/js/translated/stock.js:475 +#: templates/js/translated/stock.js:557 msgid "Move" msgstr "" -#: templates/js/translated/stock.js:481 +#: templates/js/translated/stock.js:563 msgid "Count Stock" msgstr "" -#: templates/js/translated/stock.js:482 +#: templates/js/translated/stock.js:564 msgid "Count" msgstr "" -#: templates/js/translated/stock.js:486 +#: templates/js/translated/stock.js:568 msgid "Remove Stock" msgstr "" -#: templates/js/translated/stock.js:487 +#: templates/js/translated/stock.js:569 msgid "Take" msgstr "" -#: templates/js/translated/stock.js:491 +#: templates/js/translated/stock.js:573 msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:492 users/models.py:200 +#: templates/js/translated/stock.js:574 users/models.py:200 msgid "Add" msgstr "" -#: templates/js/translated/stock.js:496 templates/stock_table.html:56 +#: templates/js/translated/stock.js:578 templates/stock_table.html:56 msgid "Delete Stock" msgstr "" -#: templates/js/translated/stock.js:585 +#: templates/js/translated/stock.js:667 msgid "Quantity cannot be adjusted for serialized stock" msgstr "" -#: templates/js/translated/stock.js:585 +#: templates/js/translated/stock.js:667 msgid "Specify stock quantity" msgstr "" -#: templates/js/translated/stock.js:625 +#: templates/js/translated/stock.js:707 msgid "You must select at least one available stock item" msgstr "" -#: templates/js/translated/stock.js:783 +#: templates/js/translated/stock.js:865 msgid "PASS" msgstr "" -#: templates/js/translated/stock.js:785 +#: templates/js/translated/stock.js:867 msgid "FAIL" msgstr "" -#: templates/js/translated/stock.js:790 +#: templates/js/translated/stock.js:872 msgid "NO RESULT" msgstr "" -#: templates/js/translated/stock.js:812 +#: templates/js/translated/stock.js:894 msgid "Add test result" msgstr "" -#: templates/js/translated/stock.js:838 +#: templates/js/translated/stock.js:920 msgid "No test results found" msgstr "" -#: templates/js/translated/stock.js:895 +#: templates/js/translated/stock.js:977 msgid "Test Date" msgstr "" -#: templates/js/translated/stock.js:1002 +#: templates/js/translated/stock.js:1084 msgid "In production" msgstr "" -#: templates/js/translated/stock.js:1006 +#: templates/js/translated/stock.js:1088 msgid "Installed in Stock Item" msgstr "" -#: templates/js/translated/stock.js:1010 +#: templates/js/translated/stock.js:1092 msgid "Shipped to customer" msgstr "" -#: templates/js/translated/stock.js:1014 +#: templates/js/translated/stock.js:1096 msgid "Assigned to Sales Order" msgstr "" -#: templates/js/translated/stock.js:1020 +#: templates/js/translated/stock.js:1102 msgid "No stock location set" msgstr "" -#: templates/js/translated/stock.js:1178 +#: templates/js/translated/stock.js:1260 msgid "Stock item is in production" msgstr "" -#: templates/js/translated/stock.js:1183 +#: templates/js/translated/stock.js:1265 msgid "Stock item assigned to sales order" msgstr "" -#: templates/js/translated/stock.js:1186 +#: templates/js/translated/stock.js:1268 msgid "Stock item assigned to customer" msgstr "" -#: templates/js/translated/stock.js:1190 +#: templates/js/translated/stock.js:1272 msgid "Stock item has expired" msgstr "" -#: templates/js/translated/stock.js:1192 +#: templates/js/translated/stock.js:1274 msgid "Stock item will expire soon" msgstr "" -#: templates/js/translated/stock.js:1196 +#: templates/js/translated/stock.js:1278 msgid "Stock item has been allocated" msgstr "" -#: templates/js/translated/stock.js:1200 +#: templates/js/translated/stock.js:1282 msgid "Stock item has been installed in another item" msgstr "" -#: templates/js/translated/stock.js:1207 +#: templates/js/translated/stock.js:1289 msgid "Stock item has been rejected" msgstr "" -#: templates/js/translated/stock.js:1209 +#: templates/js/translated/stock.js:1291 msgid "Stock item is lost" msgstr "" -#: templates/js/translated/stock.js:1211 +#: templates/js/translated/stock.js:1293 msgid "Stock item is destroyed" msgstr "" -#: templates/js/translated/stock.js:1215 +#: templates/js/translated/stock.js:1297 #: templates/js/translated/table_filters.js:183 msgid "Depleted" msgstr "" -#: templates/js/translated/stock.js:1265 +#: templates/js/translated/stock.js:1347 msgid "Stocktake" msgstr "Inventario" -#: templates/js/translated/stock.js:1338 +#: templates/js/translated/stock.js:1420 msgid "Supplier part not specified" msgstr "" -#: templates/js/translated/stock.js:1376 +#: templates/js/translated/stock.js:1458 msgid "No stock items matching query" msgstr "" -#: templates/js/translated/stock.js:1397 templates/js/translated/stock.js:1445 +#: templates/js/translated/stock.js:1479 templates/js/translated/stock.js:1527 msgid "items" msgstr "" -#: templates/js/translated/stock.js:1485 +#: templates/js/translated/stock.js:1567 msgid "batches" msgstr "" -#: templates/js/translated/stock.js:1512 +#: templates/js/translated/stock.js:1594 msgid "locations" msgstr "" -#: templates/js/translated/stock.js:1514 +#: templates/js/translated/stock.js:1596 msgid "Undefined location" msgstr "" -#: templates/js/translated/stock.js:1688 +#: templates/js/translated/stock.js:1770 msgid "Set Stock Status" msgstr "" -#: templates/js/translated/stock.js:1702 +#: templates/js/translated/stock.js:1784 msgid "Select Status Code" msgstr "" -#: templates/js/translated/stock.js:1703 +#: templates/js/translated/stock.js:1785 msgid "Status code must be selected" msgstr "" -#: templates/js/translated/stock.js:1927 +#: templates/js/translated/stock.js:2009 msgid "Invalid date" msgstr "" -#: templates/js/translated/stock.js:1974 +#: templates/js/translated/stock.js:2031 +msgid "Details" +msgstr "" + +#: templates/js/translated/stock.js:2056 msgid "Location no longer exists" msgstr "" -#: templates/js/translated/stock.js:1993 +#: templates/js/translated/stock.js:2075 msgid "Purchase order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2012 +#: templates/js/translated/stock.js:2094 msgid "Customer no longer exists" msgstr "" -#: templates/js/translated/stock.js:2030 +#: templates/js/translated/stock.js:2112 msgid "Stock item no longer exists" msgstr "" -#: templates/js/translated/stock.js:2053 +#: templates/js/translated/stock.js:2135 msgid "Added" msgstr "" -#: templates/js/translated/stock.js:2061 +#: templates/js/translated/stock.js:2143 msgid "Removed" msgstr "" -#: templates/js/translated/stock.js:2102 +#: templates/js/translated/stock.js:2184 msgid "Edit tracking entry" msgstr "" -#: templates/js/translated/stock.js:2103 +#: templates/js/translated/stock.js:2185 msgid "Delete tracking entry" msgstr "" -#: templates/js/translated/stock.js:2154 +#: templates/js/translated/stock.js:2236 msgid "No installed items" msgstr "" -#: templates/js/translated/stock.js:2205 +#: templates/js/translated/stock.js:2287 msgid "Uninstall Stock Item" msgstr "" diff --git a/InvenTree/locale/es_MX/LC_MESSAGES/django.po b/InvenTree/locale/es_MX/LC_MESSAGES/django.po index 11cca2ebb9..c752304ce6 100644 --- a/InvenTree/locale/es_MX/LC_MESSAGES/django.po +++ b/InvenTree/locale/es_MX/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-11-30 21:49+0000\n" +"POT-Creation-Date: 2021-11-30 22:21+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -195,8 +195,7 @@ msgstr "" #: InvenTree/models.py:271 InvenTree/models.py:272 company/models.py:415 #: label/models.py:112 part/models.py:741 part/models.py:2389 -#: part/templates/part/detail.html:25 report/models.py:181 -#: templates/InvenTree/settings/settings.html:259 +#: report/models.py:181 templates/InvenTree/settings/settings.html:259 #: templates/js/translated/company.js:638 templates/js/translated/part.js:499 #: templates/js/translated/part.js:636 templates/js/translated/part.js:1384 #: templates/js/translated/stock.js:1877 @@ -205,13 +204,15 @@ msgstr "" #: InvenTree/models.py:278 build/models.py:207 #: build/templates/build/detail.html:25 company/models.py:354 -#: company/models.py:570 company/templates/company/manufacturer_part.html:80 -#: company/templates/company/supplier_part.html:81 label/models.py:119 -#: order/models.py:161 part/models.py:764 part/templates/part/detail.html:30 +#: company/models.py:570 company/templates/company/company_base.html:68 +#: company/templates/company/manufacturer_part.html:76 +#: company/templates/company/supplier_part.html:73 label/models.py:119 +#: order/models.py:161 part/models.py:764 part/templates/part/category.html:70 +#: part/templates/part/part_base.html:163 #: part/templates/part/set_category.html:14 report/models.py:194 #: report/models.py:553 report/models.py:592 #: report/templates/report/inventree_build_order_base.html:118 -#: stock/templates/stock/location.html:108 templates/js/translated/bom.js:215 +#: stock/templates/stock/location.html:89 templates/js/translated/bom.js:215 #: templates/js/translated/bom.js:428 templates/js/translated/build.js:1621 #: templates/js/translated/company.js:345 #: templates/js/translated/company.js:548 @@ -362,7 +363,7 @@ msgid "Returned" msgstr "" #: InvenTree/status_codes.py:143 -#: order/templates/order/sales_order_base.html:147 +#: order/templates/order/sales_order_base.html:148 msgid "Shipped" msgstr "" @@ -567,7 +568,7 @@ msgid "Barcode associated with StockItem" msgstr "" #: build/forms.py:36 build/models.py:1283 -#: build/templates/build/build_base.html:124 +#: build/templates/build/build_base.html:132 #: build/templates/build/detail.html:35 common/models.py:1225 #: company/forms.py:42 company/templates/company/supplier_part.html:251 #: order/forms.py:102 order/models.py:729 order/models.py:991 @@ -575,7 +576,7 @@ msgstr "" #: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:223 #: part/forms.py:239 part/forms.py:255 part/models.py:2576 #: part/templates/part/bom_upload/match_parts.html:31 -#: part/templates/part/detail.html:1076 part/templates/part/detail.html:1162 +#: part/templates/part/detail.html:969 part/templates/part/detail.html:1055 #: part/templates/part/part_pricing.html:16 #: report/templates/report/inventree_build_order_base.html:114 #: report/templates/report/inventree_po_report.html:91 @@ -583,7 +584,7 @@ msgstr "" #: report/templates/report/inventree_test_report_base.html:81 #: report/templates/report/inventree_test_report_base.html:139 #: stock/forms.py:156 stock/serializers.py:286 -#: stock/templates/stock/item_base.html:256 +#: stock/templates/stock/item_base.html:167 #: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:443 #: templates/js/translated/build.js:235 templates/js/translated/build.js:435 #: templates/js/translated/build.js:629 templates/js/translated/build.js:639 @@ -647,7 +648,7 @@ msgstr "" #: build/templates/build/index.html:8 build/templates/build/index.html:12 #: order/templates/order/sales_order_detail.html:42 #: order/templates/order/so_sidebar.html:7 -#: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:221 +#: part/templates/part/part_sidebar.html:20 templates/InvenTree/index.html:221 #: templates/InvenTree/search.html:145 #: templates/InvenTree/settings/sidebar.html:42 users/models.py:44 msgid "Build Orders" @@ -671,7 +672,7 @@ msgstr "" msgid "Brief description of the build" msgstr "" -#: build/models.py:219 build/templates/build/build_base.html:156 +#: build/models.py:219 build/templates/build/build_base.html:164 #: build/templates/build/detail.html:88 msgid "Parent Build" msgstr "" @@ -680,7 +681,7 @@ msgstr "" msgid "BuildOrder to which this build is allocated" msgstr "" -#: build/models.py:225 build/templates/build/build_base.html:119 +#: build/models.py:225 build/templates/build/build_base.html:77 #: build/templates/build/detail.html:30 company/models.py:705 #: order/models.py:789 order/models.py:860 #: order/templates/order/order_wizard/select_parts.html:32 part/models.py:357 @@ -752,7 +753,7 @@ msgstr "" msgid "Number of stock items which have been completed" msgstr "" -#: build/models.py:277 part/templates/part/part_base.html:216 +#: build/models.py:277 part/templates/part/part_base.html:234 msgid "Build Status" msgstr "" @@ -769,7 +770,7 @@ msgid "Batch code for this build output" msgstr "" #: build/models.py:292 order/models.py:165 part/models.py:936 -#: part/templates/part/detail.html:86 templates/js/translated/order.js:1104 +#: part/templates/part/part_base.html:313 templates/js/translated/order.js:1104 msgid "Creation Date" msgstr "" @@ -798,10 +799,10 @@ msgstr "" msgid "User who issued this build order" msgstr "" -#: build/models.py:323 build/templates/build/build_base.html:177 +#: build/models.py:323 build/templates/build/build_base.html:185 #: build/templates/build/detail.html:116 order/models.py:179 -#: order/templates/order/order_base.html:154 -#: order/templates/order/sales_order_base.html:161 part/models.py:940 +#: order/templates/order/order_base.html:158 +#: order/templates/order/sales_order_base.html:162 part/models.py:940 #: report/templates/report/inventree_build_order_base.html:159 #: templates/js/translated/build.js:1680 templates/js/translated/order.js:700 msgid "Responsible" @@ -812,10 +813,10 @@ msgid "User responsible for this build order" msgstr "" #: build/models.py:329 build/templates/build/detail.html:102 -#: company/templates/company/manufacturer_part.html:87 -#: company/templates/company/supplier_part.html:88 -#: part/templates/part/detail.html:80 stock/models.py:538 -#: stock/templates/stock/item_base.html:346 +#: company/templates/company/manufacturer_part.html:102 +#: company/templates/company/supplier_part.html:126 +#: part/templates/part/part_base.html:347 stock/models.py:538 +#: stock/templates/stock/item_base.html:367 msgid "External Link" msgstr "" @@ -825,7 +826,7 @@ msgstr "" #: order/models.py:183 order/models.py:738 #: order/templates/order/po_sidebar.html:11 #: order/templates/order/so_sidebar.html:11 part/models.py:925 -#: part/templates/part/detail.html:223 part/templates/part/part_sidebar.html:52 +#: part/templates/part/detail.html:116 part/templates/part/part_sidebar.html:50 #: report/templates/report/inventree_build_order_base.html:173 #: stock/forms.py:154 stock/forms.py:204 stock/forms.py:238 stock/models.py:610 #: stock/models.py:1774 stock/models.py:1880 stock/serializers.py:325 @@ -878,7 +879,7 @@ msgstr "" msgid "Selected stock item not found in BOM" msgstr "" -#: build/models.py:1253 stock/templates/stock/item_base.html:318 +#: build/models.py:1253 stock/templates/stock/item_base.html:339 #: templates/InvenTree/search.html:143 templates/js/translated/build.js:1599 #: templates/navbar.html:33 msgid "Build" @@ -891,7 +892,7 @@ msgstr "" #: build/models.py:1270 build/serializers.py:328 #: stock/templates/stock/item_base.html:8 #: stock/templates/stock/item_base.html:16 -#: stock/templates/stock/item_base.html:340 +#: stock/templates/stock/item_base.html:361 #: templates/js/translated/build.js:408 templates/js/translated/build.js:413 #: templates/js/translated/build.js:1361 templates/js/translated/build.js:1742 #: templates/js/translated/order.js:1178 templates/js/translated/order.js:1183 @@ -937,7 +938,7 @@ msgstr "" #: build/serializers.py:190 order/serializers.py:219 order/serializers.py:287 #: stock/forms.py:236 stock/serializers.py:318 stock/serializers.py:685 -#: stock/templates/stock/item_base.html:286 +#: stock/templates/stock/item_base.html:307 #: templates/js/translated/barcode.js:384 #: templates/js/translated/barcode.js:557 templates/js/translated/build.js:420 #: templates/js/translated/build.js:1027 templates/js/translated/order.js:348 @@ -952,9 +953,9 @@ msgstr "" msgid "Location for completed build outputs" msgstr "" -#: build/serializers.py:197 build/templates/build/build_base.html:129 +#: build/serializers.py:197 build/templates/build/build_base.html:137 #: build/templates/build/detail.html:63 order/models.py:572 -#: order/serializers.py:240 stock/templates/stock/item_base.html:409 +#: order/serializers.py:240 stock/templates/stock/item_base.html:173 #: templates/js/translated/barcode.js:140 templates/js/translated/build.js:1655 #: templates/js/translated/order.js:431 templates/js/translated/order.js:677 #: templates/js/translated/order.js:1096 templates/js/translated/stock.js:1226 @@ -1032,7 +1033,7 @@ msgid "Edit Build" msgstr "" #: build/templates/build/build_base.html:56 -#: build/templates/build/build_base.html:207 build/views.py:56 +#: build/templates/build/build_base.html:215 build/views.py:56 msgid "Cancel Build" msgstr "" @@ -1042,93 +1043,95 @@ msgstr "" #: build/templates/build/build_base.html:64 #: build/templates/build/build_base.html:65 -#: build/templates/build/build_base.html:223 +#: build/templates/build/build_base.html:231 msgid "Complete Build" msgstr "" -#: build/templates/build/build_base.html:79 +#: build/templates/build/build_base.html:82 +msgid "Build Description" +msgstr "" + +#: build/templates/build/build_base.html:91 #, python-format msgid "This Build Order is allocated to Sales Order %(link)s" msgstr "" -#: build/templates/build/build_base.html:86 +#: build/templates/build/build_base.html:98 #, python-format msgid "This Build Order is a child of Build Order %(link)s" msgstr "" -#: build/templates/build/build_base.html:93 +#: build/templates/build/build_base.html:105 msgid "Build Order is ready to mark as completed" msgstr "" -#: build/templates/build/build_base.html:98 +#: build/templates/build/build_base.html:110 msgid "Build Order cannot be completed as outstanding outputs remain" msgstr "" -#: build/templates/build/build_base.html:103 +#: build/templates/build/build_base.html:115 msgid "Required build quantity has not yet been completed" msgstr "" -#: build/templates/build/build_base.html:108 +#: build/templates/build/build_base.html:120 msgid "Stock has not been fully allocated to this Build Order" msgstr "" -#: build/templates/build/build_base.html:138 +#: build/templates/build/build_base.html:146 #: build/templates/build/detail.html:132 -#: order/templates/order/order_base.html:140 -#: order/templates/order/sales_order_base.html:140 +#: order/templates/order/order_base.html:144 +#: order/templates/order/sales_order_base.html:141 #: report/templates/report/inventree_build_order_base.html:126 #: templates/js/translated/build.js:1692 templates/js/translated/order.js:690 #: templates/js/translated/order.js:1109 msgid "Target Date" msgstr "" -#: build/templates/build/build_base.html:143 +#: build/templates/build/build_base.html:151 #, python-format msgid "This build was due on %(target)s" msgstr "" -#: build/templates/build/build_base.html:143 -#: build/templates/build/build_base.html:188 -#: order/templates/order/order_base.html:81 -#: order/templates/order/order_base.html:102 -#: order/templates/order/sales_order_base.html:78 -#: order/templates/order/sales_order_base.html:107 +#: build/templates/build/build_base.html:151 +#: build/templates/build/build_base.html:196 +#: order/templates/order/order_base.html:98 +#: order/templates/order/sales_order_base.html:93 #: templates/js/translated/table_filters.js:294 #: templates/js/translated/table_filters.js:322 #: templates/js/translated/table_filters.js:339 msgid "Overdue" msgstr "" -#: build/templates/build/build_base.html:150 +#: build/templates/build/build_base.html:158 #: build/templates/build/detail.html:68 build/templates/build/detail.html:143 #: templates/js/translated/build.js:1641 #: templates/js/translated/table_filters.js:304 msgid "Completed" msgstr "" -#: build/templates/build/build_base.html:163 +#: build/templates/build/build_base.html:171 #: build/templates/build/detail.html:95 order/models.py:857 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: order/templates/order/sales_order_ship.html:25 #: report/templates/report/inventree_build_order_base.html:136 #: report/templates/report/inventree_so_report.html:77 -#: stock/templates/stock/item_base.html:280 +#: stock/templates/stock/item_base.html:301 #: templates/js/translated/order.js:1051 msgid "Sales Order" msgstr "" -#: build/templates/build/build_base.html:170 +#: build/templates/build/build_base.html:178 #: build/templates/build/detail.html:109 #: report/templates/report/inventree_build_order_base.html:153 msgid "Issued By" msgstr "" -#: build/templates/build/build_base.html:215 +#: build/templates/build/build_base.html:223 msgid "Incomplete Outputs" msgstr "" -#: build/templates/build/build_base.html:216 +#: build/templates/build/build_base.html:224 msgid "Build Order cannot be completed as incomplete build outputs remain" msgstr "" @@ -1202,7 +1205,7 @@ msgid "Allocated Parts" msgstr "" #: build/templates/build/detail.html:81 -#: stock/templates/stock/item_base.html:304 +#: stock/templates/stock/item_base.html:325 #: templates/js/translated/stock.js:1240 templates/js/translated/stock.js:2194 #: templates/js/translated/table_filters.js:151 #: templates/js/translated/table_filters.js:233 @@ -1210,8 +1213,8 @@ msgid "Batch" msgstr "" #: build/templates/build/detail.html:127 -#: order/templates/order/order_base.html:127 -#: order/templates/order/sales_order_base.html:134 +#: order/templates/order/order_base.html:131 +#: order/templates/order/sales_order_base.html:135 #: templates/js/translated/build.js:1663 msgid "Created" msgstr "" @@ -1255,7 +1258,7 @@ msgstr "" #: build/templates/build/detail.html:185 #: company/templates/company/detail.html:38 #: company/templates/company/detail.html:85 order/views.py:509 -#: part/templates/part/category.html:166 +#: part/templates/part/category.html:173 msgid "Order Parts" msgstr "" @@ -1307,8 +1310,8 @@ msgstr "" #: order/templates/order/po_sidebar.html:9 #: order/templates/order/purchase_order_detail.html:60 #: order/templates/order/sales_order_detail.html:52 -#: order/templates/order/so_sidebar.html:9 part/templates/part/detail.html:300 -#: part/templates/part/part_sidebar.html:50 stock/templates/stock/item.html:95 +#: order/templates/order/so_sidebar.html:9 part/templates/part/detail.html:193 +#: part/templates/part/part_sidebar.html:48 stock/templates/stock/item.html:95 #: stock/templates/stock/stock_sidebar.html:19 msgid "Attachments" msgstr "" @@ -1324,7 +1327,7 @@ msgstr "" #: order/templates/order/purchase_order_detail.html:108 #: order/templates/order/sales_order_detail.html:72 #: order/templates/order/sales_order_detail.html:99 -#: part/templates/part/detail.html:227 stock/templates/stock/item.html:115 +#: part/templates/part/detail.html:120 stock/templates/stock/item.html:115 #: stock/templates/stock/item.html:205 msgid "Edit Notes" msgstr "" @@ -1337,7 +1340,7 @@ msgstr "" msgid "All untracked stock items have been allocated" msgstr "" -#: build/templates/build/index.html:18 part/templates/part/detail.html:407 +#: build/templates/build/index.html:18 part/templates/part/detail.html:300 msgid "New Build Order" msgstr "" @@ -1676,7 +1679,7 @@ msgid "Parts are trackable by default" msgstr "" #: common/models.py:745 part/models.py:920 -#: part/templates/part/part_base.html:144 +#: part/templates/part/part_base.html:147 #: templates/js/translated/table_filters.js:42 msgid "Virtual" msgstr "" @@ -2207,7 +2210,7 @@ msgstr "" msgid "Description of the company" msgstr "" -#: company/models.py:112 company/templates/company/company_base.html:70 +#: company/models.py:112 company/templates/company/company_base.html:97 #: templates/js/translated/company.js:349 msgid "Website" msgstr "" @@ -2216,7 +2219,7 @@ msgstr "" msgid "Company website URL" msgstr "" -#: company/models.py:117 company/templates/company/company_base.html:88 +#: company/models.py:117 company/templates/company/company_base.html:115 msgid "Address" msgstr "" @@ -2232,7 +2235,7 @@ msgstr "" msgid "Contact phone number" msgstr "" -#: company/models.py:125 company/templates/company/company_base.html:102 +#: company/models.py:125 company/templates/company/company_base.html:129 #: templates/InvenTree/settings/user.html:47 msgid "Email" msgstr "" @@ -2241,7 +2244,7 @@ msgstr "" msgid "Contact email address" msgstr "" -#: company/models.py:128 company/templates/company/company_base.html:109 +#: company/models.py:128 company/templates/company/company_base.html:136 msgid "Contact" msgstr "" @@ -2282,7 +2285,7 @@ msgid "Does this company manufacture parts?" msgstr "" #: company/models.py:152 company/serializers.py:270 -#: company/templates/company/company_base.html:76 stock/serializers.py:172 +#: company/templates/company/company_base.html:103 stock/serializers.py:172 msgid "Currency" msgstr "" @@ -2291,7 +2294,7 @@ msgid "Default currency used for this company" msgstr "" #: company/models.py:320 company/models.py:535 stock/models.py:484 -#: stock/templates/stock/item_base.html:224 +#: stock/templates/stock/item_base.html:135 msgid "Base Part" msgstr "" @@ -2299,10 +2302,10 @@ msgstr "" msgid "Select part" msgstr "" -#: company/models.py:335 company/templates/company/company_base.html:116 -#: company/templates/company/manufacturer_part.html:93 -#: company/templates/company/supplier_part.html:104 -#: stock/templates/stock/item_base.html:353 +#: company/models.py:335 company/templates/company/company_base.html:73 +#: company/templates/company/manufacturer_part.html:91 +#: company/templates/company/supplier_part.html:97 +#: stock/templates/stock/item_base.html:374 #: templates/js/translated/company.js:333 #: templates/js/translated/company.js:514 #: templates/js/translated/company.js:797 templates/js/translated/part.js:229 @@ -2313,8 +2316,8 @@ msgstr "" msgid "Select manufacturer" msgstr "" -#: company/models.py:342 company/templates/company/manufacturer_part.html:97 -#: company/templates/company/supplier_part.html:112 +#: company/models.py:342 company/templates/company/manufacturer_part.html:96 +#: company/templates/company/supplier_part.html:105 #: templates/js/translated/company.js:530 #: templates/js/translated/company.js:815 templates/js/translated/order.js:874 #: templates/js/translated/part.js:240 @@ -2336,7 +2339,7 @@ msgstr "" #: company/models.py:409 company/models.py:558 #: company/templates/company/manufacturer_part.html:6 #: company/templates/company/manufacturer_part.html:23 -#: stock/templates/stock/item_base.html:363 +#: stock/templates/stock/item_base.html:384 msgid "Manufacturer Part" msgstr "" @@ -2356,7 +2359,7 @@ msgid "Parameter value" msgstr "" #: company/models.py:429 part/models.py:882 part/models.py:2397 -#: part/templates/part/detail.html:59 +#: part/templates/part/part_base.html:288 #: templates/InvenTree/settings/settings.html:264 #: templates/js/translated/company.js:650 templates/js/translated/part.js:651 msgid "Units" @@ -2370,11 +2373,11 @@ msgstr "" msgid "Linked manufacturer part must reference the same base part" msgstr "" -#: company/models.py:545 company/templates/company/company_base.html:121 -#: company/templates/company/supplier_part.html:94 order/models.py:263 -#: order/templates/order/order_base.html:108 +#: company/models.py:545 company/templates/company/company_base.html:78 +#: company/templates/company/supplier_part.html:87 order/models.py:263 +#: order/templates/order/order_base.html:112 #: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:219 -#: part/bom.py:247 stock/templates/stock/item_base.html:370 +#: part/bom.py:247 stock/templates/stock/item_base.html:391 #: templates/js/translated/company.js:337 #: templates/js/translated/company.js:771 templates/js/translated/order.js:660 #: templates/js/translated/part.js:210 @@ -2385,7 +2388,7 @@ msgstr "" msgid "Select supplier" msgstr "" -#: company/models.py:551 company/templates/company/supplier_part.html:98 +#: company/models.py:551 company/templates/company/supplier_part.html:91 #: part/bom.py:220 part/bom.py:248 templates/js/translated/order.js:861 #: templates/js/translated/part.js:221 msgid "SKU" @@ -2407,7 +2410,7 @@ msgstr "" msgid "Supplier part description" msgstr "" -#: company/models.py:576 company/templates/company/supplier_part.html:126 +#: company/models.py:576 company/templates/company/supplier_part.html:119 #: part/models.py:2588 report/templates/report/inventree_po_report.html:93 #: report/templates/report/inventree_so_report.html:93 msgid "Note" @@ -2421,8 +2424,8 @@ msgstr "" msgid "Minimum charge (e.g. stocking fee)" msgstr "" -#: company/models.py:582 company/templates/company/supplier_part.html:119 -#: stock/models.py:507 stock/templates/stock/item_base.html:311 +#: company/models.py:582 company/templates/company/supplier_part.html:112 +#: stock/models.py:507 stock/templates/stock/item_base.html:332 #: templates/js/translated/company.js:847 templates/js/translated/stock.js:1366 msgid "Packaging" msgstr "" @@ -2458,43 +2461,56 @@ msgstr "" msgid "Create Purchase Order" msgstr "" -#: company/templates/company/company_base.html:27 +#: company/templates/company/company_base.html:26 +msgid "Company actions" +msgstr "" + +#: company/templates/company/company_base.html:31 msgid "Edit company information" msgstr "" #: company/templates/company/company_base.html:32 -#: company/templates/company/company_base.html:148 +#: templates/js/translated/company.js:265 +msgid "Edit Company" +msgstr "" + +#: company/templates/company/company_base.html:36 +msgid "Delete company" +msgstr "" + +#: company/templates/company/company_base.html:37 +#: company/templates/company/company_base.html:159 msgid "Delete Company" msgstr "" -#: company/templates/company/company_base.html:48 +#: company/templates/company/company_base.html:53 #: part/templates/part/part_thumb.html:12 msgid "Upload new image" msgstr "" -#: company/templates/company/company_base.html:51 +#: company/templates/company/company_base.html:56 #: part/templates/part/part_thumb.html:14 msgid "Download image from URL" msgstr "" -#: company/templates/company/company_base.html:81 -msgid "Uses default currency" -msgstr "" - -#: company/templates/company/company_base.html:95 -msgid "Phone" -msgstr "" - -#: company/templates/company/company_base.html:126 order/models.py:567 -#: order/templates/order/sales_order_base.html:114 stock/models.py:525 -#: stock/models.py:526 stock/templates/stock/item_base.html:263 +#: company/templates/company/company_base.html:83 order/models.py:567 +#: order/templates/order/sales_order_base.html:115 stock/models.py:525 +#: stock/models.py:526 stock/templates/stock/item_base.html:284 #: templates/js/translated/company.js:329 templates/js/translated/order.js:1073 #: templates/js/translated/stock.js:2002 msgid "Customer" msgstr "" -#: company/templates/company/company_base.html:194 -#: part/templates/part/part_base.html:342 +#: company/templates/company/company_base.html:108 +msgid "Uses default currency" +msgstr "" + +#: company/templates/company/company_base.html:122 +msgid "Phone" +msgstr "" + +#: company/templates/company/company_base.html:205 +#: part/templates/part/part_base.html:464 msgid "Upload Image" msgstr "" @@ -2510,23 +2526,23 @@ msgid "Create new supplier part" msgstr "" #: company/templates/company/detail.html:20 -#: company/templates/company/manufacturer_part.html:112 -#: part/templates/part/detail.html:440 +#: company/templates/company/manufacturer_part.html:118 +#: part/templates/part/detail.html:333 msgid "New Supplier Part" msgstr "" #: company/templates/company/detail.html:32 #: company/templates/company/detail.html:79 -#: company/templates/company/manufacturer_part.html:121 -#: company/templates/company/manufacturer_part.html:150 -#: part/templates/part/category.html:160 part/templates/part/detail.html:449 -#: part/templates/part/detail.html:477 +#: company/templates/company/manufacturer_part.html:127 +#: company/templates/company/manufacturer_part.html:156 +#: part/templates/part/category.html:167 part/templates/part/detail.html:342 +#: part/templates/part/detail.html:370 msgid "Options" msgstr "" #: company/templates/company/detail.html:37 #: company/templates/company/detail.html:84 -#: part/templates/part/category.html:166 +#: part/templates/part/category.html:173 msgid "Order parts" msgstr "" @@ -2548,7 +2564,7 @@ msgstr "" msgid "Create new manufacturer part" msgstr "" -#: company/templates/company/detail.html:67 part/templates/part/detail.html:467 +#: company/templates/company/detail.html:67 part/templates/part/detail.html:360 msgid "New Manufacturer Part" msgstr "" @@ -2562,7 +2578,7 @@ msgstr "" #: order/templates/order/order_base.html:13 #: order/templates/order/purchase_orders.html:8 #: order/templates/order/purchase_orders.html:12 -#: part/templates/part/detail.html:171 part/templates/part/part_sidebar.html:35 +#: part/templates/part/detail.html:64 part/templates/part/part_sidebar.html:33 #: templates/InvenTree/index.html:252 templates/InvenTree/search.html:203 #: templates/InvenTree/settings/sidebar.html:44 templates/navbar.html:45 #: users/models.py:45 @@ -2584,7 +2600,7 @@ msgstr "" #: order/templates/order/sales_order_base.html:13 #: order/templates/order/sales_orders.html:8 #: order/templates/order/sales_orders.html:15 -#: part/templates/part/detail.html:194 part/templates/part/part_sidebar.html:39 +#: part/templates/part/detail.html:87 part/templates/part/part_sidebar.html:37 #: templates/InvenTree/index.html:283 templates/InvenTree/search.html:223 #: templates/InvenTree/settings/sidebar.html:46 templates/navbar.html:56 #: users/models.py:46 @@ -2611,14 +2627,14 @@ msgid "Company Notes" msgstr "" #: company/templates/company/detail.html:383 -#: company/templates/company/manufacturer_part.html:209 -#: part/templates/part/detail.html:520 +#: company/templates/company/manufacturer_part.html:215 +#: part/templates/part/detail.html:413 msgid "Delete Supplier Parts?" msgstr "" #: company/templates/company/detail.html:384 -#: company/templates/company/manufacturer_part.html:210 -#: part/templates/part/detail.html:521 +#: company/templates/company/manufacturer_part.html:216 +#: part/templates/part/detail.html:414 msgid "All selected supplier parts will be deleted" msgstr "" @@ -2635,7 +2651,7 @@ msgstr "" #: company/templates/company/manufacturer_part.html:35 #: company/templates/company/supplier_part.html:34 #: company/templates/company/supplier_part.html:159 -#: part/templates/part/detail.html:174 part/templates/part/part_base.html:76 +#: part/templates/part/detail.html:67 part/templates/part/part_base.html:76 msgid "Order part" msgstr "" @@ -2649,60 +2665,60 @@ msgstr "" msgid "Delete manufacturer part" msgstr "" -#: company/templates/company/manufacturer_part.html:70 -#: company/templates/company/supplier_part.html:71 +#: company/templates/company/manufacturer_part.html:66 +#: company/templates/company/supplier_part.html:63 msgid "Internal Part" msgstr "" -#: company/templates/company/manufacturer_part.html:108 +#: company/templates/company/manufacturer_part.html:114 #: company/templates/company/supplier_part.html:15 company/views.py:49 -#: part/templates/part/part_sidebar.html:33 part/templates/part/prices.html:163 +#: part/templates/part/part_sidebar.html:31 part/templates/part/prices.html:163 #: templates/InvenTree/search.html:194 templates/navbar.html:43 msgid "Suppliers" msgstr "" -#: company/templates/company/manufacturer_part.html:123 -#: part/templates/part/detail.html:451 +#: company/templates/company/manufacturer_part.html:129 +#: part/templates/part/detail.html:344 msgid "Delete supplier parts" msgstr "" -#: company/templates/company/manufacturer_part.html:123 -#: company/templates/company/manufacturer_part.html:152 -#: company/templates/company/manufacturer_part.html:248 -#: part/templates/part/detail.html:451 part/templates/part/detail.html:479 +#: company/templates/company/manufacturer_part.html:129 +#: company/templates/company/manufacturer_part.html:158 +#: company/templates/company/manufacturer_part.html:254 +#: part/templates/part/detail.html:344 part/templates/part/detail.html:372 #: templates/js/translated/company.js:425 templates/js/translated/helpers.js:31 #: users/models.py:204 msgid "Delete" msgstr "" -#: company/templates/company/manufacturer_part.html:137 +#: company/templates/company/manufacturer_part.html:143 #: company/templates/company/manufacturer_part_sidebar.html:5 #: part/templates/part/category_sidebar.html:17 -#: part/templates/part/detail.html:277 part/templates/part/part_sidebar.html:10 +#: part/templates/part/detail.html:170 part/templates/part/part_sidebar.html:8 msgid "Parameters" msgstr "" -#: company/templates/company/manufacturer_part.html:141 -#: part/templates/part/detail.html:282 +#: company/templates/company/manufacturer_part.html:147 +#: part/templates/part/detail.html:175 #: templates/InvenTree/settings/category.html:12 #: templates/InvenTree/settings/part.html:65 msgid "New Parameter" msgstr "" -#: company/templates/company/manufacturer_part.html:152 +#: company/templates/company/manufacturer_part.html:158 msgid "Delete parameters" msgstr "" -#: company/templates/company/manufacturer_part.html:185 -#: part/templates/part/detail.html:976 +#: company/templates/company/manufacturer_part.html:191 +#: part/templates/part/detail.html:869 msgid "Add Parameter" msgstr "" -#: company/templates/company/manufacturer_part.html:233 +#: company/templates/company/manufacturer_part.html:239 msgid "Selected parameters will be deleted" msgstr "" -#: company/templates/company/manufacturer_part.html:245 +#: company/templates/company/manufacturer_part.html:251 msgid "Delete Parameters" msgstr "" @@ -2724,7 +2740,7 @@ msgstr "" #: company/templates/company/supplier_part.html:7 #: company/templates/company/supplier_part.html:24 stock/models.py:492 -#: stock/templates/stock/item_base.html:375 +#: stock/templates/stock/item_base.html:396 #: templates/js/translated/company.js:787 templates/js/translated/stock.js:1323 msgid "Supplier Part" msgstr "" @@ -2745,12 +2761,12 @@ msgid "Supplier Part Stock" msgstr "" #: company/templates/company/supplier_part.html:141 -#: part/templates/part/detail.html:127 stock/templates/stock/location.html:147 +#: part/templates/part/detail.html:20 stock/templates/stock/location.html:162 msgid "Create new stock item" msgstr "" #: company/templates/company/supplier_part.html:142 -#: part/templates/part/detail.html:128 stock/templates/stock/location.html:148 +#: part/templates/part/detail.html:21 stock/templates/stock/location.html:163 #: templates/js/translated/stock.js:354 msgid "New Stock Item" msgstr "" @@ -2761,7 +2777,7 @@ msgid "Supplier Part Orders" msgstr "" #: company/templates/company/supplier_part.html:160 -#: part/templates/part/detail.html:175 +#: part/templates/part/detail.html:68 msgid "Order Part" msgstr "" @@ -2797,7 +2813,7 @@ msgid "Delete price break" msgstr "" #: company/templates/company/supplier_part_navbar.html:15 -#: part/templates/part/part_sidebar.html:16 +#: part/templates/part/part_sidebar.html:14 #: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:14 #: stock/templates/stock/stock_app_base.html:10 #: templates/InvenTree/search.html:156 @@ -2819,14 +2835,14 @@ msgid "Supplier Part Pricing" msgstr "" #: company/templates/company/supplier_part_navbar.html:29 -#: part/templates/part/part_sidebar.html:30 +#: part/templates/part/part_sidebar.html:28 msgid "Pricing" msgstr "" #: company/templates/company/supplier_part_sidebar.html:5 -#: stock/templates/stock/location.html:118 -#: stock/templates/stock/location.html:132 -#: stock/templates/stock/location.html:144 +#: stock/templates/stock/location.html:133 +#: stock/templates/stock/location.html:147 +#: stock/templates/stock/location.html:159 #: stock/templates/stock/location_sidebar.html:7 #: templates/InvenTree/search.html:158 templates/js/translated/stock.js:1901 #: templates/stats.html:93 templates/stats.html:102 users/models.py:43 @@ -2948,7 +2964,7 @@ msgstr "" msgid "Place order" msgstr "" -#: order/forms.py:37 order/templates/order/order_base.html:59 +#: order/forms.py:37 order/templates/order/order_base.html:60 msgid "Mark order as complete" msgstr "" @@ -3001,7 +3017,7 @@ msgstr "" msgid "Company from which the items are being ordered" msgstr "" -#: order/models.py:267 order/templates/order/order_base.html:114 +#: order/models.py:267 order/templates/order/order_base.html:118 #: templates/js/translated/order.js:669 msgid "Supplier Reference" msgstr "" @@ -3094,7 +3110,7 @@ msgstr "" #: order/models.py:769 order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_po_report.html:77 -#: stock/templates/stock/item_base.html:325 +#: stock/templates/stock/item_base.html:346 #: templates/js/translated/order.js:638 templates/js/translated/stock.js:1300 #: templates/js/translated/stock.js:1983 msgid "Purchase Order" @@ -3104,8 +3120,8 @@ msgstr "" msgid "Supplier part" msgstr "" -#: order/models.py:797 order/templates/order/order_base.html:147 -#: order/templates/order/sales_order_base.html:154 +#: order/models.py:797 order/templates/order/order_base.html:151 +#: order/templates/order/sales_order_base.html:155 #: templates/js/translated/order.js:429 templates/js/translated/order.js:954 msgid "Received" msgstr "" @@ -3115,7 +3131,7 @@ msgid "Number of items received" msgstr "" #: order/models.py:805 part/templates/part/prices.html:176 stock/models.py:619 -#: stock/serializers.py:163 stock/templates/stock/item_base.html:332 +#: stock/serializers.py:163 stock/templates/stock/item_base.html:353 #: templates/js/translated/stock.js:1354 msgid "Purchase Price" msgstr "" @@ -3249,22 +3265,36 @@ msgstr "" msgid "Receive items" msgstr "" -#: order/templates/order/order_base.html:93 -#: order/templates/order/sales_order_base.html:98 +#: order/templates/order/order_base.html:58 +#: order/templates/order/purchase_order_detail.html:31 +msgid "Receive Items" +msgstr "" + +#: order/templates/order/order_base.html:62 order/views.py:185 +msgid "Complete Order" +msgstr "" + +#: order/templates/order/order_base.html:84 +#: order/templates/order/sales_order_base.html:79 msgid "Order Reference" msgstr "" -#: order/templates/order/order_base.html:98 -#: order/templates/order/sales_order_base.html:103 +#: order/templates/order/order_base.html:89 +#: order/templates/order/sales_order_base.html:84 +msgid "Order Description" +msgstr "" + +#: order/templates/order/order_base.html:94 +#: order/templates/order/sales_order_base.html:89 msgid "Order Status" msgstr "" -#: order/templates/order/order_base.html:133 +#: order/templates/order/order_base.html:137 #: report/templates/report/inventree_build_order_base.html:122 msgid "Issued" msgstr "" -#: order/templates/order/order_base.html:203 +#: order/templates/order/order_base.html:207 msgid "Edit Purchase Order" msgstr "" @@ -3466,10 +3496,6 @@ msgstr "" msgid "Receive selected items" msgstr "" -#: order/templates/order/purchase_order_detail.html:31 -msgid "Receive Items" -msgstr "" - #: order/templates/order/purchase_order_detail.html:50 msgid "Received Items" msgstr "" @@ -3497,16 +3523,16 @@ msgstr "" msgid "Ship Order" msgstr "" -#: order/templates/order/sales_order_base.html:86 +#: order/templates/order/sales_order_base.html:102 msgid "This Sales Order has not been fully allocated" msgstr "" -#: order/templates/order/sales_order_base.html:121 +#: order/templates/order/sales_order_base.html:122 #: templates/js/translated/order.js:1086 msgid "Customer Reference" msgstr "" -#: order/templates/order/sales_order_base.html:194 +#: order/templates/order/sales_order_base.html:195 msgid "Edit Sales Order" msgstr "" @@ -3577,10 +3603,6 @@ msgstr "" msgid "Purchase order issued" msgstr "" -#: order/views.py:185 -msgid "Complete Order" -msgstr "" - #: order/views.py:201 msgid "Confirm order completion" msgstr "" @@ -3673,11 +3695,11 @@ msgid "This field is required" msgstr "" #: part/bom.py:125 part/models.py:81 part/models.py:816 -#: part/templates/part/category.html:90 part/templates/part/detail.html:104 +#: part/templates/part/category.html:104 part/templates/part/part_base.html:331 msgid "Default Location" msgstr "" -#: part/bom.py:126 part/templates/part/part_base.html:167 +#: part/bom.py:126 part/templates/part/part_base.html:185 msgid "Available Stock" msgstr "" @@ -3794,15 +3816,15 @@ msgstr "" msgid "Part Category" msgstr "" -#: part/models.py:96 part/templates/part/category.html:117 +#: part/models.py:96 part/templates/part/category.html:124 #: templates/InvenTree/search.html:101 templates/stats.html:84 #: users/models.py:40 msgid "Part Categories" msgstr "" #: part/models.py:358 part/templates/part/cat_link.html:3 -#: part/templates/part/category.html:13 part/templates/part/category.html:122 -#: part/templates/part/category.html:142 +#: part/templates/part/category.html:13 part/templates/part/category.html:129 +#: part/templates/part/category.html:149 #: part/templates/part/category_sidebar.html:9 #: templates/InvenTree/index.html:85 templates/InvenTree/search.html:88 #: templates/InvenTree/settings/sidebar.html:36 @@ -3860,8 +3882,8 @@ msgstr "" msgid "Part description" msgstr "" -#: part/models.py:770 part/templates/part/category.html:97 -#: part/templates/part/detail.html:73 +#: part/models.py:770 part/templates/part/category.html:82 +#: part/templates/part/part_base.html:302 msgid "Keywords" msgstr "" @@ -3870,7 +3892,8 @@ msgid "Part keywords to improve visibility in search results" msgstr "" #: part/models.py:778 part/models.py:2223 part/models.py:2472 -#: part/templates/part/detail.html:36 part/templates/part/set_category.html:15 +#: part/templates/part/part_base.html:265 +#: part/templates/part/set_category.html:15 #: templates/InvenTree/settings/settings.html:163 #: templates/js/translated/part.js:1021 msgid "Category" @@ -3880,7 +3903,7 @@ msgstr "" msgid "Part category" msgstr "" -#: part/models.py:784 part/templates/part/detail.html:45 +#: part/models.py:784 part/templates/part/part_base.html:274 #: templates/js/translated/part.js:550 templates/js/translated/part.js:974 #: templates/js/translated/stock.js:1134 msgid "IPN" @@ -3894,8 +3917,8 @@ msgstr "" msgid "Part revision or version number" msgstr "" -#: part/models.py:792 part/templates/part/detail.html:52 report/models.py:200 -#: templates/js/translated/part.js:554 +#: part/models.py:792 part/templates/part/part_base.html:281 +#: report/models.py:200 templates/js/translated/part.js:554 msgid "Revision" msgstr "" @@ -3903,7 +3926,7 @@ msgstr "" msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:861 part/templates/part/detail.html:113 +#: part/models.py:861 part/templates/part/part_base.html:340 msgid "Default Supplier" msgstr "" @@ -3919,7 +3942,7 @@ msgstr "" msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:875 part/templates/part/part_base.html:178 +#: part/models.py:875 part/templates/part/part_base.html:196 msgid "Minimum Stock" msgstr "" @@ -4214,7 +4237,7 @@ msgstr "" msgid "The BOM for %(part)s has not been validated." msgstr "" -#: part/templates/part/bom.html:30 part/templates/part/detail.html:357 +#: part/templates/part/bom.html:30 part/templates/part/detail.html:250 msgid "BOM actions" msgstr "" @@ -4299,68 +4322,64 @@ msgstr "" msgid "New Category" msgstr "" -#: part/templates/part/category.html:67 -msgid "Top level part category" -msgstr "" - -#: part/templates/part/category.html:79 +#: part/templates/part/category.html:76 part/templates/part/category.html:89 msgid "Category Path" msgstr "" -#: part/templates/part/category.html:84 -msgid "Category Description" +#: part/templates/part/category.html:90 +msgid "Top level part category" msgstr "" -#: part/templates/part/category.html:103 part/templates/part/category.html:194 +#: part/templates/part/category.html:110 part/templates/part/category.html:201 #: part/templates/part/category_sidebar.html:7 msgid "Subcategories" msgstr "" -#: part/templates/part/category.html:108 +#: part/templates/part/category.html:115 msgid "Parts (Including subcategories)" msgstr "" -#: part/templates/part/category.html:145 +#: part/templates/part/category.html:152 msgid "Export Part Data" msgstr "" -#: part/templates/part/category.html:146 part/templates/part/category.html:170 +#: part/templates/part/category.html:153 part/templates/part/category.html:177 msgid "Export" msgstr "" -#: part/templates/part/category.html:149 +#: part/templates/part/category.html:156 msgid "Create new part" msgstr "" -#: part/templates/part/category.html:150 templates/js/translated/bom.js:40 +#: part/templates/part/category.html:157 templates/js/translated/bom.js:40 msgid "New Part" msgstr "" -#: part/templates/part/category.html:164 +#: part/templates/part/category.html:171 msgid "Set category" msgstr "" -#: part/templates/part/category.html:164 +#: part/templates/part/category.html:171 msgid "Set Category" msgstr "" -#: part/templates/part/category.html:168 +#: part/templates/part/category.html:175 msgid "Print Labels" msgstr "" -#: part/templates/part/category.html:170 +#: part/templates/part/category.html:177 msgid "Export Data" msgstr "" -#: part/templates/part/category.html:184 +#: part/templates/part/category.html:191 msgid "Part Parameters" msgstr "" -#: part/templates/part/category.html:261 +#: part/templates/part/category.html:268 msgid "Create Part Category" msgstr "" -#: part/templates/part/category.html:288 +#: part/templates/part/category.html:295 msgid "Create Part" msgstr "" @@ -4427,167 +4446,155 @@ msgstr "" msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)" msgstr "" -#: part/templates/part/detail.html:16 -msgid "Part Details" -msgstr "" - -#: part/templates/part/detail.html:66 -msgid "Minimum stock level" -msgstr "" - -#: part/templates/part/detail.html:97 -msgid "Latest Serial Number" -msgstr "" - -#: part/templates/part/detail.html:124 +#: part/templates/part/detail.html:17 msgid "Part Stock" msgstr "" -#: part/templates/part/detail.html:136 +#: part/templates/part/detail.html:29 #, python-format msgid "Showing stock for all variants of %(full_name)s" msgstr "" -#: part/templates/part/detail.html:146 +#: part/templates/part/detail.html:39 msgid "Part Test Templates" msgstr "" -#: part/templates/part/detail.html:151 +#: part/templates/part/detail.html:44 msgid "Add Test Template" msgstr "" -#: part/templates/part/detail.html:208 +#: part/templates/part/detail.html:101 msgid "Sales Order Allocations" msgstr "" -#: part/templates/part/detail.html:249 +#: part/templates/part/detail.html:142 msgid "Part Variants" msgstr "" -#: part/templates/part/detail.html:253 +#: part/templates/part/detail.html:146 msgid "Create new variant" msgstr "" -#: part/templates/part/detail.html:254 +#: part/templates/part/detail.html:147 msgid "New Variant" msgstr "" -#: part/templates/part/detail.html:281 +#: part/templates/part/detail.html:174 msgid "Add new parameter" msgstr "" -#: part/templates/part/detail.html:315 part/templates/part/part_sidebar.html:47 +#: part/templates/part/detail.html:208 part/templates/part/part_sidebar.html:45 msgid "Related Parts" msgstr "" -#: part/templates/part/detail.html:319 part/templates/part/detail.html:320 +#: part/templates/part/detail.html:212 part/templates/part/detail.html:213 msgid "Add Related" msgstr "" -#: part/templates/part/detail.html:340 part/templates/part/part_sidebar.html:19 +#: part/templates/part/detail.html:233 part/templates/part/part_sidebar.html:17 msgid "Bill of Materials" msgstr "" -#: part/templates/part/detail.html:345 +#: part/templates/part/detail.html:238 msgid "Export actions" msgstr "" -#: part/templates/part/detail.html:349 +#: part/templates/part/detail.html:242 msgid "Export BOM" msgstr "" -#: part/templates/part/detail.html:351 +#: part/templates/part/detail.html:244 msgid "Print BOM Report" msgstr "" -#: part/templates/part/detail.html:361 +#: part/templates/part/detail.html:254 msgid "Upload BOM" msgstr "" -#: part/templates/part/detail.html:363 templates/js/translated/part.js:267 +#: part/templates/part/detail.html:256 templates/js/translated/part.js:267 msgid "Copy BOM" msgstr "" -#: part/templates/part/detail.html:365 part/views.py:755 +#: part/templates/part/detail.html:258 part/views.py:755 msgid "Validate BOM" msgstr "" -#: part/templates/part/detail.html:370 +#: part/templates/part/detail.html:263 msgid "New BOM Item" msgstr "" -#: part/templates/part/detail.html:371 +#: part/templates/part/detail.html:264 msgid "Add BOM Item" msgstr "" -#: part/templates/part/detail.html:384 +#: part/templates/part/detail.html:277 msgid "Assemblies" msgstr "" -#: part/templates/part/detail.html:401 +#: part/templates/part/detail.html:294 msgid "Part Builds" msgstr "" -#: part/templates/part/detail.html:426 +#: part/templates/part/detail.html:319 msgid "Build Order Allocations" msgstr "" -#: part/templates/part/detail.html:436 +#: part/templates/part/detail.html:329 msgid "Part Suppliers" msgstr "" -#: part/templates/part/detail.html:463 +#: part/templates/part/detail.html:356 msgid "Part Manufacturers" msgstr "" -#: part/templates/part/detail.html:479 +#: part/templates/part/detail.html:372 msgid "Delete manufacturer parts" msgstr "" -#: part/templates/part/detail.html:660 +#: part/templates/part/detail.html:553 msgid "Delete selected BOM items?" msgstr "" -#: part/templates/part/detail.html:661 +#: part/templates/part/detail.html:554 msgid "All selected BOM items will be deleted" msgstr "" -#: part/templates/part/detail.html:712 +#: part/templates/part/detail.html:605 msgid "Create BOM Item" msgstr "" -#: part/templates/part/detail.html:764 +#: part/templates/part/detail.html:657 msgid "Related Part" msgstr "" -#: part/templates/part/detail.html:772 +#: part/templates/part/detail.html:665 msgid "Add Related Part" msgstr "" -#: part/templates/part/detail.html:869 +#: part/templates/part/detail.html:762 msgid "Add Test Result Template" msgstr "" -#: part/templates/part/detail.html:926 +#: part/templates/part/detail.html:819 msgid "Edit Part Notes" msgstr "" -#: part/templates/part/detail.html:1039 +#: part/templates/part/detail.html:932 #, python-format msgid "Purchase Unit Price - %(currency)s" msgstr "" -#: part/templates/part/detail.html:1051 +#: part/templates/part/detail.html:944 #, python-format msgid "Unit Price-Cost Difference - %(currency)s" msgstr "" -#: part/templates/part/detail.html:1063 +#: part/templates/part/detail.html:956 #, python-format msgid "Supplier Unit Cost - %(currency)s" msgstr "" -#: part/templates/part/detail.html:1152 +#: part/templates/part/detail.html:1045 #, python-format msgid "Unit Price - %(currency)s" msgstr "" @@ -4669,36 +4676,36 @@ msgstr "" msgid "Delete part" msgstr "" -#: part/templates/part/part_base.html:109 +#: part/templates/part/part_base.html:112 msgid "Part is a template part (variants can be made from this part)" msgstr "" -#: part/templates/part/part_base.html:113 +#: part/templates/part/part_base.html:116 msgid "Part can be assembled from other parts" msgstr "" -#: part/templates/part/part_base.html:117 +#: part/templates/part/part_base.html:120 msgid "Part can be used in assemblies" msgstr "" -#: part/templates/part/part_base.html:121 +#: part/templates/part/part_base.html:124 msgid "Part stock is tracked by serial number" msgstr "" -#: part/templates/part/part_base.html:125 +#: part/templates/part/part_base.html:128 msgid "Part can be purchased from external suppliers" msgstr "" -#: part/templates/part/part_base.html:129 +#: part/templates/part/part_base.html:132 msgid "Part can be sold to customers" msgstr "" -#: part/templates/part/part_base.html:135 -#: part/templates/part/part_base.html:143 +#: part/templates/part/part_base.html:138 +#: part/templates/part/part_base.html:146 msgid "Part is virtual (not a physical part)" msgstr "" -#: part/templates/part/part_base.html:136 +#: part/templates/part/part_base.html:139 #: templates/js/translated/company.js:505 #: templates/js/translated/company.js:762 #: templates/js/translated/model_renderers.js:175 @@ -4706,49 +4713,66 @@ msgstr "" msgid "Inactive" msgstr "" -#: part/templates/part/part_base.html:155 +#: part/templates/part/part_base.html:156 +#: part/templates/part/part_base.html:572 +msgid "Show Part Details" +msgstr "" + +#: part/templates/part/part_base.html:173 #, python-format msgid "This part is a variant of %(link)s" msgstr "" -#: part/templates/part/part_base.html:172 templates/js/translated/order.js:1546 +#: part/templates/part/part_base.html:190 templates/js/translated/order.js:1546 #: templates/js/translated/table_filters.js:188 msgid "In Stock" msgstr "" -#: part/templates/part/part_base.html:185 templates/js/translated/part.js:1054 +#: part/templates/part/part_base.html:203 templates/js/translated/part.js:1054 msgid "On Order" msgstr "" -#: part/templates/part/part_base.html:192 templates/InvenTree/index.html:178 +#: part/templates/part/part_base.html:210 templates/InvenTree/index.html:178 msgid "Required for Build Orders" msgstr "" -#: part/templates/part/part_base.html:199 +#: part/templates/part/part_base.html:217 msgid "Required for Sales Orders" msgstr "" -#: part/templates/part/part_base.html:206 +#: part/templates/part/part_base.html:224 msgid "Allocated to Orders" msgstr "" -#: part/templates/part/part_base.html:221 templates/js/translated/bom.js:566 +#: part/templates/part/part_base.html:239 templates/js/translated/bom.js:566 msgid "Can Build" msgstr "" -#: part/templates/part/part_base.html:227 templates/js/translated/part.js:885 +#: part/templates/part/part_base.html:245 templates/js/translated/part.js:885 #: templates/js/translated/part.js:1058 msgid "Building" msgstr "" -#: part/templates/part/part_base.html:320 part/templates/part/prices.html:144 +#: part/templates/part/part_base.html:295 +msgid "Minimum stock level" +msgstr "" + +#: part/templates/part/part_base.html:324 +msgid "Latest Serial Number" +msgstr "" + +#: part/templates/part/part_base.html:442 part/templates/part/prices.html:144 msgid "Calculate" msgstr "" -#: part/templates/part/part_base.html:363 +#: part/templates/part/part_base.html:485 msgid "No matching images found" msgstr "" +#: part/templates/part/part_base.html:566 +msgid "Hide Part Details" +msgstr "" + #: part/templates/part/part_pricing.html:22 part/templates/part/prices.html:21 msgid "Supplier Pricing" msgstr "" @@ -4806,20 +4830,15 @@ msgstr "" msgid "No pricing information is available for this part." msgstr "" -#: part/templates/part/part_sidebar.html:8 -#: templates/js/translated/stock.js:1949 -msgid "Details" -msgstr "" - -#: part/templates/part/part_sidebar.html:13 +#: part/templates/part/part_sidebar.html:11 msgid "Variants" msgstr "" -#: part/templates/part/part_sidebar.html:27 +#: part/templates/part/part_sidebar.html:25 msgid "Used In" msgstr "" -#: part/templates/part/part_sidebar.html:43 +#: part/templates/part/part_sidebar.html:41 msgid "Test Templates" msgstr "" @@ -5173,7 +5192,7 @@ msgid "Stock Item Test Report" msgstr "" #: report/templates/report/inventree_test_report_base.html:79 -#: stock/models.py:530 stock/templates/stock/item_base.html:238 +#: stock/models.py:530 stock/templates/stock/item_base.html:149 #: templates/js/translated/build.js:233 templates/js/translated/build.js:637 #: templates/js/translated/build.js:1013 #: templates/js/translated/model_renderers.js:95 @@ -5223,7 +5242,7 @@ msgid "Quantity is required" msgstr "" #: stock/forms.py:91 stock/forms.py:265 stock/models.py:587 -#: stock/templates/stock/item_base.html:382 +#: stock/templates/stock/item_base.html:179 #: templates/js/translated/stock.js:1276 msgid "Expiry Date" msgstr "" @@ -5273,7 +5292,7 @@ msgid "Confirm removal of installed stock items" msgstr "" #: stock/models.py:60 stock/models.py:624 -#: stock/templates/stock/item_base.html:422 +#: stock/templates/stock/item_base.html:410 msgid "Owner" msgstr "" @@ -5335,7 +5354,7 @@ msgstr "" msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:513 stock/templates/stock/item_base.html:271 +#: stock/models.py:513 stock/templates/stock/item_base.html:292 msgid "Installed In" msgstr "" @@ -5631,125 +5650,123 @@ msgstr "" msgid "Install" msgstr "" -#: stock/templates/stock/item_base.html:106 +#: stock/templates/stock/item_base.html:108 msgid "Convert to variant" msgstr "" -#: stock/templates/stock/item_base.html:109 +#: stock/templates/stock/item_base.html:111 msgid "Duplicate stock item" msgstr "" -#: stock/templates/stock/item_base.html:111 +#: stock/templates/stock/item_base.html:113 msgid "Edit stock item" msgstr "" -#: stock/templates/stock/item_base.html:114 +#: stock/templates/stock/item_base.html:116 msgid "Delete stock item" msgstr "" -#: stock/templates/stock/item_base.html:136 -#: stock/templates/stock/item_base.html:386 -#: templates/js/translated/table_filters.js:247 -msgid "Expired" -msgstr "" - -#: stock/templates/stock/item_base.html:146 -#: stock/templates/stock/item_base.html:388 -#: templates/js/translated/table_filters.js:253 -msgid "Stale" -msgstr "" - -#: stock/templates/stock/item_base.html:161 -msgid "You are not in the list of owners of this item. This stock item cannot be edited." -msgstr "" - -#: stock/templates/stock/item_base.html:168 -msgid "This stock item is in production and cannot be edited." -msgstr "" - -#: stock/templates/stock/item_base.html:169 -msgid "Edit the stock item from the build view." -msgstr "" - -#: stock/templates/stock/item_base.html:182 -msgid "This stock item has not passed all required tests" -msgstr "" - -#: stock/templates/stock/item_base.html:190 -#, python-format -msgid "This stock item is allocated to Sales Order %(link)s (Quantity: %(qty)s)" -msgstr "" - -#: stock/templates/stock/item_base.html:198 -#, python-format -msgid "This stock item is allocated to Build %(link)s (Quantity: %(qty)s)" -msgstr "" - -#: stock/templates/stock/item_base.html:204 -msgid "This stock item is serialized - it has a unique serial number and the quantity cannot be adjusted." -msgstr "" - -#: stock/templates/stock/item_base.html:208 -msgid "This stock item cannot be deleted as it has child items" -msgstr "" - -#: stock/templates/stock/item_base.html:212 -msgid "This stock item will be automatically deleted when all stock is depleted." -msgstr "" - -#: stock/templates/stock/item_base.html:241 +#: stock/templates/stock/item_base.html:152 msgid "previous page" msgstr "" -#: stock/templates/stock/item_base.html:247 +#: stock/templates/stock/item_base.html:158 msgid "next page" msgstr "" -#: stock/templates/stock/item_base.html:290 -#: templates/js/translated/build.js:1035 -msgid "No location set" -msgstr "" - -#: stock/templates/stock/item_base.html:297 -msgid "Barcode Identifier" -msgstr "" - -#: stock/templates/stock/item_base.html:339 -msgid "Parent Item" -msgstr "" - -#: stock/templates/stock/item_base.html:357 -msgid "No manufacturer set" -msgstr "" - -#: stock/templates/stock/item_base.html:386 +#: stock/templates/stock/item_base.html:183 #, python-format msgid "This StockItem expired on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:388 +#: stock/templates/stock/item_base.html:183 +#: templates/js/translated/table_filters.js:247 +msgid "Expired" +msgstr "" + +#: stock/templates/stock/item_base.html:185 #, python-format msgid "This StockItem expires on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:395 +#: stock/templates/stock/item_base.html:185 +#: templates/js/translated/table_filters.js:253 +msgid "Stale" +msgstr "" + +#: stock/templates/stock/item_base.html:192 #: templates/js/translated/stock.js:1289 msgid "Last Updated" msgstr "" -#: stock/templates/stock/item_base.html:400 +#: stock/templates/stock/item_base.html:197 msgid "Last Stocktake" msgstr "" -#: stock/templates/stock/item_base.html:404 +#: stock/templates/stock/item_base.html:201 msgid "No stocktake performed" msgstr "" -#: stock/templates/stock/item_base.html:415 +#: stock/templates/stock/item_base.html:219 +msgid "You are not in the list of owners of this item. This stock item cannot be edited." +msgstr "" + +#: stock/templates/stock/item_base.html:226 +msgid "This stock item is in production and cannot be edited." +msgstr "" + +#: stock/templates/stock/item_base.html:227 +msgid "Edit the stock item from the build view." +msgstr "" + +#: stock/templates/stock/item_base.html:240 +msgid "This stock item has not passed all required tests" +msgstr "" + +#: stock/templates/stock/item_base.html:248 +#, python-format +msgid "This stock item is allocated to Sales Order %(link)s (Quantity: %(qty)s)" +msgstr "" + +#: stock/templates/stock/item_base.html:256 +#, python-format +msgid "This stock item is allocated to Build %(link)s (Quantity: %(qty)s)" +msgstr "" + +#: stock/templates/stock/item_base.html:262 +msgid "This stock item is serialized - it has a unique serial number and the quantity cannot be adjusted." +msgstr "" + +#: stock/templates/stock/item_base.html:266 +msgid "This stock item cannot be deleted as it has child items" +msgstr "" + +#: stock/templates/stock/item_base.html:270 +msgid "This stock item will be automatically deleted when all stock is depleted." +msgstr "" + +#: stock/templates/stock/item_base.html:311 +#: templates/js/translated/build.js:1035 +msgid "No location set" +msgstr "" + +#: stock/templates/stock/item_base.html:318 +msgid "Barcode Identifier" +msgstr "" + +#: stock/templates/stock/item_base.html:360 +msgid "Parent Item" +msgstr "" + +#: stock/templates/stock/item_base.html:378 +msgid "No manufacturer set" +msgstr "" + +#: stock/templates/stock/item_base.html:403 msgid "Tests" msgstr "" -#: stock/templates/stock/item_base.html:505 +#: stock/templates/stock/item_base.html:493 msgid "Edit Stock Status" msgstr "" @@ -5827,30 +5844,35 @@ msgstr "" msgid "New Location" msgstr "" -#: stock/templates/stock/location.html:86 +#: stock/templates/stock/location.html:95 +#: stock/templates/stock/location.html:101 +msgid "Location Path" +msgstr "" + +#: stock/templates/stock/location.html:102 msgid "Top level stock location" msgstr "" -#: stock/templates/stock/location.html:95 +#: stock/templates/stock/location.html:115 msgid "You are not in the list of owners of this location. This stock location cannot be edited." msgstr "" -#: stock/templates/stock/location.html:113 -#: stock/templates/stock/location.html:160 +#: stock/templates/stock/location.html:128 +#: stock/templates/stock/location.html:175 #: stock/templates/stock/location_sidebar.html:5 msgid "Sublocations" msgstr "" -#: stock/templates/stock/location.html:127 templates/InvenTree/search.html:170 +#: stock/templates/stock/location.html:142 templates/InvenTree/search.html:170 #: templates/stats.html:97 users/models.py:42 msgid "Stock Locations" msgstr "" -#: stock/templates/stock/location.html:167 templates/stock_table.html:30 +#: stock/templates/stock/location.html:182 templates/stock_table.html:30 msgid "Printing Actions" msgstr "" -#: stock/templates/stock/location.html:171 templates/stock_table.html:34 +#: stock/templates/stock/location.html:186 templates/stock_table.html:34 msgid "Print labels" msgstr "" @@ -7201,10 +7223,6 @@ msgstr "" msgid "Delete Supplier Part" msgstr "" -#: templates/js/translated/company.js:265 -msgid "Edit Company" -msgstr "" - #: templates/js/translated/company.js:286 msgid "Add new Company" msgstr "" @@ -8167,6 +8185,10 @@ msgstr "" msgid "Invalid date" msgstr "" +#: templates/js/translated/stock.js:1949 +msgid "Details" +msgstr "" + #: templates/js/translated/stock.js:1974 msgid "Location no longer exists" msgstr "" diff --git a/InvenTree/locale/fr/LC_MESSAGES/django.po b/InvenTree/locale/fr/LC_MESSAGES/django.po index 235abaafb7..ccbb92c1b4 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-11-30 21:49+0000\n" -"PO-Revision-Date: 2021-11-30 21:51\n" +"POT-Creation-Date: 2021-12-03 10:37+0000\n" +"PO-Revision-Date: 2021-12-03 11:25\n" "Last-Translator: \n" "Language-Team: French\n" "Language: fr_FR\n" @@ -114,129 +114,130 @@ msgstr "Aucun numéro de série trouvé" msgid "Number of unique serial number ({s}) must match quantity ({q})" msgstr "Le nombre de numéros de série uniques ({s}) doit correspondre à la quantité ({q})" -#: InvenTree/models.py:114 +#: InvenTree/models.py:120 msgid "Missing file" msgstr "" -#: InvenTree/models.py:115 +#: InvenTree/models.py:121 msgid "Missing external link" msgstr "" -#: InvenTree/models.py:126 stock/models.py:1874 +#: InvenTree/models.py:132 stock/models.py:1864 #: templates/js/translated/attachment.js:117 msgid "Attachment" msgstr "Pièce jointe" -#: InvenTree/models.py:127 +#: InvenTree/models.py:133 msgid "Select file to attach" msgstr "Sélectionnez un fichier à joindre" -#: InvenTree/models.py:133 company/models.py:131 company/models.py:348 +#: InvenTree/models.py:139 company/models.py:131 company/models.py:348 #: company/models.py:564 order/models.py:163 part/models.py:797 #: report/templates/report/inventree_build_order_base.html:165 #: templates/js/translated/company.js:537 -#: templates/js/translated/company.js:826 templates/js/translated/part.js:1077 +#: templates/js/translated/company.js:826 templates/js/translated/part.js:1258 msgid "Link" msgstr "Lien" -#: InvenTree/models.py:134 build/models.py:330 part/models.py:798 -#: stock/models.py:540 +#: InvenTree/models.py:140 build/models.py:330 part/models.py:798 +#: stock/models.py:530 msgid "Link to external URL" msgstr "Lien vers une url externe" -#: InvenTree/models.py:137 templates/js/translated/attachment.js:161 +#: InvenTree/models.py:143 templates/js/translated/attachment.js:161 msgid "Comment" msgstr "Commentaire" -#: InvenTree/models.py:137 +#: InvenTree/models.py:143 msgid "File comment" msgstr "Commentaire du fichier" -#: InvenTree/models.py:143 InvenTree/models.py:144 common/models.py:1185 +#: InvenTree/models.py:149 InvenTree/models.py:150 common/models.py:1185 #: common/models.py:1186 part/models.py:2205 part/models.py:2225 #: report/templates/report/inventree_test_report_base.html:96 -#: templates/js/translated/stock.js:2084 +#: templates/js/translated/stock.js:2166 msgid "User" msgstr "Utilisateur" -#: InvenTree/models.py:147 +#: InvenTree/models.py:153 msgid "upload date" msgstr "date de chargement" -#: InvenTree/models.py:170 +#: InvenTree/models.py:176 msgid "Filename must not be empty" msgstr "Le nom de fichier ne doit pas être vide" -#: InvenTree/models.py:193 +#: InvenTree/models.py:199 msgid "Invalid attachment directory" msgstr "Répertoire de pièce jointe invalide" -#: InvenTree/models.py:203 +#: InvenTree/models.py:209 #, python-brace-format msgid "Filename contains illegal character '{c}'" msgstr "Le nom de fichier contient le caractère illégal '{c}'" -#: InvenTree/models.py:206 +#: InvenTree/models.py:212 msgid "Filename missing extension" msgstr "Extension manquante du nom de fichier" -#: InvenTree/models.py:213 +#: InvenTree/models.py:219 msgid "Attachment with this filename already exists" msgstr "Une pièce jointe avec ce nom de fichier existe déjà" -#: InvenTree/models.py:220 +#: InvenTree/models.py:226 msgid "Error renaming file" msgstr "Erreur lors du renommage du fichier" -#: InvenTree/models.py:255 +#: InvenTree/models.py:261 msgid "Invalid choice" msgstr "Choix invalide" -#: InvenTree/models.py:271 InvenTree/models.py:272 company/models.py:415 +#: InvenTree/models.py:277 InvenTree/models.py:278 company/models.py:415 #: label/models.py:112 part/models.py:741 part/models.py:2389 -#: part/templates/part/detail.html:25 report/models.py:181 -#: templates/InvenTree/settings/settings.html:259 -#: templates/js/translated/company.js:638 templates/js/translated/part.js:499 -#: templates/js/translated/part.js:636 templates/js/translated/part.js:1384 -#: templates/js/translated/stock.js:1877 +#: report/models.py:181 templates/InvenTree/settings/settings.html:259 +#: templates/js/translated/company.js:638 templates/js/translated/part.js:506 +#: templates/js/translated/part.js:643 templates/js/translated/part.js:1565 +#: templates/js/translated/stock.js:1959 msgid "Name" msgstr "Nom" -#: InvenTree/models.py:278 build/models.py:207 +#: InvenTree/models.py:284 build/models.py:207 #: build/templates/build/detail.html:25 company/models.py:354 -#: company/models.py:570 company/templates/company/manufacturer_part.html:80 -#: company/templates/company/supplier_part.html:81 label/models.py:119 -#: order/models.py:161 part/models.py:764 part/templates/part/detail.html:30 +#: company/models.py:570 company/templates/company/company_base.html:68 +#: company/templates/company/manufacturer_part.html:76 +#: company/templates/company/supplier_part.html:73 label/models.py:119 +#: order/models.py:161 part/models.py:764 part/templates/part/category.html:70 +#: part/templates/part/part_base.html:163 #: part/templates/part/set_category.html:14 report/models.py:194 #: report/models.py:553 report/models.py:592 #: report/templates/report/inventree_build_order_base.html:118 -#: stock/templates/stock/location.html:108 templates/js/translated/bom.js:215 +#: stock/templates/stock/location.html:89 templates/js/translated/bom.js:215 #: templates/js/translated/bom.js:428 templates/js/translated/build.js:1621 #: templates/js/translated/company.js:345 #: templates/js/translated/company.js:548 -#: templates/js/translated/company.js:837 templates/js/translated/order.js:673 -#: templates/js/translated/order.js:855 templates/js/translated/order.js:1091 -#: templates/js/translated/part.js:558 templates/js/translated/part.js:752 -#: templates/js/translated/part.js:837 templates/js/translated/part.js:1007 -#: templates/js/translated/part.js:1403 templates/js/translated/part.js:1472 -#: templates/js/translated/stock.js:1151 templates/js/translated/stock.js:1889 -#: templates/js/translated/stock.js:1934 +#: templates/js/translated/company.js:837 templates/js/translated/order.js:680 +#: templates/js/translated/order.js:854 templates/js/translated/order.js:1090 +#: templates/js/translated/part.js:565 templates/js/translated/part.js:933 +#: templates/js/translated/part.js:1018 templates/js/translated/part.js:1188 +#: templates/js/translated/part.js:1584 templates/js/translated/part.js:1653 +#: templates/js/translated/stock.js:1233 templates/js/translated/stock.js:1971 +#: templates/js/translated/stock.js:2016 msgid "Description" msgstr "Description" -#: InvenTree/models.py:279 +#: InvenTree/models.py:285 msgid "Description (optional)" msgstr "Description (facultative)" -#: InvenTree/models.py:287 +#: InvenTree/models.py:293 msgid "parent" msgstr "parent" -#: InvenTree/serializers.py:62 part/models.py:2674 +#: InvenTree/serializers.py:65 part/models.py:2674 msgid "Must be a valid number" msgstr "Doit être un nombre valide" -#: InvenTree/serializers.py:285 +#: InvenTree/serializers.py:299 msgid "Filename" msgstr "Nom du fichier" @@ -361,7 +362,7 @@ msgid "Returned" msgstr "Retourné" #: InvenTree/status_codes.py:143 -#: order/templates/order/sales_order_base.html:147 +#: order/templates/order/sales_order_base.html:148 msgid "Shipped" msgstr "Expédié" @@ -566,7 +567,7 @@ msgid "Barcode associated with StockItem" msgstr "" #: build/forms.py:36 build/models.py:1283 -#: build/templates/build/build_base.html:124 +#: build/templates/build/build_base.html:132 #: build/templates/build/detail.html:35 common/models.py:1225 #: company/forms.py:42 company/templates/company/supplier_part.html:251 #: order/forms.py:102 order/models.py:729 order/models.py:991 @@ -574,26 +575,27 @@ msgstr "" #: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:223 #: part/forms.py:239 part/forms.py:255 part/models.py:2576 #: part/templates/part/bom_upload/match_parts.html:31 -#: part/templates/part/detail.html:1076 part/templates/part/detail.html:1162 +#: part/templates/part/detail.html:967 part/templates/part/detail.html:1053 #: part/templates/part/part_pricing.html:16 #: report/templates/report/inventree_build_order_base.html:114 #: report/templates/report/inventree_po_report.html:91 #: report/templates/report/inventree_so_report.html:91 #: report/templates/report/inventree_test_report_base.html:81 #: report/templates/report/inventree_test_report_base.html:139 -#: stock/forms.py:156 stock/serializers.py:286 -#: stock/templates/stock/item_base.html:256 +#: stock/forms.py:156 stock/serializers.py:291 +#: stock/templates/stock/item_base.html:174 #: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:443 #: templates/js/translated/build.js:235 templates/js/translated/build.js:435 #: templates/js/translated/build.js:629 templates/js/translated/build.js:639 #: templates/js/translated/build.js:1015 templates/js/translated/build.js:1362 #: templates/js/translated/model_renderers.js:99 -#: templates/js/translated/order.js:892 templates/js/translated/order.js:1205 -#: templates/js/translated/order.js:1283 templates/js/translated/order.js:1290 -#: templates/js/translated/order.js:1379 templates/js/translated/order.js:1479 -#: templates/js/translated/part.js:1615 templates/js/translated/part.js:1738 -#: templates/js/translated/part.js:1816 templates/js/translated/stock.js:377 -#: templates/js/translated/stock.js:2069 templates/js/translated/stock.js:2171 +#: templates/js/translated/order.js:891 templates/js/translated/order.js:1204 +#: templates/js/translated/order.js:1282 templates/js/translated/order.js:1289 +#: templates/js/translated/order.js:1378 templates/js/translated/order.js:1478 +#: templates/js/translated/part.js:843 templates/js/translated/part.js:1796 +#: templates/js/translated/part.js:1919 templates/js/translated/part.js:1997 +#: templates/js/translated/stock.js:378 templates/js/translated/stock.js:2151 +#: templates/js/translated/stock.js:2253 msgid "Quantity" msgstr "Quantité" @@ -602,8 +604,8 @@ msgid "Enter quantity for build output" msgstr "" #: build/forms.py:41 order/forms.py:96 stock/forms.py:95 -#: stock/serializers.py:307 templates/js/translated/stock.js:224 -#: templates/js/translated/stock.js:378 +#: stock/serializers.py:312 templates/js/translated/stock.js:225 +#: templates/js/translated/stock.js:379 msgid "Serial Numbers" msgstr "Numéros de série" @@ -646,7 +648,7 @@ msgstr "Ordre de Fabrication" #: build/templates/build/index.html:8 build/templates/build/index.html:12 #: order/templates/order/sales_order_detail.html:42 #: order/templates/order/so_sidebar.html:7 -#: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:221 +#: part/templates/part/part_sidebar.html:20 templates/InvenTree/index.html:221 #: templates/InvenTree/search.html:145 #: templates/InvenTree/settings/sidebar.html:42 users/models.py:44 msgid "Build Orders" @@ -662,7 +664,7 @@ msgstr "Référence de l' Ordre de Fabrication" #: report/templates/report/inventree_po_report.html:92 #: report/templates/report/inventree_so_report.html:92 #: templates/js/translated/bom.js:435 templates/js/translated/build.js:1119 -#: templates/js/translated/order.js:886 templates/js/translated/order.js:1473 +#: templates/js/translated/order.js:885 templates/js/translated/order.js:1472 msgid "Reference" msgstr "Référence" @@ -670,7 +672,7 @@ msgstr "Référence" msgid "Brief description of the build" msgstr "" -#: build/models.py:219 build/templates/build/build_base.html:156 +#: build/models.py:219 build/templates/build/build_base.html:164 #: build/templates/build/detail.html:88 msgid "Parent Build" msgstr "" @@ -679,7 +681,7 @@ msgstr "" msgid "BuildOrder to which this build is allocated" msgstr "" -#: build/models.py:225 build/templates/build/build_base.html:119 +#: build/models.py:225 build/templates/build/build_base.html:77 #: build/templates/build/detail.html:30 company/models.py:705 #: order/models.py:789 order/models.py:860 #: order/templates/order/order_wizard/select_parts.html:32 part/models.py:357 @@ -700,10 +702,10 @@ msgstr "" #: templates/js/translated/build.js:988 templates/js/translated/build.js:1359 #: templates/js/translated/build.js:1626 templates/js/translated/company.js:489 #: templates/js/translated/company.js:746 templates/js/translated/order.js:426 -#: templates/js/translated/order.js:840 templates/js/translated/order.js:1457 -#: templates/js/translated/part.js:737 templates/js/translated/part.js:818 -#: templates/js/translated/part.js:985 templates/js/translated/stock.js:508 -#: templates/js/translated/stock.js:1108 templates/js/translated/stock.js:2159 +#: templates/js/translated/order.js:839 templates/js/translated/order.js:1456 +#: templates/js/translated/part.js:918 templates/js/translated/part.js:999 +#: templates/js/translated/part.js:1166 templates/js/translated/stock.js:590 +#: templates/js/translated/stock.js:1190 templates/js/translated/stock.js:2241 msgid "Part" msgstr "Pièce" @@ -751,7 +753,7 @@ msgstr "" msgid "Number of stock items which have been completed" msgstr "" -#: build/models.py:277 part/templates/part/part_base.html:216 +#: build/models.py:277 part/templates/part/part_base.html:234 msgid "Build Status" msgstr "" @@ -759,7 +761,7 @@ msgstr "" msgid "Build status code" msgstr "" -#: build/models.py:285 stock/models.py:544 +#: build/models.py:285 stock/models.py:534 msgid "Batch Code" msgstr "" @@ -768,7 +770,7 @@ msgid "Batch code for this build output" msgstr "" #: build/models.py:292 order/models.py:165 part/models.py:936 -#: part/templates/part/detail.html:86 templates/js/translated/order.js:1104 +#: part/templates/part/part_base.html:313 templates/js/translated/order.js:1103 msgid "Creation Date" msgstr "Date de création" @@ -797,12 +799,12 @@ msgstr "" msgid "User who issued this build order" msgstr "" -#: build/models.py:323 build/templates/build/build_base.html:177 +#: build/models.py:323 build/templates/build/build_base.html:185 #: build/templates/build/detail.html:116 order/models.py:179 -#: order/templates/order/order_base.html:154 -#: order/templates/order/sales_order_base.html:161 part/models.py:940 +#: order/templates/order/order_base.html:158 +#: order/templates/order/sales_order_base.html:162 part/models.py:940 #: report/templates/report/inventree_build_order_base.html:159 -#: templates/js/translated/build.js:1680 templates/js/translated/order.js:700 +#: templates/js/translated/build.js:1680 templates/js/translated/order.js:699 msgid "Responsible" msgstr "" @@ -811,10 +813,10 @@ msgid "User responsible for this build order" msgstr "" #: build/models.py:329 build/templates/build/detail.html:102 -#: company/templates/company/manufacturer_part.html:87 -#: company/templates/company/supplier_part.html:88 -#: part/templates/part/detail.html:80 stock/models.py:538 -#: stock/templates/stock/item_base.html:346 +#: company/templates/company/manufacturer_part.html:102 +#: company/templates/company/supplier_part.html:126 +#: part/templates/part/part_base.html:354 stock/models.py:528 +#: stock/templates/stock/item_base.html:374 msgid "External Link" msgstr "Lien Externe" @@ -824,15 +826,15 @@ msgstr "Lien Externe" #: order/models.py:183 order/models.py:738 #: order/templates/order/po_sidebar.html:11 #: order/templates/order/so_sidebar.html:11 part/models.py:925 -#: part/templates/part/detail.html:223 part/templates/part/part_sidebar.html:52 +#: part/templates/part/detail.html:116 part/templates/part/part_sidebar.html:50 #: report/templates/report/inventree_build_order_base.html:173 -#: stock/forms.py:154 stock/forms.py:204 stock/forms.py:238 stock/models.py:610 -#: stock/models.py:1774 stock/models.py:1880 stock/serializers.py:325 -#: stock/serializers.py:583 stock/templates/stock/stock_sidebar.html:21 +#: stock/forms.py:154 stock/forms.py:204 stock/forms.py:238 stock/models.py:600 +#: stock/models.py:1764 stock/models.py:1870 stock/serializers.py:330 +#: stock/serializers.py:588 stock/templates/stock/stock_sidebar.html:21 #: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:599 -#: templates/js/translated/company.js:842 templates/js/translated/order.js:985 -#: templates/js/translated/order.js:1583 templates/js/translated/stock.js:891 -#: templates/js/translated/stock.js:1370 +#: templates/js/translated/company.js:842 templates/js/translated/order.js:984 +#: templates/js/translated/order.js:1582 templates/js/translated/stock.js:973 +#: templates/js/translated/stock.js:1452 msgid "Notes" msgstr "Notes" @@ -877,7 +879,7 @@ msgstr "" msgid "Selected stock item not found in BOM" msgstr "" -#: build/models.py:1253 stock/templates/stock/item_base.html:318 +#: build/models.py:1253 stock/templates/stock/item_base.html:346 #: templates/InvenTree/search.html:143 templates/js/translated/build.js:1599 #: templates/navbar.html:33 msgid "Build" @@ -890,11 +892,11 @@ msgstr "" #: build/models.py:1270 build/serializers.py:328 #: stock/templates/stock/item_base.html:8 #: stock/templates/stock/item_base.html:16 -#: stock/templates/stock/item_base.html:340 +#: stock/templates/stock/item_base.html:368 #: templates/js/translated/build.js:408 templates/js/translated/build.js:413 #: templates/js/translated/build.js:1361 templates/js/translated/build.js:1742 -#: templates/js/translated/order.js:1178 templates/js/translated/order.js:1183 -#: templates/js/translated/stock.js:2020 +#: templates/js/translated/order.js:1177 templates/js/translated/order.js:1182 +#: templates/js/translated/stock.js:2102 msgid "Stock Item" msgstr "Article en stock" @@ -934,16 +936,16 @@ msgstr "" msgid "This build output is not fully allocated" msgstr "" -#: build/serializers.py:190 order/serializers.py:219 order/serializers.py:287 -#: stock/forms.py:236 stock/serializers.py:318 stock/serializers.py:685 -#: stock/templates/stock/item_base.html:286 +#: build/serializers.py:190 order/serializers.py:228 order/serializers.py:296 +#: stock/forms.py:236 stock/serializers.py:323 stock/serializers.py:690 +#: stock/templates/stock/item_base.html:314 #: templates/js/translated/barcode.js:384 #: templates/js/translated/barcode.js:557 templates/js/translated/build.js:420 #: templates/js/translated/build.js:1027 templates/js/translated/order.js:348 -#: templates/js/translated/order.js:1190 templates/js/translated/order.js:1298 -#: templates/js/translated/order.js:1304 templates/js/translated/part.js:181 -#: templates/js/translated/stock.js:510 templates/js/translated/stock.js:1251 -#: templates/js/translated/stock.js:1961 +#: templates/js/translated/order.js:1189 templates/js/translated/order.js:1297 +#: templates/js/translated/order.js:1303 templates/js/translated/part.js:177 +#: templates/js/translated/stock.js:592 templates/js/translated/stock.js:1333 +#: templates/js/translated/stock.js:2043 msgid "Location" msgstr "Emplacement" @@ -951,13 +953,13 @@ msgstr "Emplacement" msgid "Location for completed build outputs" msgstr "" -#: build/serializers.py:197 build/templates/build/build_base.html:129 +#: build/serializers.py:197 build/templates/build/build_base.html:137 #: build/templates/build/detail.html:63 order/models.py:572 -#: order/serializers.py:240 stock/templates/stock/item_base.html:409 +#: order/serializers.py:249 stock/templates/stock/item_base.html:180 #: templates/js/translated/barcode.js:140 templates/js/translated/build.js:1655 -#: templates/js/translated/order.js:431 templates/js/translated/order.js:677 -#: templates/js/translated/order.js:1096 templates/js/translated/stock.js:1226 -#: templates/js/translated/stock.js:2038 templates/js/translated/stock.js:2187 +#: templates/js/translated/order.js:431 templates/js/translated/order.js:1095 +#: templates/js/translated/stock.js:1308 templates/js/translated/stock.js:2120 +#: templates/js/translated/stock.js:2269 msgid "Status" msgstr "État" @@ -986,8 +988,8 @@ msgstr "" msgid "Item must be in stock" msgstr "L'article doit être en stock" -#: build/serializers.py:348 order/models.py:316 order/serializers.py:233 -#: stock/models.py:381 stock/models.py:1103 stock/serializers.py:298 +#: build/serializers.py:348 order/models.py:316 order/serializers.py:242 +#: stock/models.py:371 stock/models.py:1093 stock/serializers.py:303 msgid "Quantity must be greater than zero" msgstr "La quantité doit être supérieure à zéro" @@ -1031,7 +1033,7 @@ msgid "Edit Build" msgstr "Modifier l'assemblage" #: build/templates/build/build_base.html:56 -#: build/templates/build/build_base.html:207 build/views.py:56 +#: build/templates/build/build_base.html:215 build/views.py:56 msgid "Cancel Build" msgstr "Annuler l'assemblage" @@ -1041,93 +1043,95 @@ msgstr "Supprimer l'assemblage" #: build/templates/build/build_base.html:64 #: build/templates/build/build_base.html:65 -#: build/templates/build/build_base.html:223 +#: build/templates/build/build_base.html:231 msgid "Complete Build" msgstr "Compléter l'assemblage" -#: build/templates/build/build_base.html:79 +#: build/templates/build/build_base.html:82 +msgid "Build Description" +msgstr "" + +#: build/templates/build/build_base.html:91 #, python-format msgid "This Build Order is allocated to Sales Order %(link)s" msgstr "" -#: build/templates/build/build_base.html:86 +#: build/templates/build/build_base.html:98 #, python-format msgid "This Build Order is a child of Build Order %(link)s" msgstr "" -#: build/templates/build/build_base.html:93 +#: build/templates/build/build_base.html:105 msgid "Build Order is ready to mark as completed" msgstr "" -#: build/templates/build/build_base.html:98 +#: build/templates/build/build_base.html:110 msgid "Build Order cannot be completed as outstanding outputs remain" msgstr "" -#: build/templates/build/build_base.html:103 +#: build/templates/build/build_base.html:115 msgid "Required build quantity has not yet been completed" msgstr "" -#: build/templates/build/build_base.html:108 +#: build/templates/build/build_base.html:120 msgid "Stock has not been fully allocated to this Build Order" msgstr "" -#: build/templates/build/build_base.html:138 +#: build/templates/build/build_base.html:146 #: build/templates/build/detail.html:132 -#: order/templates/order/order_base.html:140 -#: order/templates/order/sales_order_base.html:140 +#: order/templates/order/order_base.html:144 +#: order/templates/order/sales_order_base.html:141 #: report/templates/report/inventree_build_order_base.html:126 -#: templates/js/translated/build.js:1692 templates/js/translated/order.js:690 -#: templates/js/translated/order.js:1109 +#: templates/js/translated/build.js:1692 templates/js/translated/order.js:689 +#: templates/js/translated/order.js:1108 msgid "Target Date" msgstr "Date Cible" -#: build/templates/build/build_base.html:143 +#: build/templates/build/build_base.html:151 #, python-format msgid "This build was due on %(target)s" msgstr "" -#: build/templates/build/build_base.html:143 -#: build/templates/build/build_base.html:188 -#: order/templates/order/order_base.html:81 -#: order/templates/order/order_base.html:102 -#: order/templates/order/sales_order_base.html:78 -#: order/templates/order/sales_order_base.html:107 +#: build/templates/build/build_base.html:151 +#: build/templates/build/build_base.html:196 +#: order/templates/order/order_base.html:98 +#: order/templates/order/sales_order_base.html:93 #: templates/js/translated/table_filters.js:294 #: templates/js/translated/table_filters.js:322 #: templates/js/translated/table_filters.js:339 msgid "Overdue" msgstr "En retard" -#: build/templates/build/build_base.html:150 +#: build/templates/build/build_base.html:158 #: build/templates/build/detail.html:68 build/templates/build/detail.html:143 #: templates/js/translated/build.js:1641 #: templates/js/translated/table_filters.js:304 msgid "Completed" msgstr "Terminé" -#: build/templates/build/build_base.html:163 +#: build/templates/build/build_base.html:171 #: build/templates/build/detail.html:95 order/models.py:857 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: order/templates/order/sales_order_ship.html:25 #: report/templates/report/inventree_build_order_base.html:136 #: report/templates/report/inventree_so_report.html:77 -#: stock/templates/stock/item_base.html:280 -#: templates/js/translated/order.js:1051 +#: stock/templates/stock/item_base.html:308 +#: templates/js/translated/order.js:1050 msgid "Sales Order" msgstr "Commandes" -#: build/templates/build/build_base.html:170 +#: build/templates/build/build_base.html:178 #: build/templates/build/detail.html:109 #: report/templates/report/inventree_build_order_base.html:153 msgid "Issued By" msgstr "" -#: build/templates/build/build_base.html:215 +#: build/templates/build/build_base.html:223 msgid "Incomplete Outputs" msgstr "" -#: build/templates/build/build_base.html:216 +#: build/templates/build/build_base.html:224 msgid "Build Order cannot be completed as incomplete build outputs remain" msgstr "" @@ -1188,7 +1192,7 @@ msgid "Stock can be taken from any available location." msgstr "" #: build/templates/build/detail.html:50 order/models.py:811 stock/forms.py:150 -#: templates/js/translated/order.js:432 templates/js/translated/order.js:974 +#: templates/js/translated/order.js:432 templates/js/translated/order.js:973 msgid "Destination" msgstr "Destination" @@ -1201,16 +1205,16 @@ msgid "Allocated Parts" msgstr "" #: build/templates/build/detail.html:81 -#: stock/templates/stock/item_base.html:304 -#: templates/js/translated/stock.js:1240 templates/js/translated/stock.js:2194 +#: stock/templates/stock/item_base.html:332 +#: templates/js/translated/stock.js:1322 templates/js/translated/stock.js:2276 #: templates/js/translated/table_filters.js:151 #: templates/js/translated/table_filters.js:233 msgid "Batch" msgstr "" #: build/templates/build/detail.html:127 -#: order/templates/order/order_base.html:127 -#: order/templates/order/sales_order_base.html:134 +#: order/templates/order/order_base.html:131 +#: order/templates/order/sales_order_base.html:135 #: templates/js/translated/build.js:1663 msgid "Created" msgstr "Créé le" @@ -1254,7 +1258,7 @@ msgstr "Commander les pièces requises" #: build/templates/build/detail.html:185 #: company/templates/company/detail.html:38 #: company/templates/company/detail.html:85 order/views.py:509 -#: part/templates/part/category.html:166 +#: part/templates/part/category.html:173 msgid "Order Parts" msgstr "Commander des pièces" @@ -1306,8 +1310,8 @@ msgstr "" #: order/templates/order/po_sidebar.html:9 #: order/templates/order/purchase_order_detail.html:60 #: order/templates/order/sales_order_detail.html:52 -#: order/templates/order/so_sidebar.html:9 part/templates/part/detail.html:300 -#: part/templates/part/part_sidebar.html:50 stock/templates/stock/item.html:95 +#: order/templates/order/so_sidebar.html:9 part/templates/part/detail.html:193 +#: part/templates/part/part_sidebar.html:48 stock/templates/stock/item.html:95 #: stock/templates/stock/stock_sidebar.html:19 msgid "Attachments" msgstr "Pieces jointes" @@ -1323,7 +1327,7 @@ msgstr "" #: order/templates/order/purchase_order_detail.html:108 #: order/templates/order/sales_order_detail.html:72 #: order/templates/order/sales_order_detail.html:99 -#: part/templates/part/detail.html:227 stock/templates/stock/item.html:115 +#: part/templates/part/detail.html:120 stock/templates/stock/item.html:115 #: stock/templates/stock/item.html:205 msgid "Edit Notes" msgstr "Modifier les notes" @@ -1336,7 +1340,7 @@ msgstr "" msgid "All untracked stock items have been allocated" msgstr "" -#: build/templates/build/index.html:18 part/templates/part/detail.html:407 +#: build/templates/build/index.html:18 part/templates/part/detail.html:300 msgid "New Build Order" msgstr "" @@ -1380,7 +1384,7 @@ msgstr "" msgid "Maximum output quantity is " msgstr "La quantité maximale de sortie est " -#: build/views.py:122 stock/serializers.py:356 stock/views.py:1290 +#: build/views.py:122 stock/serializers.py:361 stock/views.py:1290 msgid "Serial numbers already exist" msgstr "" @@ -1675,7 +1679,7 @@ msgid "Parts are trackable by default" msgstr "" #: common/models.py:745 part/models.py:920 -#: part/templates/part/part_base.html:144 +#: part/templates/part/part_base.html:147 #: templates/js/translated/table_filters.js:42 msgid "Virtual" msgstr "" @@ -2142,7 +2146,7 @@ msgstr "" #: common/models.py:1233 company/serializers.py:264 #: company/templates/company/supplier_part.html:256 -#: templates/js/translated/part.js:1620 +#: templates/js/translated/part.js:852 templates/js/translated/part.js:1801 msgid "Price" msgstr "" @@ -2206,7 +2210,7 @@ msgstr "" msgid "Description of the company" msgstr "" -#: company/models.py:112 company/templates/company/company_base.html:70 +#: company/models.py:112 company/templates/company/company_base.html:97 #: templates/js/translated/company.js:349 msgid "Website" msgstr "" @@ -2215,7 +2219,7 @@ msgstr "" msgid "Company website URL" msgstr "" -#: company/models.py:117 company/templates/company/company_base.html:88 +#: company/models.py:117 company/templates/company/company_base.html:115 msgid "Address" msgstr "" @@ -2231,7 +2235,7 @@ msgstr "" msgid "Contact phone number" msgstr "" -#: company/models.py:125 company/templates/company/company_base.html:102 +#: company/models.py:125 company/templates/company/company_base.html:129 #: templates/InvenTree/settings/user.html:47 msgid "Email" msgstr "E-mail" @@ -2240,7 +2244,7 @@ msgstr "E-mail" msgid "Contact email address" msgstr "Adresse e-mail de contact" -#: company/models.py:128 company/templates/company/company_base.html:109 +#: company/models.py:128 company/templates/company/company_base.html:136 msgid "Contact" msgstr "Contact" @@ -2281,7 +2285,7 @@ msgid "Does this company manufacture parts?" msgstr "Cette entreprise fabrique-t-elle des pièces?" #: company/models.py:152 company/serializers.py:270 -#: company/templates/company/company_base.html:76 stock/serializers.py:172 +#: company/templates/company/company_base.html:103 stock/serializers.py:177 msgid "Currency" msgstr "Devise" @@ -2289,8 +2293,8 @@ msgstr "Devise" msgid "Default currency used for this company" msgstr "" -#: company/models.py:320 company/models.py:535 stock/models.py:484 -#: stock/templates/stock/item_base.html:224 +#: company/models.py:320 company/models.py:535 stock/models.py:474 +#: stock/templates/stock/item_base.html:135 msgid "Base Part" msgstr "" @@ -2298,29 +2302,29 @@ msgstr "" msgid "Select part" msgstr "" -#: company/models.py:335 company/templates/company/company_base.html:116 -#: company/templates/company/manufacturer_part.html:93 -#: company/templates/company/supplier_part.html:104 -#: stock/templates/stock/item_base.html:353 +#: company/models.py:335 company/templates/company/company_base.html:73 +#: company/templates/company/manufacturer_part.html:91 +#: company/templates/company/supplier_part.html:97 +#: stock/templates/stock/item_base.html:381 #: templates/js/translated/company.js:333 #: templates/js/translated/company.js:514 -#: templates/js/translated/company.js:797 templates/js/translated/part.js:229 +#: templates/js/translated/company.js:797 templates/js/translated/part.js:232 msgid "Manufacturer" msgstr "Fabricant" -#: company/models.py:336 templates/js/translated/part.js:230 +#: company/models.py:336 templates/js/translated/part.js:233 msgid "Select manufacturer" msgstr "Sélectionner un fabricant" -#: company/models.py:342 company/templates/company/manufacturer_part.html:97 -#: company/templates/company/supplier_part.html:112 +#: company/models.py:342 company/templates/company/manufacturer_part.html:96 +#: company/templates/company/supplier_part.html:105 #: templates/js/translated/company.js:530 -#: templates/js/translated/company.js:815 templates/js/translated/order.js:874 -#: templates/js/translated/part.js:240 +#: templates/js/translated/company.js:815 templates/js/translated/order.js:873 +#: templates/js/translated/part.js:243 templates/js/translated/part.js:832 msgid "MPN" msgstr "" -#: company/models.py:343 templates/js/translated/part.js:241 +#: company/models.py:343 templates/js/translated/part.js:244 msgid "Manufacturer Part Number" msgstr "" @@ -2335,7 +2339,7 @@ msgstr "" #: company/models.py:409 company/models.py:558 #: company/templates/company/manufacturer_part.html:6 #: company/templates/company/manufacturer_part.html:23 -#: stock/templates/stock/item_base.html:363 +#: stock/templates/stock/item_base.html:391 msgid "Manufacturer Part" msgstr "" @@ -2345,8 +2349,8 @@ msgstr "" #: company/models.py:422 #: report/templates/report/inventree_test_report_base.html:95 -#: stock/models.py:1867 templates/js/translated/company.js:644 -#: templates/js/translated/part.js:645 templates/js/translated/stock.js:878 +#: stock/models.py:1857 templates/js/translated/company.js:644 +#: templates/js/translated/part.js:652 templates/js/translated/stock.js:960 msgid "Value" msgstr "Valeur" @@ -2355,9 +2359,9 @@ msgid "Parameter value" msgstr "" #: company/models.py:429 part/models.py:882 part/models.py:2397 -#: part/templates/part/detail.html:59 +#: part/templates/part/part_base.html:288 #: templates/InvenTree/settings/settings.html:264 -#: templates/js/translated/company.js:650 templates/js/translated/part.js:651 +#: templates/js/translated/company.js:650 templates/js/translated/part.js:658 msgid "Units" msgstr "" @@ -2369,28 +2373,28 @@ msgstr "" msgid "Linked manufacturer part must reference the same base part" msgstr "" -#: company/models.py:545 company/templates/company/company_base.html:121 -#: company/templates/company/supplier_part.html:94 order/models.py:263 -#: order/templates/order/order_base.html:108 +#: company/models.py:545 company/templates/company/company_base.html:78 +#: company/templates/company/supplier_part.html:87 order/models.py:263 +#: order/templates/order/order_base.html:112 #: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:219 -#: part/bom.py:247 stock/templates/stock/item_base.html:370 +#: part/bom.py:247 stock/templates/stock/item_base.html:398 #: templates/js/translated/company.js:337 -#: templates/js/translated/company.js:771 templates/js/translated/order.js:660 -#: templates/js/translated/part.js:210 +#: templates/js/translated/company.js:771 templates/js/translated/order.js:667 +#: templates/js/translated/part.js:213 templates/js/translated/part.js:800 msgid "Supplier" msgstr "Fournisseur" -#: company/models.py:546 templates/js/translated/part.js:211 +#: company/models.py:546 templates/js/translated/part.js:214 msgid "Select supplier" msgstr "" -#: company/models.py:551 company/templates/company/supplier_part.html:98 -#: part/bom.py:220 part/bom.py:248 templates/js/translated/order.js:861 -#: templates/js/translated/part.js:221 +#: company/models.py:551 company/templates/company/supplier_part.html:91 +#: part/bom.py:220 part/bom.py:248 templates/js/translated/order.js:860 +#: templates/js/translated/part.js:224 templates/js/translated/part.js:818 msgid "SKU" msgstr "" -#: company/models.py:552 templates/js/translated/part.js:222 +#: company/models.py:552 templates/js/translated/part.js:225 msgid "Supplier stock keeping unit" msgstr "" @@ -2406,7 +2410,7 @@ msgstr "" msgid "Supplier part description" msgstr "" -#: company/models.py:576 company/templates/company/supplier_part.html:126 +#: company/models.py:576 company/templates/company/supplier_part.html:119 #: part/models.py:2588 report/templates/report/inventree_po_report.html:93 #: report/templates/report/inventree_so_report.html:93 msgid "Note" @@ -2420,9 +2424,9 @@ msgstr "coût de base" msgid "Minimum charge (e.g. stocking fee)" msgstr "" -#: company/models.py:582 company/templates/company/supplier_part.html:119 -#: stock/models.py:507 stock/templates/stock/item_base.html:311 -#: templates/js/translated/company.js:847 templates/js/translated/stock.js:1366 +#: company/models.py:582 company/templates/company/supplier_part.html:112 +#: stock/models.py:497 stock/templates/stock/item_base.html:339 +#: templates/js/translated/company.js:847 templates/js/translated/stock.js:1448 msgid "Packaging" msgstr "" @@ -2457,43 +2461,56 @@ msgstr "" msgid "Create Purchase Order" msgstr "Créer une commande d'achat" -#: company/templates/company/company_base.html:27 +#: company/templates/company/company_base.html:26 +msgid "Company actions" +msgstr "" + +#: company/templates/company/company_base.html:31 msgid "Edit company information" msgstr "" #: company/templates/company/company_base.html:32 -#: company/templates/company/company_base.html:148 +#: templates/js/translated/company.js:265 +msgid "Edit Company" +msgstr "" + +#: company/templates/company/company_base.html:36 +msgid "Delete company" +msgstr "" + +#: company/templates/company/company_base.html:37 +#: company/templates/company/company_base.html:159 msgid "Delete Company" msgstr "" -#: company/templates/company/company_base.html:48 +#: company/templates/company/company_base.html:53 #: part/templates/part/part_thumb.html:12 msgid "Upload new image" msgstr "Ajouter une nouvelle image" -#: company/templates/company/company_base.html:51 +#: company/templates/company/company_base.html:56 #: part/templates/part/part_thumb.html:14 msgid "Download image from URL" msgstr "Télécharger l'image depuis l'URL" -#: company/templates/company/company_base.html:81 -msgid "Uses default currency" -msgstr "" - -#: company/templates/company/company_base.html:95 -msgid "Phone" -msgstr "" - -#: company/templates/company/company_base.html:126 order/models.py:567 -#: order/templates/order/sales_order_base.html:114 stock/models.py:525 -#: stock/models.py:526 stock/templates/stock/item_base.html:263 -#: templates/js/translated/company.js:329 templates/js/translated/order.js:1073 -#: templates/js/translated/stock.js:2002 +#: company/templates/company/company_base.html:83 order/models.py:567 +#: order/templates/order/sales_order_base.html:115 stock/models.py:515 +#: stock/models.py:516 stock/templates/stock/item_base.html:291 +#: templates/js/translated/company.js:329 templates/js/translated/order.js:1072 +#: templates/js/translated/stock.js:2084 msgid "Customer" msgstr "" -#: company/templates/company/company_base.html:194 -#: part/templates/part/part_base.html:342 +#: company/templates/company/company_base.html:108 +msgid "Uses default currency" +msgstr "" + +#: company/templates/company/company_base.html:122 +msgid "Phone" +msgstr "" + +#: company/templates/company/company_base.html:205 +#: part/templates/part/part_base.html:471 msgid "Upload Image" msgstr "" @@ -2509,23 +2526,23 @@ msgid "Create new supplier part" msgstr "" #: company/templates/company/detail.html:20 -#: company/templates/company/manufacturer_part.html:112 -#: part/templates/part/detail.html:440 +#: company/templates/company/manufacturer_part.html:118 +#: part/templates/part/detail.html:333 msgid "New Supplier Part" msgstr "" #: company/templates/company/detail.html:32 #: company/templates/company/detail.html:79 -#: company/templates/company/manufacturer_part.html:121 -#: company/templates/company/manufacturer_part.html:150 -#: part/templates/part/category.html:160 part/templates/part/detail.html:449 -#: part/templates/part/detail.html:477 +#: company/templates/company/manufacturer_part.html:127 +#: company/templates/company/manufacturer_part.html:156 +#: part/templates/part/category.html:167 part/templates/part/detail.html:342 +#: part/templates/part/detail.html:370 msgid "Options" msgstr "" #: company/templates/company/detail.html:37 #: company/templates/company/detail.html:84 -#: part/templates/part/category.html:166 +#: part/templates/part/category.html:173 msgid "Order parts" msgstr "" @@ -2547,7 +2564,7 @@ msgstr "" msgid "Create new manufacturer part" msgstr "" -#: company/templates/company/detail.html:67 part/templates/part/detail.html:467 +#: company/templates/company/detail.html:67 part/templates/part/detail.html:360 msgid "New Manufacturer Part" msgstr "" @@ -2561,7 +2578,7 @@ msgstr "" #: order/templates/order/order_base.html:13 #: order/templates/order/purchase_orders.html:8 #: order/templates/order/purchase_orders.html:12 -#: part/templates/part/detail.html:171 part/templates/part/part_sidebar.html:35 +#: part/templates/part/detail.html:64 part/templates/part/part_sidebar.html:33 #: templates/InvenTree/index.html:252 templates/InvenTree/search.html:203 #: templates/InvenTree/settings/sidebar.html:44 templates/navbar.html:45 #: users/models.py:45 @@ -2583,7 +2600,7 @@ msgstr "Nouvelle commande achat" #: order/templates/order/sales_order_base.html:13 #: order/templates/order/sales_orders.html:8 #: order/templates/order/sales_orders.html:15 -#: part/templates/part/detail.html:194 part/templates/part/part_sidebar.html:39 +#: part/templates/part/detail.html:87 part/templates/part/part_sidebar.html:37 #: templates/InvenTree/index.html:283 templates/InvenTree/search.html:223 #: templates/InvenTree/settings/sidebar.html:46 templates/navbar.html:56 #: users/models.py:46 @@ -2610,14 +2627,14 @@ msgid "Company Notes" msgstr "" #: company/templates/company/detail.html:383 -#: company/templates/company/manufacturer_part.html:209 -#: part/templates/part/detail.html:520 +#: company/templates/company/manufacturer_part.html:215 +#: part/templates/part/detail.html:413 msgid "Delete Supplier Parts?" msgstr "" #: company/templates/company/detail.html:384 -#: company/templates/company/manufacturer_part.html:210 -#: part/templates/part/detail.html:521 +#: company/templates/company/manufacturer_part.html:216 +#: part/templates/part/detail.html:414 msgid "All selected supplier parts will be deleted" msgstr "" @@ -2634,7 +2651,7 @@ msgstr "Fabricants" #: company/templates/company/manufacturer_part.html:35 #: company/templates/company/supplier_part.html:34 #: company/templates/company/supplier_part.html:159 -#: part/templates/part/detail.html:174 part/templates/part/part_base.html:76 +#: part/templates/part/detail.html:67 part/templates/part/part_base.html:76 msgid "Order part" msgstr "" @@ -2648,60 +2665,60 @@ msgstr "" msgid "Delete manufacturer part" msgstr "" -#: company/templates/company/manufacturer_part.html:70 -#: company/templates/company/supplier_part.html:71 +#: company/templates/company/manufacturer_part.html:66 +#: company/templates/company/supplier_part.html:63 msgid "Internal Part" msgstr "Pièces Internes" -#: company/templates/company/manufacturer_part.html:108 +#: company/templates/company/manufacturer_part.html:114 #: company/templates/company/supplier_part.html:15 company/views.py:49 -#: part/templates/part/part_sidebar.html:33 part/templates/part/prices.html:163 +#: part/templates/part/part_sidebar.html:31 part/templates/part/prices.html:163 #: templates/InvenTree/search.html:194 templates/navbar.html:43 msgid "Suppliers" msgstr "Fournisseurs" -#: company/templates/company/manufacturer_part.html:123 -#: part/templates/part/detail.html:451 +#: company/templates/company/manufacturer_part.html:129 +#: part/templates/part/detail.html:344 msgid "Delete supplier parts" msgstr "Supprimer les pièces du fournisseur" -#: company/templates/company/manufacturer_part.html:123 -#: company/templates/company/manufacturer_part.html:152 -#: company/templates/company/manufacturer_part.html:248 -#: part/templates/part/detail.html:451 part/templates/part/detail.html:479 +#: company/templates/company/manufacturer_part.html:129 +#: company/templates/company/manufacturer_part.html:158 +#: company/templates/company/manufacturer_part.html:254 +#: part/templates/part/detail.html:344 part/templates/part/detail.html:372 #: templates/js/translated/company.js:425 templates/js/translated/helpers.js:31 #: users/models.py:204 msgid "Delete" msgstr "Supprimer" -#: company/templates/company/manufacturer_part.html:137 +#: company/templates/company/manufacturer_part.html:143 #: company/templates/company/manufacturer_part_sidebar.html:5 #: part/templates/part/category_sidebar.html:17 -#: part/templates/part/detail.html:277 part/templates/part/part_sidebar.html:10 +#: part/templates/part/detail.html:170 part/templates/part/part_sidebar.html:8 msgid "Parameters" msgstr "Paramètres" -#: company/templates/company/manufacturer_part.html:141 -#: part/templates/part/detail.html:282 +#: company/templates/company/manufacturer_part.html:147 +#: part/templates/part/detail.html:175 #: templates/InvenTree/settings/category.html:12 #: templates/InvenTree/settings/part.html:65 msgid "New Parameter" msgstr "Nouveau paramètre" -#: company/templates/company/manufacturer_part.html:152 +#: company/templates/company/manufacturer_part.html:158 msgid "Delete parameters" msgstr "" -#: company/templates/company/manufacturer_part.html:185 -#: part/templates/part/detail.html:976 +#: company/templates/company/manufacturer_part.html:191 +#: part/templates/part/detail.html:867 msgid "Add Parameter" msgstr "" -#: company/templates/company/manufacturer_part.html:233 +#: company/templates/company/manufacturer_part.html:239 msgid "Selected parameters will be deleted" msgstr "" -#: company/templates/company/manufacturer_part.html:245 +#: company/templates/company/manufacturer_part.html:251 msgid "Delete Parameters" msgstr "" @@ -2722,9 +2739,9 @@ msgid "Assigned Stock Items" msgstr "" #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 stock/models.py:492 -#: stock/templates/stock/item_base.html:375 -#: templates/js/translated/company.js:787 templates/js/translated/stock.js:1323 +#: company/templates/company/supplier_part.html:24 stock/models.py:482 +#: stock/templates/stock/item_base.html:403 +#: templates/js/translated/company.js:787 templates/js/translated/stock.js:1405 msgid "Supplier Part" msgstr "" @@ -2744,13 +2761,13 @@ msgid "Supplier Part Stock" msgstr "" #: company/templates/company/supplier_part.html:141 -#: part/templates/part/detail.html:127 stock/templates/stock/location.html:147 +#: part/templates/part/detail.html:20 stock/templates/stock/location.html:162 msgid "Create new stock item" msgstr "" #: company/templates/company/supplier_part.html:142 -#: part/templates/part/detail.html:128 stock/templates/stock/location.html:148 -#: templates/js/translated/stock.js:354 +#: part/templates/part/detail.html:21 stock/templates/stock/location.html:163 +#: templates/js/translated/stock.js:355 msgid "New Stock Item" msgstr "" @@ -2760,7 +2777,7 @@ msgid "Supplier Part Orders" msgstr "" #: company/templates/company/supplier_part.html:160 -#: part/templates/part/detail.html:175 +#: part/templates/part/detail.html:68 msgid "Order Part" msgstr "" @@ -2796,15 +2813,15 @@ msgid "Delete price break" msgstr "" #: company/templates/company/supplier_part_navbar.html:15 -#: part/templates/part/part_sidebar.html:16 +#: part/templates/part/part_sidebar.html:14 #: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:14 #: stock/templates/stock/stock_app_base.html:10 #: templates/InvenTree/search.html:156 #: templates/InvenTree/settings/sidebar.html:40 -#: templates/js/translated/bom.js:216 templates/js/translated/part.js:427 -#: templates/js/translated/part.js:562 templates/js/translated/part.js:878 -#: templates/js/translated/part.js:1039 templates/js/translated/stock.js:509 -#: templates/js/translated/stock.js:1162 templates/navbar.html:26 +#: templates/js/translated/bom.js:216 templates/js/translated/part.js:434 +#: templates/js/translated/part.js:569 templates/js/translated/part.js:1059 +#: templates/js/translated/part.js:1220 templates/js/translated/stock.js:591 +#: templates/js/translated/stock.js:1244 templates/navbar.html:26 msgid "Stock" msgstr "Stock" @@ -2818,16 +2835,16 @@ msgid "Supplier Part Pricing" msgstr "" #: company/templates/company/supplier_part_navbar.html:29 -#: part/templates/part/part_sidebar.html:30 +#: part/templates/part/part_sidebar.html:28 msgid "Pricing" msgstr "Tarif" #: company/templates/company/supplier_part_sidebar.html:5 -#: stock/templates/stock/location.html:118 -#: stock/templates/stock/location.html:132 -#: stock/templates/stock/location.html:144 +#: stock/templates/stock/location.html:133 +#: stock/templates/stock/location.html:147 +#: stock/templates/stock/location.html:159 #: stock/templates/stock/location_sidebar.html:7 -#: templates/InvenTree/search.html:158 templates/js/translated/stock.js:1901 +#: templates/InvenTree/search.html:158 templates/js/translated/stock.js:1983 #: templates/stats.html:93 templates/stats.html:102 users/models.py:43 msgid "Stock Items" msgstr "Éléments en stock" @@ -2947,7 +2964,7 @@ msgstr "" msgid "Place order" msgstr "Passer la commande" -#: order/forms.py:37 order/templates/order/order_base.html:59 +#: order/forms.py:37 order/templates/order/order_base.html:60 msgid "Mark order as complete" msgstr "Marquer la commande comme complète" @@ -3000,8 +3017,8 @@ msgstr "" msgid "Company from which the items are being ordered" msgstr "" -#: order/models.py:267 order/templates/order/order_base.html:114 -#: templates/js/translated/order.js:669 +#: order/models.py:267 order/templates/order/order_base.html:118 +#: templates/js/translated/order.js:676 msgid "Supplier Reference" msgstr "" @@ -3061,7 +3078,7 @@ msgstr "" msgid "Target date for order completion. Order will be overdue after this date." msgstr "" -#: order/models.py:582 templates/js/translated/order.js:1114 +#: order/models.py:582 templates/js/translated/order.js:1113 msgid "Shipment Date" msgstr "" @@ -3086,16 +3103,16 @@ msgid "Line item notes" msgstr "" #: order/models.py:768 order/models.py:856 -#: templates/js/translated/order.js:1166 +#: templates/js/translated/order.js:1165 msgid "Order" msgstr "Commande" #: order/models.py:769 order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_po_report.html:77 -#: stock/templates/stock/item_base.html:325 -#: templates/js/translated/order.js:638 templates/js/translated/stock.js:1300 -#: templates/js/translated/stock.js:1983 +#: stock/templates/stock/item_base.html:353 +#: templates/js/translated/order.js:638 templates/js/translated/part.js:775 +#: templates/js/translated/stock.js:1382 templates/js/translated/stock.js:2065 msgid "Purchase Order" msgstr "Commande d’achat" @@ -3103,9 +3120,10 @@ msgstr "Commande d’achat" msgid "Supplier part" msgstr "Pièce fournisseur" -#: order/models.py:797 order/templates/order/order_base.html:147 -#: order/templates/order/sales_order_base.html:154 -#: templates/js/translated/order.js:429 templates/js/translated/order.js:954 +#: order/models.py:797 order/templates/order/order_base.html:151 +#: order/templates/order/sales_order_base.html:155 +#: templates/js/translated/order.js:429 templates/js/translated/order.js:953 +#: templates/js/translated/part.js:847 templates/js/translated/part.js:873 msgid "Received" msgstr "Reçu" @@ -3113,9 +3131,9 @@ msgstr "Reçu" msgid "Number of items received" msgstr "Nombre d'éléments reçus" -#: order/models.py:805 part/templates/part/prices.html:176 stock/models.py:619 -#: stock/serializers.py:163 stock/templates/stock/item_base.html:332 -#: templates/js/translated/stock.js:1354 +#: order/models.py:805 part/templates/part/prices.html:176 stock/models.py:609 +#: stock/serializers.py:168 stock/templates/stock/item_base.html:360 +#: templates/js/translated/stock.js:1436 msgid "Purchase Price" msgstr "Prix d'achat" @@ -3176,47 +3194,47 @@ msgstr "" msgid "Enter stock allocation quantity" msgstr "" -#: order/serializers.py:169 +#: order/serializers.py:175 msgid "Purchase price currency" msgstr "Devise du prix d'achat" -#: order/serializers.py:204 +#: order/serializers.py:213 msgid "Line Item" msgstr "" -#: order/serializers.py:210 +#: order/serializers.py:219 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:220 order/serializers.py:288 +#: order/serializers.py:229 order/serializers.py:297 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:244 +#: order/serializers.py:253 msgid "Barcode Hash" msgstr "" -#: order/serializers.py:245 +#: order/serializers.py:254 msgid "Unique identifier field" msgstr "" -#: order/serializers.py:262 +#: order/serializers.py:271 msgid "Barcode is already in use" msgstr "Le code-barres est déjà utilisé" -#: order/serializers.py:300 +#: order/serializers.py:309 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:317 +#: order/serializers.py:326 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:328 +#: order/serializers.py:337 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:569 +#: order/serializers.py:578 msgid "Sale price currency" msgstr "" @@ -3248,22 +3266,36 @@ msgstr "Modifier la commande" msgid "Receive items" msgstr "" -#: order/templates/order/order_base.html:93 -#: order/templates/order/sales_order_base.html:98 +#: order/templates/order/order_base.html:58 +#: order/templates/order/purchase_order_detail.html:31 +msgid "Receive Items" +msgstr "" + +#: order/templates/order/order_base.html:62 order/views.py:185 +msgid "Complete Order" +msgstr "Finaliser la commande" + +#: order/templates/order/order_base.html:84 +#: order/templates/order/sales_order_base.html:79 msgid "Order Reference" msgstr "" -#: order/templates/order/order_base.html:98 -#: order/templates/order/sales_order_base.html:103 +#: order/templates/order/order_base.html:89 +#: order/templates/order/sales_order_base.html:84 +msgid "Order Description" +msgstr "" + +#: order/templates/order/order_base.html:94 +#: order/templates/order/sales_order_base.html:89 msgid "Order Status" msgstr "Statut de la commande" -#: order/templates/order/order_base.html:133 +#: order/templates/order/order_base.html:137 #: report/templates/report/inventree_build_order_base.html:122 msgid "Issued" msgstr "" -#: order/templates/order/order_base.html:203 +#: order/templates/order/order_base.html:207 msgid "Edit Purchase Order" msgstr "" @@ -3421,7 +3453,7 @@ msgid "Select existing purchase orders, or create new orders." msgstr "" #: order/templates/order/order_wizard/select_pos.html:31 -#: templates/js/translated/order.js:695 templates/js/translated/order.js:1119 +#: templates/js/translated/order.js:694 templates/js/translated/order.js:1118 msgid "Items" msgstr "" @@ -3465,10 +3497,6 @@ msgstr "" msgid "Receive selected items" msgstr "" -#: order/templates/order/purchase_order_detail.html:31 -msgid "Receive Items" -msgstr "" - #: order/templates/order/purchase_order_detail.html:50 msgid "Received Items" msgstr "" @@ -3496,16 +3524,16 @@ msgstr "" msgid "Ship Order" msgstr "" -#: order/templates/order/sales_order_base.html:86 +#: order/templates/order/sales_order_base.html:102 msgid "This Sales Order has not been fully allocated" msgstr "" -#: order/templates/order/sales_order_base.html:121 -#: templates/js/translated/order.js:1086 +#: order/templates/order/sales_order_base.html:122 +#: templates/js/translated/order.js:1085 msgid "Customer Reference" msgstr "" -#: order/templates/order/sales_order_base.html:194 +#: order/templates/order/sales_order_base.html:195 msgid "Edit Sales Order" msgstr "" @@ -3576,10 +3604,6 @@ msgstr "" msgid "Purchase order issued" msgstr "" -#: order/views.py:185 -msgid "Complete Order" -msgstr "Finaliser la commande" - #: order/views.py:201 msgid "Confirm order completion" msgstr "" @@ -3672,11 +3696,11 @@ msgid "This field is required" msgstr "" #: part/bom.py:125 part/models.py:81 part/models.py:816 -#: part/templates/part/category.html:90 part/templates/part/detail.html:104 +#: part/templates/part/category.html:104 part/templates/part/part_base.html:338 msgid "Default Location" msgstr "" -#: part/bom.py:126 part/templates/part/part_base.html:167 +#: part/bom.py:126 part/templates/part/part_base.html:185 msgid "Available Stock" msgstr "" @@ -3793,19 +3817,19 @@ msgstr "" msgid "Part Category" msgstr "" -#: part/models.py:96 part/templates/part/category.html:117 +#: part/models.py:96 part/templates/part/category.html:124 #: templates/InvenTree/search.html:101 templates/stats.html:84 #: users/models.py:40 msgid "Part Categories" msgstr "" #: part/models.py:358 part/templates/part/cat_link.html:3 -#: part/templates/part/category.html:13 part/templates/part/category.html:122 -#: part/templates/part/category.html:142 +#: part/templates/part/category.html:13 part/templates/part/category.html:129 +#: part/templates/part/category.html:149 #: part/templates/part/category_sidebar.html:9 #: templates/InvenTree/index.html:85 templates/InvenTree/search.html:88 #: templates/InvenTree/settings/sidebar.html:36 -#: templates/js/translated/part.js:1416 templates/navbar.html:19 +#: templates/js/translated/part.js:1597 templates/navbar.html:19 #: templates/stats.html:80 templates/stats.html:89 users/models.py:41 msgid "Parts" msgstr "" @@ -3859,8 +3883,8 @@ msgstr "" msgid "Part description" msgstr "" -#: part/models.py:770 part/templates/part/category.html:97 -#: part/templates/part/detail.html:73 +#: part/models.py:770 part/templates/part/category.html:82 +#: part/templates/part/part_base.html:302 msgid "Keywords" msgstr "" @@ -3869,9 +3893,10 @@ msgid "Part keywords to improve visibility in search results" msgstr "" #: part/models.py:778 part/models.py:2223 part/models.py:2472 -#: part/templates/part/detail.html:36 part/templates/part/set_category.html:15 +#: part/templates/part/part_base.html:265 +#: part/templates/part/set_category.html:15 #: templates/InvenTree/settings/settings.html:163 -#: templates/js/translated/part.js:1021 +#: templates/js/translated/part.js:1202 msgid "Category" msgstr "Catégorie" @@ -3879,9 +3904,9 @@ msgstr "Catégorie" msgid "Part category" msgstr "Catégorie de la pièce" -#: part/models.py:784 part/templates/part/detail.html:45 -#: templates/js/translated/part.js:550 templates/js/translated/part.js:974 -#: templates/js/translated/stock.js:1134 +#: part/models.py:784 part/templates/part/part_base.html:274 +#: templates/js/translated/part.js:557 templates/js/translated/part.js:1155 +#: templates/js/translated/stock.js:1216 msgid "IPN" msgstr "IPN" @@ -3893,8 +3918,8 @@ msgstr "" msgid "Part revision or version number" msgstr "" -#: part/models.py:792 part/templates/part/detail.html:52 report/models.py:200 -#: templates/js/translated/part.js:554 +#: part/models.py:792 part/templates/part/part_base.html:281 +#: report/models.py:200 templates/js/translated/part.js:561 msgid "Revision" msgstr "Révision" @@ -3902,7 +3927,7 @@ msgstr "Révision" msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:861 part/templates/part/detail.html:113 +#: part/models.py:861 part/templates/part/part_base.html:347 msgid "Default Supplier" msgstr "" @@ -3918,7 +3943,7 @@ msgstr "" msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:875 part/templates/part/part_base.html:178 +#: part/models.py:875 part/templates/part/part_base.html:196 msgid "Minimum Stock" msgstr "" @@ -4001,8 +4026,8 @@ msgstr "" msgid "Test with this name already exists for this part" msgstr "" -#: part/models.py:2310 templates/js/translated/part.js:1467 -#: templates/js/translated/stock.js:858 +#: part/models.py:2310 templates/js/translated/part.js:1648 +#: templates/js/translated/stock.js:940 msgid "Test Name" msgstr "Nom de test" @@ -4018,7 +4043,7 @@ msgstr "" msgid "Enter description for this test" msgstr "" -#: part/models.py:2322 templates/js/translated/part.js:1476 +#: part/models.py:2322 templates/js/translated/part.js:1657 #: templates/js/translated/table_filters.js:276 msgid "Required" msgstr "Requis" @@ -4027,7 +4052,7 @@ msgstr "Requis" msgid "Is this test required to pass?" msgstr "" -#: part/models.py:2328 templates/js/translated/part.js:1484 +#: part/models.py:2328 templates/js/translated/part.js:1665 msgid "Requires Value" msgstr "" @@ -4035,7 +4060,7 @@ msgstr "" msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:2334 templates/js/translated/part.js:1491 +#: part/models.py:2334 templates/js/translated/part.js:1672 msgid "Requires Attachment" msgstr "" @@ -4150,7 +4175,7 @@ msgstr "" msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:2686 stock/models.py:371 +#: part/models.py:2686 stock/models.py:361 msgid "Quantity must be integer value for trackable parts" msgstr "" @@ -4213,7 +4238,7 @@ msgstr "" msgid "The BOM for %(part)s has not been validated." msgstr "" -#: part/templates/part/bom.html:30 part/templates/part/detail.html:357 +#: part/templates/part/bom.html:30 part/templates/part/detail.html:250 msgid "BOM actions" msgstr "" @@ -4298,68 +4323,64 @@ msgstr "" msgid "New Category" msgstr "Nouvelle catégorie" -#: part/templates/part/category.html:67 -msgid "Top level part category" -msgstr "" - -#: part/templates/part/category.html:79 +#: part/templates/part/category.html:76 part/templates/part/category.html:89 msgid "Category Path" msgstr "" -#: part/templates/part/category.html:84 -msgid "Category Description" +#: part/templates/part/category.html:90 +msgid "Top level part category" msgstr "" -#: part/templates/part/category.html:103 part/templates/part/category.html:194 +#: part/templates/part/category.html:110 part/templates/part/category.html:201 #: part/templates/part/category_sidebar.html:7 msgid "Subcategories" msgstr "" -#: part/templates/part/category.html:108 +#: part/templates/part/category.html:115 msgid "Parts (Including subcategories)" msgstr "" -#: part/templates/part/category.html:145 +#: part/templates/part/category.html:152 msgid "Export Part Data" msgstr "" -#: part/templates/part/category.html:146 part/templates/part/category.html:170 +#: part/templates/part/category.html:153 part/templates/part/category.html:177 msgid "Export" msgstr "Exporter" -#: part/templates/part/category.html:149 +#: part/templates/part/category.html:156 msgid "Create new part" msgstr "" -#: part/templates/part/category.html:150 templates/js/translated/bom.js:40 +#: part/templates/part/category.html:157 templates/js/translated/bom.js:40 msgid "New Part" msgstr "" -#: part/templates/part/category.html:164 +#: part/templates/part/category.html:171 msgid "Set category" msgstr "" -#: part/templates/part/category.html:164 +#: part/templates/part/category.html:171 msgid "Set Category" msgstr "" -#: part/templates/part/category.html:168 +#: part/templates/part/category.html:175 msgid "Print Labels" msgstr "" -#: part/templates/part/category.html:170 +#: part/templates/part/category.html:177 msgid "Export Data" msgstr "" -#: part/templates/part/category.html:184 +#: part/templates/part/category.html:191 msgid "Part Parameters" msgstr "" -#: part/templates/part/category.html:261 +#: part/templates/part/category.html:268 msgid "Create Part Category" msgstr "" -#: part/templates/part/category.html:288 +#: part/templates/part/category.html:295 msgid "Create Part" msgstr "" @@ -4402,7 +4423,7 @@ msgstr "" msgid "Import Parts" msgstr "" -#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:366 +#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:373 msgid "Duplicate Part" msgstr "" @@ -4426,167 +4447,155 @@ msgstr "" msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)" msgstr "" -#: part/templates/part/detail.html:16 -msgid "Part Details" -msgstr "" - -#: part/templates/part/detail.html:66 -msgid "Minimum stock level" -msgstr "" - -#: part/templates/part/detail.html:97 -msgid "Latest Serial Number" -msgstr "" - -#: part/templates/part/detail.html:124 +#: part/templates/part/detail.html:17 msgid "Part Stock" msgstr "" -#: part/templates/part/detail.html:136 +#: part/templates/part/detail.html:29 #, python-format msgid "Showing stock for all variants of %(full_name)s" msgstr "" -#: part/templates/part/detail.html:146 +#: part/templates/part/detail.html:39 msgid "Part Test Templates" msgstr "" -#: part/templates/part/detail.html:151 +#: part/templates/part/detail.html:44 msgid "Add Test Template" msgstr "" -#: part/templates/part/detail.html:208 +#: part/templates/part/detail.html:101 msgid "Sales Order Allocations" msgstr "" -#: part/templates/part/detail.html:249 +#: part/templates/part/detail.html:142 msgid "Part Variants" msgstr "" -#: part/templates/part/detail.html:253 +#: part/templates/part/detail.html:146 msgid "Create new variant" msgstr "" -#: part/templates/part/detail.html:254 +#: part/templates/part/detail.html:147 msgid "New Variant" msgstr "" -#: part/templates/part/detail.html:281 +#: part/templates/part/detail.html:174 msgid "Add new parameter" msgstr "" -#: part/templates/part/detail.html:315 part/templates/part/part_sidebar.html:47 +#: part/templates/part/detail.html:208 part/templates/part/part_sidebar.html:45 msgid "Related Parts" msgstr "" -#: part/templates/part/detail.html:319 part/templates/part/detail.html:320 +#: part/templates/part/detail.html:212 part/templates/part/detail.html:213 msgid "Add Related" msgstr "" -#: part/templates/part/detail.html:340 part/templates/part/part_sidebar.html:19 +#: part/templates/part/detail.html:233 part/templates/part/part_sidebar.html:17 msgid "Bill of Materials" msgstr "" -#: part/templates/part/detail.html:345 +#: part/templates/part/detail.html:238 msgid "Export actions" msgstr "" -#: part/templates/part/detail.html:349 +#: part/templates/part/detail.html:242 msgid "Export BOM" msgstr "" -#: part/templates/part/detail.html:351 +#: part/templates/part/detail.html:244 msgid "Print BOM Report" msgstr "" -#: part/templates/part/detail.html:361 +#: part/templates/part/detail.html:254 msgid "Upload BOM" msgstr "" -#: part/templates/part/detail.html:363 templates/js/translated/part.js:267 +#: part/templates/part/detail.html:256 templates/js/translated/part.js:270 msgid "Copy BOM" msgstr "" -#: part/templates/part/detail.html:365 part/views.py:755 +#: part/templates/part/detail.html:258 part/views.py:755 msgid "Validate BOM" msgstr "" -#: part/templates/part/detail.html:370 +#: part/templates/part/detail.html:263 msgid "New BOM Item" msgstr "" -#: part/templates/part/detail.html:371 +#: part/templates/part/detail.html:264 msgid "Add BOM Item" msgstr "" -#: part/templates/part/detail.html:384 +#: part/templates/part/detail.html:277 msgid "Assemblies" msgstr "" -#: part/templates/part/detail.html:401 +#: part/templates/part/detail.html:294 msgid "Part Builds" msgstr "" -#: part/templates/part/detail.html:426 +#: part/templates/part/detail.html:319 msgid "Build Order Allocations" msgstr "" -#: part/templates/part/detail.html:436 +#: part/templates/part/detail.html:329 msgid "Part Suppliers" msgstr "" -#: part/templates/part/detail.html:463 +#: part/templates/part/detail.html:356 msgid "Part Manufacturers" msgstr "" -#: part/templates/part/detail.html:479 +#: part/templates/part/detail.html:372 msgid "Delete manufacturer parts" msgstr "" -#: part/templates/part/detail.html:660 +#: part/templates/part/detail.html:553 msgid "Delete selected BOM items?" msgstr "" -#: part/templates/part/detail.html:661 +#: part/templates/part/detail.html:554 msgid "All selected BOM items will be deleted" msgstr "" -#: part/templates/part/detail.html:712 +#: part/templates/part/detail.html:605 msgid "Create BOM Item" msgstr "" -#: part/templates/part/detail.html:764 +#: part/templates/part/detail.html:657 msgid "Related Part" msgstr "" -#: part/templates/part/detail.html:772 +#: part/templates/part/detail.html:665 msgid "Add Related Part" msgstr "" -#: part/templates/part/detail.html:869 +#: part/templates/part/detail.html:760 msgid "Add Test Result Template" msgstr "" -#: part/templates/part/detail.html:926 +#: part/templates/part/detail.html:817 msgid "Edit Part Notes" msgstr "" -#: part/templates/part/detail.html:1039 +#: part/templates/part/detail.html:930 #, python-format msgid "Purchase Unit Price - %(currency)s" msgstr "" -#: part/templates/part/detail.html:1051 +#: part/templates/part/detail.html:942 #, python-format msgid "Unit Price-Cost Difference - %(currency)s" msgstr "" -#: part/templates/part/detail.html:1063 +#: part/templates/part/detail.html:954 #, python-format msgid "Supplier Unit Cost - %(currency)s" msgstr "" -#: part/templates/part/detail.html:1152 +#: part/templates/part/detail.html:1043 #, python-format msgid "Unit Price - %(currency)s" msgstr "" @@ -4668,86 +4677,108 @@ msgstr "Modifier la pièce" msgid "Delete part" msgstr "" -#: part/templates/part/part_base.html:109 +#: part/templates/part/part_base.html:112 msgid "Part is a template part (variants can be made from this part)" msgstr "" -#: part/templates/part/part_base.html:113 +#: part/templates/part/part_base.html:116 msgid "Part can be assembled from other parts" msgstr "" -#: part/templates/part/part_base.html:117 +#: part/templates/part/part_base.html:120 msgid "Part can be used in assemblies" msgstr "" -#: part/templates/part/part_base.html:121 +#: part/templates/part/part_base.html:124 msgid "Part stock is tracked by serial number" msgstr "" -#: part/templates/part/part_base.html:125 +#: part/templates/part/part_base.html:128 msgid "Part can be purchased from external suppliers" msgstr "" -#: part/templates/part/part_base.html:129 +#: part/templates/part/part_base.html:132 msgid "Part can be sold to customers" msgstr "" -#: part/templates/part/part_base.html:135 -#: part/templates/part/part_base.html:143 +#: part/templates/part/part_base.html:138 +#: part/templates/part/part_base.html:146 msgid "Part is virtual (not a physical part)" msgstr "" -#: part/templates/part/part_base.html:136 +#: part/templates/part/part_base.html:139 #: templates/js/translated/company.js:505 #: templates/js/translated/company.js:762 #: templates/js/translated/model_renderers.js:175 -#: templates/js/translated/part.js:465 templates/js/translated/part.js:542 +#: templates/js/translated/part.js:472 templates/js/translated/part.js:549 msgid "Inactive" msgstr "" -#: part/templates/part/part_base.html:155 +#: part/templates/part/part_base.html:156 +#: part/templates/part/part_base.html:579 +msgid "Show Part Details" +msgstr "" + +#: part/templates/part/part_base.html:173 #, python-format msgid "This part is a variant of %(link)s" msgstr "" -#: part/templates/part/part_base.html:172 templates/js/translated/order.js:1546 +#: part/templates/part/part_base.html:190 templates/js/translated/order.js:1545 #: templates/js/translated/table_filters.js:188 msgid "In Stock" msgstr "" -#: part/templates/part/part_base.html:185 templates/js/translated/part.js:1054 +#: part/templates/part/part_base.html:203 templates/js/translated/part.js:1235 msgid "On Order" msgstr "" -#: part/templates/part/part_base.html:192 templates/InvenTree/index.html:178 +#: part/templates/part/part_base.html:210 templates/InvenTree/index.html:178 msgid "Required for Build Orders" msgstr "" -#: part/templates/part/part_base.html:199 +#: part/templates/part/part_base.html:217 msgid "Required for Sales Orders" msgstr "" -#: part/templates/part/part_base.html:206 +#: part/templates/part/part_base.html:224 msgid "Allocated to Orders" msgstr "" -#: part/templates/part/part_base.html:221 templates/js/translated/bom.js:566 +#: part/templates/part/part_base.html:239 templates/js/translated/bom.js:566 msgid "Can Build" msgstr "" -#: part/templates/part/part_base.html:227 templates/js/translated/part.js:885 -#: templates/js/translated/part.js:1058 +#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1066 +#: templates/js/translated/part.js:1239 msgid "Building" msgstr "" -#: part/templates/part/part_base.html:320 part/templates/part/prices.html:144 +#: part/templates/part/part_base.html:295 +msgid "Minimum stock level" +msgstr "" + +#: part/templates/part/part_base.html:324 +msgid "Latest Serial Number" +msgstr "" + +#: part/templates/part/part_base.html:328 +#: stock/templates/stock/item_base.html:159 +msgid "Search for serial number" +msgstr "" + +#: part/templates/part/part_base.html:449 part/templates/part/prices.html:144 msgid "Calculate" msgstr "Calculer" -#: part/templates/part/part_base.html:363 +#: part/templates/part/part_base.html:492 msgid "No matching images found" msgstr "" +#: part/templates/part/part_base.html:573 +msgid "Hide Part Details" +msgstr "" + #: part/templates/part/part_pricing.html:22 part/templates/part/prices.html:21 msgid "Supplier Pricing" msgstr "" @@ -4805,20 +4836,15 @@ msgstr "" msgid "No pricing information is available for this part." msgstr "" -#: part/templates/part/part_sidebar.html:8 -#: templates/js/translated/stock.js:1949 -msgid "Details" -msgstr "Détails" - -#: part/templates/part/part_sidebar.html:13 +#: part/templates/part/part_sidebar.html:11 msgid "Variants" msgstr "" -#: part/templates/part/part_sidebar.html:27 +#: part/templates/part/part_sidebar.html:25 msgid "Used In" msgstr "" -#: part/templates/part/part_sidebar.html:43 +#: part/templates/part/part_sidebar.html:41 msgid "Test Templates" msgstr "Tester le modèle" @@ -4934,8 +4960,8 @@ msgid "Set category for the following parts" msgstr "" #: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:476 -#: templates/js/translated/part.js:429 templates/js/translated/part.js:875 -#: templates/js/translated/part.js:1062 +#: templates/js/translated/part.js:436 templates/js/translated/part.js:1056 +#: templates/js/translated/part.js:1243 msgid "No Stock" msgstr "" @@ -5037,7 +5063,7 @@ msgstr "" msgid "Delete Part Parameter Template" msgstr "" -#: part/views.py:1489 templates/js/translated/part.js:310 +#: part/views.py:1489 templates/js/translated/part.js:313 msgid "Edit Part Category" msgstr "" @@ -5171,11 +5197,12 @@ msgid "Stock Item Test Report" msgstr "" #: report/templates/report/inventree_test_report_base.html:79 -#: stock/models.py:530 stock/templates/stock/item_base.html:238 +#: stock/models.py:520 stock/templates/stock/item_base.html:149 #: templates/js/translated/build.js:233 templates/js/translated/build.js:637 #: templates/js/translated/build.js:1013 #: templates/js/translated/model_renderers.js:95 -#: templates/js/translated/order.js:1288 templates/js/translated/order.js:1377 +#: templates/js/translated/order.js:1287 templates/js/translated/order.js:1376 +#: templates/js/translated/stock.js:410 msgid "Serial Number" msgstr "" @@ -5184,17 +5211,17 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:93 -#: stock/models.py:1855 +#: stock/models.py:1845 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:94 -#: stock/models.py:1861 +#: stock/models.py:1851 msgid "Result" msgstr "" #: report/templates/report/inventree_test_report_base.html:97 -#: templates/js/translated/order.js:685 templates/js/translated/stock.js:1917 +#: templates/js/translated/order.js:684 templates/js/translated/stock.js:1999 msgid "Date" msgstr "" @@ -5212,7 +5239,7 @@ msgid "Installed Items" msgstr "" #: report/templates/report/inventree_test_report_base.html:137 -#: templates/js/translated/stock.js:2177 +#: templates/js/translated/stock.js:2259 msgid "Serial" msgstr "" @@ -5220,9 +5247,9 @@ msgstr "" msgid "Quantity is required" msgstr "" -#: stock/forms.py:91 stock/forms.py:265 stock/models.py:587 -#: stock/templates/stock/item_base.html:382 -#: templates/js/translated/stock.js:1276 +#: stock/forms.py:91 stock/forms.py:265 stock/models.py:577 +#: stock/templates/stock/item_base.html:186 +#: templates/js/translated/stock.js:1358 msgid "Expiry Date" msgstr "" @@ -5270,241 +5297,241 @@ msgstr "" msgid "Confirm removal of installed stock items" msgstr "" -#: stock/models.py:60 stock/models.py:624 -#: stock/templates/stock/item_base.html:422 +#: stock/models.py:60 stock/models.py:614 +#: stock/templates/stock/item_base.html:417 msgid "Owner" msgstr "Propriétaire" -#: stock/models.py:61 stock/models.py:625 +#: stock/models.py:61 stock/models.py:615 msgid "Select Owner" msgstr "Sélectionner un propriétaire" -#: stock/models.py:352 +#: stock/models.py:342 msgid "StockItem with this serial number already exists" msgstr "" -#: stock/models.py:388 +#: stock/models.py:378 #, python-brace-format msgid "Part type ('{pf}') must be {pe}" msgstr "" -#: stock/models.py:398 stock/models.py:407 +#: stock/models.py:388 stock/models.py:397 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:399 +#: stock/models.py:389 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:421 +#: stock/models.py:411 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:427 +#: stock/models.py:417 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:434 +#: stock/models.py:424 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:476 +#: stock/models.py:466 msgid "Parent Stock Item" msgstr "" -#: stock/models.py:485 +#: stock/models.py:475 msgid "Base part" msgstr "" -#: stock/models.py:493 +#: stock/models.py:483 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:498 stock/templates/stock/location.html:12 +#: stock/models.py:488 stock/templates/stock/location.html:12 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" msgstr "" -#: stock/models.py:501 +#: stock/models.py:491 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:508 +#: stock/models.py:498 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:513 stock/templates/stock/item_base.html:271 +#: stock/models.py:503 stock/templates/stock/item_base.html:299 msgid "Installed In" msgstr "" -#: stock/models.py:516 +#: stock/models.py:506 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:532 +#: stock/models.py:522 msgid "Serial number for this item" msgstr "" -#: stock/models.py:546 +#: stock/models.py:536 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:550 +#: stock/models.py:540 msgid "Stock Quantity" msgstr "" -#: stock/models.py:559 +#: stock/models.py:549 msgid "Source Build" msgstr "" -#: stock/models.py:561 +#: stock/models.py:551 msgid "Build for this stock item" msgstr "" -#: stock/models.py:572 +#: stock/models.py:562 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:575 +#: stock/models.py:565 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:581 +#: stock/models.py:571 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:588 +#: stock/models.py:578 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:601 +#: stock/models.py:591 msgid "Delete on deplete" msgstr "" -#: stock/models.py:601 +#: stock/models.py:591 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:611 stock/templates/stock/item.html:111 +#: stock/models.py:601 stock/templates/stock/item.html:111 msgid "Stock Item Notes" msgstr "" -#: stock/models.py:620 +#: stock/models.py:610 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:630 +#: stock/models.py:620 msgid "Scheduled for deletion" msgstr "" -#: stock/models.py:631 +#: stock/models.py:621 msgid "This StockItem will be deleted by the background worker" msgstr "" -#: stock/models.py:1094 +#: stock/models.py:1084 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1100 +#: stock/models.py:1090 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1106 +#: stock/models.py:1096 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({n})" msgstr "" -#: stock/models.py:1109 +#: stock/models.py:1099 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1112 +#: stock/models.py:1102 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1119 +#: stock/models.py:1109 #, python-brace-format msgid "Serial numbers already exist: {exists}" msgstr "" -#: stock/models.py:1277 +#: stock/models.py:1267 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:1775 +#: stock/models.py:1765 msgid "Entry notes" msgstr "" -#: stock/models.py:1832 +#: stock/models.py:1822 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:1838 +#: stock/models.py:1828 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:1856 +#: stock/models.py:1846 msgid "Test name" msgstr "" -#: stock/models.py:1862 templates/js/translated/table_filters.js:266 +#: stock/models.py:1852 templates/js/translated/table_filters.js:266 msgid "Test result" msgstr "" -#: stock/models.py:1868 +#: stock/models.py:1858 msgid "Test output value" msgstr "" -#: stock/models.py:1875 +#: stock/models.py:1865 msgid "Test result attachment" msgstr "" -#: stock/models.py:1881 +#: stock/models.py:1871 msgid "Test notes" msgstr "" -#: stock/serializers.py:166 +#: stock/serializers.py:171 msgid "Purchase price of this stock item" msgstr "" -#: stock/serializers.py:173 +#: stock/serializers.py:178 msgid "Purchase currency of this stock item" msgstr "" -#: stock/serializers.py:287 +#: stock/serializers.py:292 msgid "Enter number of stock items to serialize" msgstr "" -#: stock/serializers.py:302 +#: stock/serializers.py:307 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "" -#: stock/serializers.py:308 +#: stock/serializers.py:313 msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:319 stock/serializers.py:686 +#: stock/serializers.py:324 stock/serializers.py:691 msgid "Destination stock location" msgstr "" -#: stock/serializers.py:326 +#: stock/serializers.py:331 msgid "Optional note field" msgstr "" -#: stock/serializers.py:339 +#: stock/serializers.py:344 msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:556 +#: stock/serializers.py:561 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:584 +#: stock/serializers.py:589 msgid "Stock transaction notes" msgstr "" -#: stock/serializers.py:594 +#: stock/serializers.py:599 msgid "A list of stock items must be provided" msgstr "" @@ -5629,125 +5656,131 @@ msgstr "" msgid "Install" msgstr "" -#: stock/templates/stock/item_base.html:106 +#: stock/templates/stock/item_base.html:108 msgid "Convert to variant" msgstr "" -#: stock/templates/stock/item_base.html:109 +#: stock/templates/stock/item_base.html:111 msgid "Duplicate stock item" msgstr "" -#: stock/templates/stock/item_base.html:111 +#: stock/templates/stock/item_base.html:113 msgid "Edit stock item" msgstr "" -#: stock/templates/stock/item_base.html:114 +#: stock/templates/stock/item_base.html:116 msgid "Delete stock item" msgstr "" -#: stock/templates/stock/item_base.html:136 -#: stock/templates/stock/item_base.html:386 -#: templates/js/translated/table_filters.js:247 -msgid "Expired" +#: stock/templates/stock/item_base.html:154 +msgid "previous page" msgstr "" -#: stock/templates/stock/item_base.html:146 -#: stock/templates/stock/item_base.html:388 -#: templates/js/translated/table_filters.js:253 -msgid "Stale" +#: stock/templates/stock/item_base.html:154 +msgid "Navigate to previous serial number" msgstr "" -#: stock/templates/stock/item_base.html:161 -msgid "You are not in the list of owners of this item. This stock item cannot be edited." +#: stock/templates/stock/item_base.html:163 +msgid "next page" msgstr "" -#: stock/templates/stock/item_base.html:168 -msgid "This stock item is in production and cannot be edited." -msgstr "" - -#: stock/templates/stock/item_base.html:169 -msgid "Edit the stock item from the build view." -msgstr "" - -#: stock/templates/stock/item_base.html:182 -msgid "This stock item has not passed all required tests" +#: stock/templates/stock/item_base.html:163 +msgid "Navigate to next serial number" msgstr "" #: stock/templates/stock/item_base.html:190 #, python-format -msgid "This stock item is allocated to Sales Order %(link)s (Quantity: %(qty)s)" -msgstr "" - -#: stock/templates/stock/item_base.html:198 -#, python-format -msgid "This stock item is allocated to Build %(link)s (Quantity: %(qty)s)" -msgstr "" - -#: stock/templates/stock/item_base.html:204 -msgid "This stock item is serialized - it has a unique serial number and the quantity cannot be adjusted." -msgstr "" - -#: stock/templates/stock/item_base.html:208 -msgid "This stock item cannot be deleted as it has child items" -msgstr "" - -#: stock/templates/stock/item_base.html:212 -msgid "This stock item will be automatically deleted when all stock is depleted." -msgstr "" - -#: stock/templates/stock/item_base.html:241 -msgid "previous page" -msgstr "" - -#: stock/templates/stock/item_base.html:247 -msgid "next page" -msgstr "" - -#: stock/templates/stock/item_base.html:290 -#: templates/js/translated/build.js:1035 -msgid "No location set" -msgstr "" - -#: stock/templates/stock/item_base.html:297 -msgid "Barcode Identifier" -msgstr "" - -#: stock/templates/stock/item_base.html:339 -msgid "Parent Item" -msgstr "" - -#: stock/templates/stock/item_base.html:357 -msgid "No manufacturer set" -msgstr "" - -#: stock/templates/stock/item_base.html:386 -#, python-format msgid "This StockItem expired on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:388 +#: stock/templates/stock/item_base.html:190 +#: templates/js/translated/table_filters.js:247 +msgid "Expired" +msgstr "" + +#: stock/templates/stock/item_base.html:192 #, python-format msgid "This StockItem expires on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:395 -#: templates/js/translated/stock.js:1289 +#: stock/templates/stock/item_base.html:192 +#: templates/js/translated/table_filters.js:253 +msgid "Stale" +msgstr "" + +#: stock/templates/stock/item_base.html:199 +#: templates/js/translated/stock.js:1371 msgid "Last Updated" msgstr "" -#: stock/templates/stock/item_base.html:400 +#: stock/templates/stock/item_base.html:204 msgid "Last Stocktake" msgstr "" -#: stock/templates/stock/item_base.html:404 +#: stock/templates/stock/item_base.html:208 msgid "No stocktake performed" msgstr "" -#: stock/templates/stock/item_base.html:415 +#: stock/templates/stock/item_base.html:226 +msgid "You are not in the list of owners of this item. This stock item cannot be edited." +msgstr "" + +#: stock/templates/stock/item_base.html:233 +msgid "This stock item is in production and cannot be edited." +msgstr "" + +#: stock/templates/stock/item_base.html:234 +msgid "Edit the stock item from the build view." +msgstr "" + +#: stock/templates/stock/item_base.html:247 +msgid "This stock item has not passed all required tests" +msgstr "" + +#: stock/templates/stock/item_base.html:255 +#, python-format +msgid "This stock item is allocated to Sales Order %(link)s (Quantity: %(qty)s)" +msgstr "" + +#: stock/templates/stock/item_base.html:263 +#, python-format +msgid "This stock item is allocated to Build %(link)s (Quantity: %(qty)s)" +msgstr "" + +#: stock/templates/stock/item_base.html:269 +msgid "This stock item is serialized - it has a unique serial number and the quantity cannot be adjusted." +msgstr "" + +#: stock/templates/stock/item_base.html:273 +msgid "This stock item cannot be deleted as it has child items" +msgstr "" + +#: stock/templates/stock/item_base.html:277 +msgid "This stock item will be automatically deleted when all stock is depleted." +msgstr "" + +#: stock/templates/stock/item_base.html:318 +#: templates/js/translated/build.js:1035 +msgid "No location set" +msgstr "" + +#: stock/templates/stock/item_base.html:325 +msgid "Barcode Identifier" +msgstr "" + +#: stock/templates/stock/item_base.html:367 +msgid "Parent Item" +msgstr "" + +#: stock/templates/stock/item_base.html:385 +msgid "No manufacturer set" +msgstr "" + +#: stock/templates/stock/item_base.html:410 msgid "Tests" msgstr "" -#: stock/templates/stock/item_base.html:505 +#: stock/templates/stock/item_base.html:500 msgid "Edit Stock Status" msgstr "" @@ -5825,30 +5858,35 @@ msgstr "" msgid "New Location" msgstr "" -#: stock/templates/stock/location.html:86 +#: stock/templates/stock/location.html:95 +#: stock/templates/stock/location.html:101 +msgid "Location Path" +msgstr "" + +#: stock/templates/stock/location.html:102 msgid "Top level stock location" msgstr "" -#: stock/templates/stock/location.html:95 +#: stock/templates/stock/location.html:115 msgid "You are not in the list of owners of this location. This stock location cannot be edited." msgstr "" -#: stock/templates/stock/location.html:113 -#: stock/templates/stock/location.html:160 +#: stock/templates/stock/location.html:128 +#: stock/templates/stock/location.html:175 #: stock/templates/stock/location_sidebar.html:5 msgid "Sublocations" msgstr "" -#: stock/templates/stock/location.html:127 templates/InvenTree/search.html:170 +#: stock/templates/stock/location.html:142 templates/InvenTree/search.html:170 #: templates/stats.html:97 users/models.py:42 msgid "Stock Locations" msgstr "" -#: stock/templates/stock/location.html:167 templates/stock_table.html:30 +#: stock/templates/stock/location.html:182 templates/stock_table.html:30 msgid "Printing Actions" msgstr "" -#: stock/templates/stock/location.html:171 templates/stock_table.html:34 +#: stock/templates/stock/location.html:186 templates/stock_table.html:34 msgid "Print labels" msgstr "" @@ -5942,7 +5980,7 @@ msgstr "" msgid "Uninstall Stock Items" msgstr "" -#: stock/views.py:760 templates/js/translated/stock.js:648 +#: stock/views.py:760 templates/js/translated/stock.js:730 msgid "Confirm stock adjustment" msgstr "" @@ -5950,7 +5988,7 @@ msgstr "" msgid "Uninstalled stock items" msgstr "" -#: stock/views.py:793 templates/js/translated/stock.js:318 +#: stock/views.py:793 templates/js/translated/stock.js:319 msgid "Edit Stock Item" msgstr "" @@ -5962,7 +6000,7 @@ msgstr "" msgid "Create new Stock Item" msgstr "" -#: stock/views.py:1186 templates/js/translated/stock.js:298 +#: stock/views.py:1186 templates/js/translated/stock.js:299 msgid "Duplicate Stock Item" msgstr "" @@ -6868,7 +6906,7 @@ msgstr "" msgid "Unlink" msgstr "" -#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:600 +#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:682 msgid "Remove stock item" msgstr "" @@ -6963,7 +7001,7 @@ msgid "View BOM" msgstr "" #: templates/js/translated/bom.js:608 templates/js/translated/build.js:1183 -#: templates/js/translated/order.js:1320 +#: templates/js/translated/order.js:1319 msgid "Actions" msgstr "" @@ -7055,7 +7093,7 @@ msgstr "" msgid "No build order allocations found" msgstr "" -#: templates/js/translated/build.js:424 templates/js/translated/order.js:1194 +#: templates/js/translated/build.js:424 templates/js/translated/order.js:1193 msgid "Location not specified" msgstr "" @@ -7064,12 +7102,12 @@ msgid "No active build outputs found" msgstr "" #: templates/js/translated/build.js:1052 templates/js/translated/build.js:1760 -#: templates/js/translated/order.js:1327 +#: templates/js/translated/order.js:1326 msgid "Edit stock allocation" msgstr "" #: templates/js/translated/build.js:1054 templates/js/translated/build.js:1761 -#: templates/js/translated/order.js:1328 +#: templates/js/translated/order.js:1327 msgid "Delete stock allocation" msgstr "" @@ -7090,11 +7128,11 @@ msgid "Quantity Per" msgstr "" #: templates/js/translated/build.js:1134 templates/js/translated/build.js:1360 -#: templates/js/translated/build.js:1756 templates/js/translated/order.js:1557 +#: templates/js/translated/build.js:1756 templates/js/translated/order.js:1556 msgid "Allocated" msgstr "" -#: templates/js/translated/build.js:1190 templates/js/translated/order.js:1611 +#: templates/js/translated/build.js:1190 templates/js/translated/order.js:1610 msgid "Build stock" msgstr "" @@ -7102,7 +7140,7 @@ msgstr "" msgid "Order stock" msgstr "" -#: templates/js/translated/build.js:1197 templates/js/translated/order.js:1604 +#: templates/js/translated/build.js:1197 templates/js/translated/order.js:1603 msgid "Allocate stock" msgstr "" @@ -7143,9 +7181,9 @@ msgstr "" msgid "No builds matching query" msgstr "" -#: templates/js/translated/build.js:1593 templates/js/translated/part.js:966 -#: templates/js/translated/part.js:1377 templates/js/translated/stock.js:1094 -#: templates/js/translated/stock.js:1871 +#: templates/js/translated/build.js:1593 templates/js/translated/part.js:1147 +#: templates/js/translated/part.js:1558 templates/js/translated/stock.js:1176 +#: templates/js/translated/stock.js:1953 msgid "Select" msgstr "" @@ -7153,7 +7191,7 @@ msgstr "" msgid "Build order is overdue" msgstr "" -#: templates/js/translated/build.js:1674 templates/js/translated/stock.js:2090 +#: templates/js/translated/build.js:1674 templates/js/translated/stock.js:2172 msgid "No user information" msgstr "" @@ -7197,10 +7235,6 @@ msgstr "" msgid "Delete Supplier Part" msgstr "" -#: templates/js/translated/company.js:265 -msgid "Edit Company" -msgstr "" - #: templates/js/translated/company.js:286 msgid "Add new Company" msgstr "" @@ -7230,34 +7264,34 @@ msgid "No manufacturer parts found" msgstr "" #: templates/js/translated/company.js:497 -#: templates/js/translated/company.js:754 templates/js/translated/part.js:449 -#: templates/js/translated/part.js:534 +#: templates/js/translated/company.js:754 templates/js/translated/part.js:456 +#: templates/js/translated/part.js:541 msgid "Template part" msgstr "" #: templates/js/translated/company.js:501 -#: templates/js/translated/company.js:758 templates/js/translated/part.js:453 -#: templates/js/translated/part.js:538 +#: templates/js/translated/company.js:758 templates/js/translated/part.js:460 +#: templates/js/translated/part.js:545 msgid "Assembled part" msgstr "" -#: templates/js/translated/company.js:628 templates/js/translated/part.js:626 +#: templates/js/translated/company.js:628 templates/js/translated/part.js:633 msgid "No parameters found" msgstr "" -#: templates/js/translated/company.js:665 templates/js/translated/part.js:668 +#: templates/js/translated/company.js:665 templates/js/translated/part.js:675 msgid "Edit parameter" msgstr "" -#: templates/js/translated/company.js:666 templates/js/translated/part.js:669 +#: templates/js/translated/company.js:666 templates/js/translated/part.js:676 msgid "Delete parameter" msgstr "" -#: templates/js/translated/company.js:685 templates/js/translated/part.js:686 +#: templates/js/translated/company.js:685 templates/js/translated/part.js:693 msgid "Edit Parameter" msgstr "" -#: templates/js/translated/company.js:696 templates/js/translated/part.js:698 +#: templates/js/translated/company.js:696 templates/js/translated/part.js:705 msgid "Delete Parameter" msgstr "" @@ -7346,7 +7380,7 @@ msgid "NO" msgstr "" #: templates/js/translated/label.js:29 templates/js/translated/report.js:118 -#: templates/js/translated/stock.js:624 +#: templates/js/translated/stock.js:706 msgid "Select Stock Items" msgstr "" @@ -7502,11 +7536,11 @@ msgstr "" msgid "Export Order" msgstr "" -#: templates/js/translated/order.js:211 templates/js/translated/stock.js:423 +#: templates/js/translated/order.js:211 templates/js/translated/stock.js:505 msgid "Format" msgstr "" -#: templates/js/translated/order.js:212 templates/js/translated/stock.js:424 +#: templates/js/translated/order.js:212 templates/js/translated/stock.js:506 msgid "Select file format" msgstr "" @@ -7522,7 +7556,7 @@ msgstr "" msgid "Quantity to receive" msgstr "" -#: templates/js/translated/order.js:360 templates/js/translated/stock.js:1673 +#: templates/js/translated/order.js:360 templates/js/translated/stock.js:1755 msgid "Stock Status" msgstr "" @@ -7546,321 +7580,321 @@ msgstr "" msgid "Receive Purchase Order Items" msgstr "" -#: templates/js/translated/order.js:627 +#: templates/js/translated/order.js:627 templates/js/translated/part.js:746 msgid "No purchase orders found" msgstr "" -#: templates/js/translated/order.js:652 templates/js/translated/order.js:1063 +#: templates/js/translated/order.js:659 templates/js/translated/order.js:1062 msgid "Order is overdue" msgstr "" -#: templates/js/translated/order.js:772 templates/js/translated/order.js:1646 +#: templates/js/translated/order.js:771 templates/js/translated/order.js:1645 msgid "Edit Line Item" msgstr "" -#: templates/js/translated/order.js:784 templates/js/translated/order.js:1657 +#: templates/js/translated/order.js:783 templates/js/translated/order.js:1656 msgid "Delete Line Item" msgstr "" -#: templates/js/translated/order.js:823 +#: templates/js/translated/order.js:822 msgid "No line items found" msgstr "" -#: templates/js/translated/order.js:850 templates/js/translated/order.js:1467 +#: templates/js/translated/order.js:849 templates/js/translated/order.js:1466 msgid "Total" msgstr "" -#: templates/js/translated/order.js:904 templates/js/translated/order.js:1492 -#: templates/js/translated/part.js:1594 templates/js/translated/part.js:1805 +#: templates/js/translated/order.js:903 templates/js/translated/order.js:1491 +#: templates/js/translated/part.js:1775 templates/js/translated/part.js:1986 msgid "Unit Price" msgstr "" -#: templates/js/translated/order.js:919 templates/js/translated/order.js:1508 +#: templates/js/translated/order.js:918 templates/js/translated/order.js:1507 msgid "Total Price" msgstr "" -#: templates/js/translated/order.js:997 templates/js/translated/order.js:1617 +#: templates/js/translated/order.js:996 templates/js/translated/order.js:1616 msgid "Edit line item" msgstr "" -#: templates/js/translated/order.js:998 +#: templates/js/translated/order.js:997 msgid "Delete line item" msgstr "" -#: templates/js/translated/order.js:1002 +#: templates/js/translated/order.js:1001 templates/js/translated/part.js:878 msgid "Receive line item" msgstr "" -#: templates/js/translated/order.js:1039 +#: templates/js/translated/order.js:1038 msgid "No sales orders found" msgstr "" -#: templates/js/translated/order.js:1077 +#: templates/js/translated/order.js:1076 msgid "Invalid Customer" msgstr "" -#: templates/js/translated/order.js:1155 +#: templates/js/translated/order.js:1154 msgid "No sales order allocations found" msgstr "" -#: templates/js/translated/order.js:1248 +#: templates/js/translated/order.js:1247 msgid "Edit Stock Allocation" msgstr "" -#: templates/js/translated/order.js:1265 +#: templates/js/translated/order.js:1264 msgid "Confirm Delete Operation" msgstr "" -#: templates/js/translated/order.js:1266 +#: templates/js/translated/order.js:1265 msgid "Delete Stock Allocation" msgstr "" -#: templates/js/translated/order.js:1308 +#: templates/js/translated/order.js:1307 msgid "Stock location not specified" msgstr "" -#: templates/js/translated/order.js:1557 +#: templates/js/translated/order.js:1556 msgid "Fulfilled" msgstr "" -#: templates/js/translated/order.js:1601 +#: templates/js/translated/order.js:1600 msgid "Allocate serial numbers" msgstr "" -#: templates/js/translated/order.js:1607 +#: templates/js/translated/order.js:1606 msgid "Purchase stock" msgstr "" -#: templates/js/translated/order.js:1614 templates/js/translated/order.js:1793 +#: templates/js/translated/order.js:1613 templates/js/translated/order.js:1792 msgid "Calculate price" msgstr "" -#: templates/js/translated/order.js:1618 +#: templates/js/translated/order.js:1617 msgid "Delete line item " msgstr "" -#: templates/js/translated/order.js:1741 +#: templates/js/translated/order.js:1740 msgid "Allocate Stock Item" msgstr "" -#: templates/js/translated/order.js:1801 +#: templates/js/translated/order.js:1800 msgid "Update Unit Price" msgstr "" -#: templates/js/translated/order.js:1815 +#: templates/js/translated/order.js:1814 msgid "No matching line items" msgstr "" -#: templates/js/translated/part.js:51 +#: templates/js/translated/part.js:52 msgid "Part Attributes" msgstr "" -#: templates/js/translated/part.js:55 +#: templates/js/translated/part.js:56 msgid "Part Creation Options" msgstr "" -#: templates/js/translated/part.js:59 +#: templates/js/translated/part.js:60 msgid "Part Duplication Options" msgstr "" -#: templates/js/translated/part.js:63 +#: templates/js/translated/part.js:64 msgid "Supplier Options" msgstr "" -#: templates/js/translated/part.js:77 +#: templates/js/translated/part.js:78 msgid "Add Part Category" msgstr "" -#: templates/js/translated/part.js:166 +#: templates/js/translated/part.js:162 msgid "Create Initial Stock" msgstr "" -#: templates/js/translated/part.js:167 +#: templates/js/translated/part.js:163 msgid "Create an initial stock item for this part" msgstr "" -#: templates/js/translated/part.js:174 +#: templates/js/translated/part.js:170 msgid "Initial Stock Quantity" msgstr "" -#: templates/js/translated/part.js:175 +#: templates/js/translated/part.js:171 msgid "Specify initial stock quantity for this part" msgstr "" -#: templates/js/translated/part.js:182 +#: templates/js/translated/part.js:178 msgid "Select destination stock location" msgstr "" -#: templates/js/translated/part.js:193 +#: templates/js/translated/part.js:196 msgid "Copy Category Parameters" msgstr "" -#: templates/js/translated/part.js:194 +#: templates/js/translated/part.js:197 msgid "Copy parameter templates from selected part category" msgstr "" -#: templates/js/translated/part.js:202 +#: templates/js/translated/part.js:205 msgid "Add Supplier Data" msgstr "" -#: templates/js/translated/part.js:203 +#: templates/js/translated/part.js:206 msgid "Create initial supplier data for this part" msgstr "" -#: templates/js/translated/part.js:259 +#: templates/js/translated/part.js:262 msgid "Copy Image" msgstr "" -#: templates/js/translated/part.js:260 +#: templates/js/translated/part.js:263 msgid "Copy image from original part" msgstr "" -#: templates/js/translated/part.js:268 +#: templates/js/translated/part.js:271 msgid "Copy bill of materials from original part" msgstr "" -#: templates/js/translated/part.js:275 +#: templates/js/translated/part.js:278 msgid "Copy Parameters" msgstr "" -#: templates/js/translated/part.js:276 +#: templates/js/translated/part.js:279 msgid "Copy parameter data from original part" msgstr "" -#: templates/js/translated/part.js:289 +#: templates/js/translated/part.js:292 msgid "Parent part category" msgstr "" -#: templates/js/translated/part.js:333 +#: templates/js/translated/part.js:336 msgid "Edit Part" msgstr "" -#: templates/js/translated/part.js:335 +#: templates/js/translated/part.js:338 msgid "Part edited" msgstr "" -#: templates/js/translated/part.js:403 +#: templates/js/translated/part.js:410 msgid "You are subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:405 +#: templates/js/translated/part.js:412 msgid "You have subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:410 +#: templates/js/translated/part.js:417 msgid "Subscribe to notifications for this item" msgstr "" -#: templates/js/translated/part.js:412 +#: templates/js/translated/part.js:419 msgid "You have unsubscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:441 templates/js/translated/part.js:526 +#: templates/js/translated/part.js:448 templates/js/translated/part.js:533 msgid "Trackable part" msgstr "" -#: templates/js/translated/part.js:445 templates/js/translated/part.js:530 +#: templates/js/translated/part.js:452 templates/js/translated/part.js:537 msgid "Virtual part" msgstr "" -#: templates/js/translated/part.js:457 +#: templates/js/translated/part.js:464 msgid "Subscribed part" msgstr "" -#: templates/js/translated/part.js:461 +#: templates/js/translated/part.js:468 msgid "Salable part" msgstr "" -#: templates/js/translated/part.js:576 +#: templates/js/translated/part.js:583 msgid "No variants found" msgstr "" -#: templates/js/translated/part.js:765 +#: templates/js/translated/part.js:946 msgid "Delete part relationship" msgstr "" -#: templates/js/translated/part.js:789 +#: templates/js/translated/part.js:970 msgid "Delete Part Relationship" msgstr "" -#: templates/js/translated/part.js:856 templates/js/translated/part.js:1116 +#: templates/js/translated/part.js:1037 templates/js/translated/part.js:1297 msgid "No parts found" msgstr "" -#: templates/js/translated/part.js:1026 +#: templates/js/translated/part.js:1207 msgid "No category" msgstr "" -#: templates/js/translated/part.js:1049 +#: templates/js/translated/part.js:1230 #: templates/js/translated/table_filters.js:381 msgid "Low stock" msgstr "" -#: templates/js/translated/part.js:1140 templates/js/translated/part.js:1312 -#: templates/js/translated/stock.js:1832 +#: templates/js/translated/part.js:1321 templates/js/translated/part.js:1493 +#: templates/js/translated/stock.js:1914 msgid "Display as list" msgstr "" -#: templates/js/translated/part.js:1156 +#: templates/js/translated/part.js:1337 msgid "Display as grid" msgstr "" -#: templates/js/translated/part.js:1331 templates/js/translated/stock.js:1851 +#: templates/js/translated/part.js:1512 templates/js/translated/stock.js:1933 msgid "Display as tree" msgstr "" -#: templates/js/translated/part.js:1395 +#: templates/js/translated/part.js:1576 msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:1409 templates/js/translated/stock.js:1895 +#: templates/js/translated/part.js:1590 templates/js/translated/stock.js:1977 msgid "Path" msgstr "" -#: templates/js/translated/part.js:1453 +#: templates/js/translated/part.js:1634 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:1504 templates/js/translated/stock.js:816 +#: templates/js/translated/part.js:1685 templates/js/translated/stock.js:898 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:1505 templates/js/translated/stock.js:817 +#: templates/js/translated/part.js:1686 templates/js/translated/stock.js:899 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:1511 +#: templates/js/translated/part.js:1692 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:1533 +#: templates/js/translated/part.js:1714 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:1547 +#: templates/js/translated/part.js:1728 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:1572 +#: templates/js/translated/part.js:1753 #, python-brace-format msgid "No ${human_name} information found" msgstr "" -#: templates/js/translated/part.js:1627 +#: templates/js/translated/part.js:1808 #, python-brace-format msgid "Edit ${human_name}" msgstr "" -#: templates/js/translated/part.js:1628 +#: templates/js/translated/part.js:1809 #, python-brace-format msgid "Delete ${human_name}" msgstr "" -#: templates/js/translated/part.js:1729 +#: templates/js/translated/part.js:1910 msgid "Single Price" msgstr "" -#: templates/js/translated/part.js:1748 +#: templates/js/translated/part.js:1929 msgid "Single Price Difference" msgstr "" @@ -7930,276 +7964,300 @@ msgstr "" msgid "Sales Order(s) must be selected before printing report" msgstr "" -#: templates/js/translated/stock.js:70 +#: templates/js/translated/stock.js:71 msgid "Serialize Stock Item" msgstr "" -#: templates/js/translated/stock.js:88 templates/js/translated/stock.js:167 +#: templates/js/translated/stock.js:89 templates/js/translated/stock.js:168 msgid "Next available serial number" msgstr "" -#: templates/js/translated/stock.js:90 templates/js/translated/stock.js:169 +#: templates/js/translated/stock.js:91 templates/js/translated/stock.js:170 msgid "Latest serial number" msgstr "" -#: templates/js/translated/stock.js:104 +#: templates/js/translated/stock.js:105 msgid "Parent stock location" msgstr "" -#: templates/js/translated/stock.js:140 +#: templates/js/translated/stock.js:141 msgid "New Stock Location" msgstr "" -#: templates/js/translated/stock.js:180 +#: templates/js/translated/stock.js:181 msgid "This part cannot be serialized" msgstr "" -#: templates/js/translated/stock.js:219 +#: templates/js/translated/stock.js:220 msgid "Enter initial quantity for this stock item" msgstr "" -#: templates/js/translated/stock.js:225 +#: templates/js/translated/stock.js:226 msgid "Enter serial numbers for new stock (or leave blank)" msgstr "" -#: templates/js/translated/stock.js:368 +#: templates/js/translated/stock.js:369 msgid "Created new stock item" msgstr "" -#: templates/js/translated/stock.js:381 +#: templates/js/translated/stock.js:382 msgid "Created multiple stock items" msgstr "" -#: templates/js/translated/stock.js:420 +#: templates/js/translated/stock.js:407 +msgid "Find Serial Number" +msgstr "" + +#: templates/js/translated/stock.js:411 templates/js/translated/stock.js:412 +msgid "Enter serial number" +msgstr "" + +#: templates/js/translated/stock.js:428 +msgid "Enter a serial number" +msgstr "" + +#: templates/js/translated/stock.js:448 +msgid "No matching serial number" +msgstr "" + +#: templates/js/translated/stock.js:457 +msgid "More than one matching result found" +msgstr "" + +#: templates/js/translated/stock.js:502 msgid "Export Stock" msgstr "" -#: templates/js/translated/stock.js:431 +#: templates/js/translated/stock.js:513 msgid "Include Sublocations" msgstr "" -#: templates/js/translated/stock.js:432 +#: templates/js/translated/stock.js:514 msgid "Include stock items in sublocations" msgstr "" -#: templates/js/translated/stock.js:474 +#: templates/js/translated/stock.js:556 msgid "Transfer Stock" msgstr "" -#: templates/js/translated/stock.js:475 +#: templates/js/translated/stock.js:557 msgid "Move" msgstr "" -#: templates/js/translated/stock.js:481 +#: templates/js/translated/stock.js:563 msgid "Count Stock" msgstr "" -#: templates/js/translated/stock.js:482 +#: templates/js/translated/stock.js:564 msgid "Count" msgstr "" -#: templates/js/translated/stock.js:486 +#: templates/js/translated/stock.js:568 msgid "Remove Stock" msgstr "" -#: templates/js/translated/stock.js:487 +#: templates/js/translated/stock.js:569 msgid "Take" msgstr "" -#: templates/js/translated/stock.js:491 +#: templates/js/translated/stock.js:573 msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:492 users/models.py:200 +#: templates/js/translated/stock.js:574 users/models.py:200 msgid "Add" msgstr "" -#: templates/js/translated/stock.js:496 templates/stock_table.html:56 +#: templates/js/translated/stock.js:578 templates/stock_table.html:56 msgid "Delete Stock" msgstr "" -#: templates/js/translated/stock.js:585 +#: templates/js/translated/stock.js:667 msgid "Quantity cannot be adjusted for serialized stock" msgstr "" -#: templates/js/translated/stock.js:585 +#: templates/js/translated/stock.js:667 msgid "Specify stock quantity" msgstr "" -#: templates/js/translated/stock.js:625 +#: templates/js/translated/stock.js:707 msgid "You must select at least one available stock item" msgstr "" -#: templates/js/translated/stock.js:783 +#: templates/js/translated/stock.js:865 msgid "PASS" msgstr "" -#: templates/js/translated/stock.js:785 +#: templates/js/translated/stock.js:867 msgid "FAIL" msgstr "" -#: templates/js/translated/stock.js:790 +#: templates/js/translated/stock.js:872 msgid "NO RESULT" msgstr "" -#: templates/js/translated/stock.js:812 +#: templates/js/translated/stock.js:894 msgid "Add test result" msgstr "" -#: templates/js/translated/stock.js:838 +#: templates/js/translated/stock.js:920 msgid "No test results found" msgstr "" -#: templates/js/translated/stock.js:895 +#: templates/js/translated/stock.js:977 msgid "Test Date" msgstr "" -#: templates/js/translated/stock.js:1002 +#: templates/js/translated/stock.js:1084 msgid "In production" msgstr "" -#: templates/js/translated/stock.js:1006 +#: templates/js/translated/stock.js:1088 msgid "Installed in Stock Item" msgstr "" -#: templates/js/translated/stock.js:1010 +#: templates/js/translated/stock.js:1092 msgid "Shipped to customer" msgstr "" -#: templates/js/translated/stock.js:1014 +#: templates/js/translated/stock.js:1096 msgid "Assigned to Sales Order" msgstr "" -#: templates/js/translated/stock.js:1020 +#: templates/js/translated/stock.js:1102 msgid "No stock location set" msgstr "" -#: templates/js/translated/stock.js:1178 +#: templates/js/translated/stock.js:1260 msgid "Stock item is in production" msgstr "" -#: templates/js/translated/stock.js:1183 +#: templates/js/translated/stock.js:1265 msgid "Stock item assigned to sales order" msgstr "" -#: templates/js/translated/stock.js:1186 +#: templates/js/translated/stock.js:1268 msgid "Stock item assigned to customer" msgstr "" -#: templates/js/translated/stock.js:1190 +#: templates/js/translated/stock.js:1272 msgid "Stock item has expired" msgstr "" -#: templates/js/translated/stock.js:1192 +#: templates/js/translated/stock.js:1274 msgid "Stock item will expire soon" msgstr "" -#: templates/js/translated/stock.js:1196 +#: templates/js/translated/stock.js:1278 msgid "Stock item has been allocated" msgstr "" -#: templates/js/translated/stock.js:1200 +#: templates/js/translated/stock.js:1282 msgid "Stock item has been installed in another item" msgstr "" -#: templates/js/translated/stock.js:1207 +#: templates/js/translated/stock.js:1289 msgid "Stock item has been rejected" msgstr "" -#: templates/js/translated/stock.js:1209 +#: templates/js/translated/stock.js:1291 msgid "Stock item is lost" msgstr "" -#: templates/js/translated/stock.js:1211 +#: templates/js/translated/stock.js:1293 msgid "Stock item is destroyed" msgstr "" -#: templates/js/translated/stock.js:1215 +#: templates/js/translated/stock.js:1297 #: templates/js/translated/table_filters.js:183 msgid "Depleted" msgstr "" -#: templates/js/translated/stock.js:1265 +#: templates/js/translated/stock.js:1347 msgid "Stocktake" msgstr "" -#: templates/js/translated/stock.js:1338 +#: templates/js/translated/stock.js:1420 msgid "Supplier part not specified" msgstr "" -#: templates/js/translated/stock.js:1376 +#: templates/js/translated/stock.js:1458 msgid "No stock items matching query" msgstr "" -#: templates/js/translated/stock.js:1397 templates/js/translated/stock.js:1445 +#: templates/js/translated/stock.js:1479 templates/js/translated/stock.js:1527 msgid "items" msgstr "" -#: templates/js/translated/stock.js:1485 +#: templates/js/translated/stock.js:1567 msgid "batches" msgstr "" -#: templates/js/translated/stock.js:1512 +#: templates/js/translated/stock.js:1594 msgid "locations" msgstr "" -#: templates/js/translated/stock.js:1514 +#: templates/js/translated/stock.js:1596 msgid "Undefined location" msgstr "" -#: templates/js/translated/stock.js:1688 +#: templates/js/translated/stock.js:1770 msgid "Set Stock Status" msgstr "" -#: templates/js/translated/stock.js:1702 +#: templates/js/translated/stock.js:1784 msgid "Select Status Code" msgstr "" -#: templates/js/translated/stock.js:1703 +#: templates/js/translated/stock.js:1785 msgid "Status code must be selected" msgstr "" -#: templates/js/translated/stock.js:1927 +#: templates/js/translated/stock.js:2009 msgid "Invalid date" msgstr "" -#: templates/js/translated/stock.js:1974 +#: templates/js/translated/stock.js:2031 +msgid "Details" +msgstr "Détails" + +#: templates/js/translated/stock.js:2056 msgid "Location no longer exists" msgstr "" -#: templates/js/translated/stock.js:1993 +#: templates/js/translated/stock.js:2075 msgid "Purchase order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2012 +#: templates/js/translated/stock.js:2094 msgid "Customer no longer exists" msgstr "" -#: templates/js/translated/stock.js:2030 +#: templates/js/translated/stock.js:2112 msgid "Stock item no longer exists" msgstr "" -#: templates/js/translated/stock.js:2053 +#: templates/js/translated/stock.js:2135 msgid "Added" msgstr "" -#: templates/js/translated/stock.js:2061 +#: templates/js/translated/stock.js:2143 msgid "Removed" msgstr "" -#: templates/js/translated/stock.js:2102 +#: templates/js/translated/stock.js:2184 msgid "Edit tracking entry" msgstr "" -#: templates/js/translated/stock.js:2103 +#: templates/js/translated/stock.js:2185 msgid "Delete tracking entry" msgstr "" -#: templates/js/translated/stock.js:2154 +#: templates/js/translated/stock.js:2236 msgid "No installed items" msgstr "" -#: templates/js/translated/stock.js:2205 +#: templates/js/translated/stock.js:2287 msgid "Uninstall Stock Item" msgstr "" diff --git a/InvenTree/locale/he/LC_MESSAGES/django.po b/InvenTree/locale/he/LC_MESSAGES/django.po index 19508cb053..634eb7da35 100644 --- a/InvenTree/locale/he/LC_MESSAGES/django.po +++ b/InvenTree/locale/he/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-11-30 21:49+0000\n" -"PO-Revision-Date: 2021-11-30 21:52\n" +"POT-Creation-Date: 2021-12-03 10:37+0000\n" +"PO-Revision-Date: 2021-12-03 11:25\n" "Last-Translator: \n" "Language-Team: Hebrew\n" "Language: he_IL\n" @@ -114,129 +114,130 @@ msgstr "" msgid "Number of unique serial number ({s}) must match quantity ({q})" msgstr "" -#: InvenTree/models.py:114 +#: InvenTree/models.py:120 msgid "Missing file" msgstr "" -#: InvenTree/models.py:115 +#: InvenTree/models.py:121 msgid "Missing external link" msgstr "" -#: InvenTree/models.py:126 stock/models.py:1874 +#: InvenTree/models.py:132 stock/models.py:1864 #: templates/js/translated/attachment.js:117 msgid "Attachment" msgstr "" -#: InvenTree/models.py:127 +#: InvenTree/models.py:133 msgid "Select file to attach" msgstr "" -#: InvenTree/models.py:133 company/models.py:131 company/models.py:348 +#: InvenTree/models.py:139 company/models.py:131 company/models.py:348 #: company/models.py:564 order/models.py:163 part/models.py:797 #: report/templates/report/inventree_build_order_base.html:165 #: templates/js/translated/company.js:537 -#: templates/js/translated/company.js:826 templates/js/translated/part.js:1077 +#: templates/js/translated/company.js:826 templates/js/translated/part.js:1258 msgid "Link" msgstr "" -#: InvenTree/models.py:134 build/models.py:330 part/models.py:798 -#: stock/models.py:540 +#: InvenTree/models.py:140 build/models.py:330 part/models.py:798 +#: stock/models.py:530 msgid "Link to external URL" msgstr "" -#: InvenTree/models.py:137 templates/js/translated/attachment.js:161 +#: InvenTree/models.py:143 templates/js/translated/attachment.js:161 msgid "Comment" msgstr "" -#: InvenTree/models.py:137 +#: InvenTree/models.py:143 msgid "File comment" msgstr "" -#: InvenTree/models.py:143 InvenTree/models.py:144 common/models.py:1185 +#: InvenTree/models.py:149 InvenTree/models.py:150 common/models.py:1185 #: common/models.py:1186 part/models.py:2205 part/models.py:2225 #: report/templates/report/inventree_test_report_base.html:96 -#: templates/js/translated/stock.js:2084 +#: templates/js/translated/stock.js:2166 msgid "User" msgstr "" -#: InvenTree/models.py:147 +#: InvenTree/models.py:153 msgid "upload date" msgstr "" -#: InvenTree/models.py:170 +#: InvenTree/models.py:176 msgid "Filename must not be empty" msgstr "" -#: InvenTree/models.py:193 +#: InvenTree/models.py:199 msgid "Invalid attachment directory" msgstr "" -#: InvenTree/models.py:203 +#: InvenTree/models.py:209 #, python-brace-format msgid "Filename contains illegal character '{c}'" msgstr "" -#: InvenTree/models.py:206 +#: InvenTree/models.py:212 msgid "Filename missing extension" msgstr "" -#: InvenTree/models.py:213 +#: InvenTree/models.py:219 msgid "Attachment with this filename already exists" msgstr "" -#: InvenTree/models.py:220 +#: InvenTree/models.py:226 msgid "Error renaming file" msgstr "" -#: InvenTree/models.py:255 +#: InvenTree/models.py:261 msgid "Invalid choice" msgstr "" -#: InvenTree/models.py:271 InvenTree/models.py:272 company/models.py:415 +#: InvenTree/models.py:277 InvenTree/models.py:278 company/models.py:415 #: label/models.py:112 part/models.py:741 part/models.py:2389 -#: part/templates/part/detail.html:25 report/models.py:181 -#: templates/InvenTree/settings/settings.html:259 -#: templates/js/translated/company.js:638 templates/js/translated/part.js:499 -#: templates/js/translated/part.js:636 templates/js/translated/part.js:1384 -#: templates/js/translated/stock.js:1877 +#: report/models.py:181 templates/InvenTree/settings/settings.html:259 +#: templates/js/translated/company.js:638 templates/js/translated/part.js:506 +#: templates/js/translated/part.js:643 templates/js/translated/part.js:1565 +#: templates/js/translated/stock.js:1959 msgid "Name" msgstr "" -#: InvenTree/models.py:278 build/models.py:207 +#: InvenTree/models.py:284 build/models.py:207 #: build/templates/build/detail.html:25 company/models.py:354 -#: company/models.py:570 company/templates/company/manufacturer_part.html:80 -#: company/templates/company/supplier_part.html:81 label/models.py:119 -#: order/models.py:161 part/models.py:764 part/templates/part/detail.html:30 +#: company/models.py:570 company/templates/company/company_base.html:68 +#: company/templates/company/manufacturer_part.html:76 +#: company/templates/company/supplier_part.html:73 label/models.py:119 +#: order/models.py:161 part/models.py:764 part/templates/part/category.html:70 +#: part/templates/part/part_base.html:163 #: part/templates/part/set_category.html:14 report/models.py:194 #: report/models.py:553 report/models.py:592 #: report/templates/report/inventree_build_order_base.html:118 -#: stock/templates/stock/location.html:108 templates/js/translated/bom.js:215 +#: stock/templates/stock/location.html:89 templates/js/translated/bom.js:215 #: templates/js/translated/bom.js:428 templates/js/translated/build.js:1621 #: templates/js/translated/company.js:345 #: templates/js/translated/company.js:548 -#: templates/js/translated/company.js:837 templates/js/translated/order.js:673 -#: templates/js/translated/order.js:855 templates/js/translated/order.js:1091 -#: templates/js/translated/part.js:558 templates/js/translated/part.js:752 -#: templates/js/translated/part.js:837 templates/js/translated/part.js:1007 -#: templates/js/translated/part.js:1403 templates/js/translated/part.js:1472 -#: templates/js/translated/stock.js:1151 templates/js/translated/stock.js:1889 -#: templates/js/translated/stock.js:1934 +#: templates/js/translated/company.js:837 templates/js/translated/order.js:680 +#: templates/js/translated/order.js:854 templates/js/translated/order.js:1090 +#: templates/js/translated/part.js:565 templates/js/translated/part.js:933 +#: templates/js/translated/part.js:1018 templates/js/translated/part.js:1188 +#: templates/js/translated/part.js:1584 templates/js/translated/part.js:1653 +#: templates/js/translated/stock.js:1233 templates/js/translated/stock.js:1971 +#: templates/js/translated/stock.js:2016 msgid "Description" msgstr "" -#: InvenTree/models.py:279 +#: InvenTree/models.py:285 msgid "Description (optional)" msgstr "" -#: InvenTree/models.py:287 +#: InvenTree/models.py:293 msgid "parent" msgstr "" -#: InvenTree/serializers.py:62 part/models.py:2674 +#: InvenTree/serializers.py:65 part/models.py:2674 msgid "Must be a valid number" msgstr "" -#: InvenTree/serializers.py:285 +#: InvenTree/serializers.py:299 msgid "Filename" msgstr "" @@ -361,7 +362,7 @@ msgid "Returned" msgstr "" #: InvenTree/status_codes.py:143 -#: order/templates/order/sales_order_base.html:147 +#: order/templates/order/sales_order_base.html:148 msgid "Shipped" msgstr "" @@ -566,7 +567,7 @@ msgid "Barcode associated with StockItem" msgstr "" #: build/forms.py:36 build/models.py:1283 -#: build/templates/build/build_base.html:124 +#: build/templates/build/build_base.html:132 #: build/templates/build/detail.html:35 common/models.py:1225 #: company/forms.py:42 company/templates/company/supplier_part.html:251 #: order/forms.py:102 order/models.py:729 order/models.py:991 @@ -574,26 +575,27 @@ msgstr "" #: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:223 #: part/forms.py:239 part/forms.py:255 part/models.py:2576 #: part/templates/part/bom_upload/match_parts.html:31 -#: part/templates/part/detail.html:1076 part/templates/part/detail.html:1162 +#: part/templates/part/detail.html:967 part/templates/part/detail.html:1053 #: part/templates/part/part_pricing.html:16 #: report/templates/report/inventree_build_order_base.html:114 #: report/templates/report/inventree_po_report.html:91 #: report/templates/report/inventree_so_report.html:91 #: report/templates/report/inventree_test_report_base.html:81 #: report/templates/report/inventree_test_report_base.html:139 -#: stock/forms.py:156 stock/serializers.py:286 -#: stock/templates/stock/item_base.html:256 +#: stock/forms.py:156 stock/serializers.py:291 +#: stock/templates/stock/item_base.html:174 #: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:443 #: templates/js/translated/build.js:235 templates/js/translated/build.js:435 #: templates/js/translated/build.js:629 templates/js/translated/build.js:639 #: templates/js/translated/build.js:1015 templates/js/translated/build.js:1362 #: templates/js/translated/model_renderers.js:99 -#: templates/js/translated/order.js:892 templates/js/translated/order.js:1205 -#: templates/js/translated/order.js:1283 templates/js/translated/order.js:1290 -#: templates/js/translated/order.js:1379 templates/js/translated/order.js:1479 -#: templates/js/translated/part.js:1615 templates/js/translated/part.js:1738 -#: templates/js/translated/part.js:1816 templates/js/translated/stock.js:377 -#: templates/js/translated/stock.js:2069 templates/js/translated/stock.js:2171 +#: templates/js/translated/order.js:891 templates/js/translated/order.js:1204 +#: templates/js/translated/order.js:1282 templates/js/translated/order.js:1289 +#: templates/js/translated/order.js:1378 templates/js/translated/order.js:1478 +#: templates/js/translated/part.js:843 templates/js/translated/part.js:1796 +#: templates/js/translated/part.js:1919 templates/js/translated/part.js:1997 +#: templates/js/translated/stock.js:378 templates/js/translated/stock.js:2151 +#: templates/js/translated/stock.js:2253 msgid "Quantity" msgstr "" @@ -602,8 +604,8 @@ msgid "Enter quantity for build output" msgstr "" #: build/forms.py:41 order/forms.py:96 stock/forms.py:95 -#: stock/serializers.py:307 templates/js/translated/stock.js:224 -#: templates/js/translated/stock.js:378 +#: stock/serializers.py:312 templates/js/translated/stock.js:225 +#: templates/js/translated/stock.js:379 msgid "Serial Numbers" msgstr "" @@ -646,7 +648,7 @@ msgstr "" #: build/templates/build/index.html:8 build/templates/build/index.html:12 #: order/templates/order/sales_order_detail.html:42 #: order/templates/order/so_sidebar.html:7 -#: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:221 +#: part/templates/part/part_sidebar.html:20 templates/InvenTree/index.html:221 #: templates/InvenTree/search.html:145 #: templates/InvenTree/settings/sidebar.html:42 users/models.py:44 msgid "Build Orders" @@ -662,7 +664,7 @@ msgstr "" #: report/templates/report/inventree_po_report.html:92 #: report/templates/report/inventree_so_report.html:92 #: templates/js/translated/bom.js:435 templates/js/translated/build.js:1119 -#: templates/js/translated/order.js:886 templates/js/translated/order.js:1473 +#: templates/js/translated/order.js:885 templates/js/translated/order.js:1472 msgid "Reference" msgstr "" @@ -670,7 +672,7 @@ msgstr "" msgid "Brief description of the build" msgstr "" -#: build/models.py:219 build/templates/build/build_base.html:156 +#: build/models.py:219 build/templates/build/build_base.html:164 #: build/templates/build/detail.html:88 msgid "Parent Build" msgstr "" @@ -679,7 +681,7 @@ msgstr "" msgid "BuildOrder to which this build is allocated" msgstr "" -#: build/models.py:225 build/templates/build/build_base.html:119 +#: build/models.py:225 build/templates/build/build_base.html:77 #: build/templates/build/detail.html:30 company/models.py:705 #: order/models.py:789 order/models.py:860 #: order/templates/order/order_wizard/select_parts.html:32 part/models.py:357 @@ -700,10 +702,10 @@ msgstr "" #: templates/js/translated/build.js:988 templates/js/translated/build.js:1359 #: templates/js/translated/build.js:1626 templates/js/translated/company.js:489 #: templates/js/translated/company.js:746 templates/js/translated/order.js:426 -#: templates/js/translated/order.js:840 templates/js/translated/order.js:1457 -#: templates/js/translated/part.js:737 templates/js/translated/part.js:818 -#: templates/js/translated/part.js:985 templates/js/translated/stock.js:508 -#: templates/js/translated/stock.js:1108 templates/js/translated/stock.js:2159 +#: templates/js/translated/order.js:839 templates/js/translated/order.js:1456 +#: templates/js/translated/part.js:918 templates/js/translated/part.js:999 +#: templates/js/translated/part.js:1166 templates/js/translated/stock.js:590 +#: templates/js/translated/stock.js:1190 templates/js/translated/stock.js:2241 msgid "Part" msgstr "" @@ -751,7 +753,7 @@ msgstr "" msgid "Number of stock items which have been completed" msgstr "" -#: build/models.py:277 part/templates/part/part_base.html:216 +#: build/models.py:277 part/templates/part/part_base.html:234 msgid "Build Status" msgstr "" @@ -759,7 +761,7 @@ msgstr "" msgid "Build status code" msgstr "" -#: build/models.py:285 stock/models.py:544 +#: build/models.py:285 stock/models.py:534 msgid "Batch Code" msgstr "" @@ -768,7 +770,7 @@ msgid "Batch code for this build output" msgstr "" #: build/models.py:292 order/models.py:165 part/models.py:936 -#: part/templates/part/detail.html:86 templates/js/translated/order.js:1104 +#: part/templates/part/part_base.html:313 templates/js/translated/order.js:1103 msgid "Creation Date" msgstr "" @@ -797,12 +799,12 @@ msgstr "" msgid "User who issued this build order" msgstr "" -#: build/models.py:323 build/templates/build/build_base.html:177 +#: build/models.py:323 build/templates/build/build_base.html:185 #: build/templates/build/detail.html:116 order/models.py:179 -#: order/templates/order/order_base.html:154 -#: order/templates/order/sales_order_base.html:161 part/models.py:940 +#: order/templates/order/order_base.html:158 +#: order/templates/order/sales_order_base.html:162 part/models.py:940 #: report/templates/report/inventree_build_order_base.html:159 -#: templates/js/translated/build.js:1680 templates/js/translated/order.js:700 +#: templates/js/translated/build.js:1680 templates/js/translated/order.js:699 msgid "Responsible" msgstr "" @@ -811,10 +813,10 @@ msgid "User responsible for this build order" msgstr "" #: build/models.py:329 build/templates/build/detail.html:102 -#: company/templates/company/manufacturer_part.html:87 -#: company/templates/company/supplier_part.html:88 -#: part/templates/part/detail.html:80 stock/models.py:538 -#: stock/templates/stock/item_base.html:346 +#: company/templates/company/manufacturer_part.html:102 +#: company/templates/company/supplier_part.html:126 +#: part/templates/part/part_base.html:354 stock/models.py:528 +#: stock/templates/stock/item_base.html:374 msgid "External Link" msgstr "" @@ -824,15 +826,15 @@ msgstr "" #: order/models.py:183 order/models.py:738 #: order/templates/order/po_sidebar.html:11 #: order/templates/order/so_sidebar.html:11 part/models.py:925 -#: part/templates/part/detail.html:223 part/templates/part/part_sidebar.html:52 +#: part/templates/part/detail.html:116 part/templates/part/part_sidebar.html:50 #: report/templates/report/inventree_build_order_base.html:173 -#: stock/forms.py:154 stock/forms.py:204 stock/forms.py:238 stock/models.py:610 -#: stock/models.py:1774 stock/models.py:1880 stock/serializers.py:325 -#: stock/serializers.py:583 stock/templates/stock/stock_sidebar.html:21 +#: stock/forms.py:154 stock/forms.py:204 stock/forms.py:238 stock/models.py:600 +#: stock/models.py:1764 stock/models.py:1870 stock/serializers.py:330 +#: stock/serializers.py:588 stock/templates/stock/stock_sidebar.html:21 #: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:599 -#: templates/js/translated/company.js:842 templates/js/translated/order.js:985 -#: templates/js/translated/order.js:1583 templates/js/translated/stock.js:891 -#: templates/js/translated/stock.js:1370 +#: templates/js/translated/company.js:842 templates/js/translated/order.js:984 +#: templates/js/translated/order.js:1582 templates/js/translated/stock.js:973 +#: templates/js/translated/stock.js:1452 msgid "Notes" msgstr "" @@ -877,7 +879,7 @@ msgstr "" msgid "Selected stock item not found in BOM" msgstr "" -#: build/models.py:1253 stock/templates/stock/item_base.html:318 +#: build/models.py:1253 stock/templates/stock/item_base.html:346 #: templates/InvenTree/search.html:143 templates/js/translated/build.js:1599 #: templates/navbar.html:33 msgid "Build" @@ -890,11 +892,11 @@ msgstr "" #: build/models.py:1270 build/serializers.py:328 #: stock/templates/stock/item_base.html:8 #: stock/templates/stock/item_base.html:16 -#: stock/templates/stock/item_base.html:340 +#: stock/templates/stock/item_base.html:368 #: templates/js/translated/build.js:408 templates/js/translated/build.js:413 #: templates/js/translated/build.js:1361 templates/js/translated/build.js:1742 -#: templates/js/translated/order.js:1178 templates/js/translated/order.js:1183 -#: templates/js/translated/stock.js:2020 +#: templates/js/translated/order.js:1177 templates/js/translated/order.js:1182 +#: templates/js/translated/stock.js:2102 msgid "Stock Item" msgstr "" @@ -934,16 +936,16 @@ msgstr "" msgid "This build output is not fully allocated" msgstr "" -#: build/serializers.py:190 order/serializers.py:219 order/serializers.py:287 -#: stock/forms.py:236 stock/serializers.py:318 stock/serializers.py:685 -#: stock/templates/stock/item_base.html:286 +#: build/serializers.py:190 order/serializers.py:228 order/serializers.py:296 +#: stock/forms.py:236 stock/serializers.py:323 stock/serializers.py:690 +#: stock/templates/stock/item_base.html:314 #: templates/js/translated/barcode.js:384 #: templates/js/translated/barcode.js:557 templates/js/translated/build.js:420 #: templates/js/translated/build.js:1027 templates/js/translated/order.js:348 -#: templates/js/translated/order.js:1190 templates/js/translated/order.js:1298 -#: templates/js/translated/order.js:1304 templates/js/translated/part.js:181 -#: templates/js/translated/stock.js:510 templates/js/translated/stock.js:1251 -#: templates/js/translated/stock.js:1961 +#: templates/js/translated/order.js:1189 templates/js/translated/order.js:1297 +#: templates/js/translated/order.js:1303 templates/js/translated/part.js:177 +#: templates/js/translated/stock.js:592 templates/js/translated/stock.js:1333 +#: templates/js/translated/stock.js:2043 msgid "Location" msgstr "" @@ -951,13 +953,13 @@ msgstr "" msgid "Location for completed build outputs" msgstr "" -#: build/serializers.py:197 build/templates/build/build_base.html:129 +#: build/serializers.py:197 build/templates/build/build_base.html:137 #: build/templates/build/detail.html:63 order/models.py:572 -#: order/serializers.py:240 stock/templates/stock/item_base.html:409 +#: order/serializers.py:249 stock/templates/stock/item_base.html:180 #: templates/js/translated/barcode.js:140 templates/js/translated/build.js:1655 -#: templates/js/translated/order.js:431 templates/js/translated/order.js:677 -#: templates/js/translated/order.js:1096 templates/js/translated/stock.js:1226 -#: templates/js/translated/stock.js:2038 templates/js/translated/stock.js:2187 +#: templates/js/translated/order.js:431 templates/js/translated/order.js:1095 +#: templates/js/translated/stock.js:1308 templates/js/translated/stock.js:2120 +#: templates/js/translated/stock.js:2269 msgid "Status" msgstr "" @@ -986,8 +988,8 @@ msgstr "" msgid "Item must be in stock" msgstr "" -#: build/serializers.py:348 order/models.py:316 order/serializers.py:233 -#: stock/models.py:381 stock/models.py:1103 stock/serializers.py:298 +#: build/serializers.py:348 order/models.py:316 order/serializers.py:242 +#: stock/models.py:371 stock/models.py:1093 stock/serializers.py:303 msgid "Quantity must be greater than zero" msgstr "" @@ -1031,7 +1033,7 @@ msgid "Edit Build" msgstr "" #: build/templates/build/build_base.html:56 -#: build/templates/build/build_base.html:207 build/views.py:56 +#: build/templates/build/build_base.html:215 build/views.py:56 msgid "Cancel Build" msgstr "" @@ -1041,93 +1043,95 @@ msgstr "" #: build/templates/build/build_base.html:64 #: build/templates/build/build_base.html:65 -#: build/templates/build/build_base.html:223 +#: build/templates/build/build_base.html:231 msgid "Complete Build" msgstr "" -#: build/templates/build/build_base.html:79 +#: build/templates/build/build_base.html:82 +msgid "Build Description" +msgstr "" + +#: build/templates/build/build_base.html:91 #, python-format msgid "This Build Order is allocated to Sales Order %(link)s" msgstr "" -#: build/templates/build/build_base.html:86 +#: build/templates/build/build_base.html:98 #, python-format msgid "This Build Order is a child of Build Order %(link)s" msgstr "" -#: build/templates/build/build_base.html:93 +#: build/templates/build/build_base.html:105 msgid "Build Order is ready to mark as completed" msgstr "" -#: build/templates/build/build_base.html:98 +#: build/templates/build/build_base.html:110 msgid "Build Order cannot be completed as outstanding outputs remain" msgstr "" -#: build/templates/build/build_base.html:103 +#: build/templates/build/build_base.html:115 msgid "Required build quantity has not yet been completed" msgstr "" -#: build/templates/build/build_base.html:108 +#: build/templates/build/build_base.html:120 msgid "Stock has not been fully allocated to this Build Order" msgstr "" -#: build/templates/build/build_base.html:138 +#: build/templates/build/build_base.html:146 #: build/templates/build/detail.html:132 -#: order/templates/order/order_base.html:140 -#: order/templates/order/sales_order_base.html:140 +#: order/templates/order/order_base.html:144 +#: order/templates/order/sales_order_base.html:141 #: report/templates/report/inventree_build_order_base.html:126 -#: templates/js/translated/build.js:1692 templates/js/translated/order.js:690 -#: templates/js/translated/order.js:1109 +#: templates/js/translated/build.js:1692 templates/js/translated/order.js:689 +#: templates/js/translated/order.js:1108 msgid "Target Date" msgstr "" -#: build/templates/build/build_base.html:143 +#: build/templates/build/build_base.html:151 #, python-format msgid "This build was due on %(target)s" msgstr "" -#: build/templates/build/build_base.html:143 -#: build/templates/build/build_base.html:188 -#: order/templates/order/order_base.html:81 -#: order/templates/order/order_base.html:102 -#: order/templates/order/sales_order_base.html:78 -#: order/templates/order/sales_order_base.html:107 +#: build/templates/build/build_base.html:151 +#: build/templates/build/build_base.html:196 +#: order/templates/order/order_base.html:98 +#: order/templates/order/sales_order_base.html:93 #: templates/js/translated/table_filters.js:294 #: templates/js/translated/table_filters.js:322 #: templates/js/translated/table_filters.js:339 msgid "Overdue" msgstr "" -#: build/templates/build/build_base.html:150 +#: build/templates/build/build_base.html:158 #: build/templates/build/detail.html:68 build/templates/build/detail.html:143 #: templates/js/translated/build.js:1641 #: templates/js/translated/table_filters.js:304 msgid "Completed" msgstr "" -#: build/templates/build/build_base.html:163 +#: build/templates/build/build_base.html:171 #: build/templates/build/detail.html:95 order/models.py:857 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: order/templates/order/sales_order_ship.html:25 #: report/templates/report/inventree_build_order_base.html:136 #: report/templates/report/inventree_so_report.html:77 -#: stock/templates/stock/item_base.html:280 -#: templates/js/translated/order.js:1051 +#: stock/templates/stock/item_base.html:308 +#: templates/js/translated/order.js:1050 msgid "Sales Order" msgstr "" -#: build/templates/build/build_base.html:170 +#: build/templates/build/build_base.html:178 #: build/templates/build/detail.html:109 #: report/templates/report/inventree_build_order_base.html:153 msgid "Issued By" msgstr "" -#: build/templates/build/build_base.html:215 +#: build/templates/build/build_base.html:223 msgid "Incomplete Outputs" msgstr "" -#: build/templates/build/build_base.html:216 +#: build/templates/build/build_base.html:224 msgid "Build Order cannot be completed as incomplete build outputs remain" msgstr "" @@ -1188,7 +1192,7 @@ msgid "Stock can be taken from any available location." msgstr "" #: build/templates/build/detail.html:50 order/models.py:811 stock/forms.py:150 -#: templates/js/translated/order.js:432 templates/js/translated/order.js:974 +#: templates/js/translated/order.js:432 templates/js/translated/order.js:973 msgid "Destination" msgstr "" @@ -1201,16 +1205,16 @@ msgid "Allocated Parts" msgstr "" #: build/templates/build/detail.html:81 -#: stock/templates/stock/item_base.html:304 -#: templates/js/translated/stock.js:1240 templates/js/translated/stock.js:2194 +#: stock/templates/stock/item_base.html:332 +#: templates/js/translated/stock.js:1322 templates/js/translated/stock.js:2276 #: templates/js/translated/table_filters.js:151 #: templates/js/translated/table_filters.js:233 msgid "Batch" msgstr "" #: build/templates/build/detail.html:127 -#: order/templates/order/order_base.html:127 -#: order/templates/order/sales_order_base.html:134 +#: order/templates/order/order_base.html:131 +#: order/templates/order/sales_order_base.html:135 #: templates/js/translated/build.js:1663 msgid "Created" msgstr "" @@ -1254,7 +1258,7 @@ msgstr "" #: build/templates/build/detail.html:185 #: company/templates/company/detail.html:38 #: company/templates/company/detail.html:85 order/views.py:509 -#: part/templates/part/category.html:166 +#: part/templates/part/category.html:173 msgid "Order Parts" msgstr "" @@ -1306,8 +1310,8 @@ msgstr "" #: order/templates/order/po_sidebar.html:9 #: order/templates/order/purchase_order_detail.html:60 #: order/templates/order/sales_order_detail.html:52 -#: order/templates/order/so_sidebar.html:9 part/templates/part/detail.html:300 -#: part/templates/part/part_sidebar.html:50 stock/templates/stock/item.html:95 +#: order/templates/order/so_sidebar.html:9 part/templates/part/detail.html:193 +#: part/templates/part/part_sidebar.html:48 stock/templates/stock/item.html:95 #: stock/templates/stock/stock_sidebar.html:19 msgid "Attachments" msgstr "" @@ -1323,7 +1327,7 @@ msgstr "" #: order/templates/order/purchase_order_detail.html:108 #: order/templates/order/sales_order_detail.html:72 #: order/templates/order/sales_order_detail.html:99 -#: part/templates/part/detail.html:227 stock/templates/stock/item.html:115 +#: part/templates/part/detail.html:120 stock/templates/stock/item.html:115 #: stock/templates/stock/item.html:205 msgid "Edit Notes" msgstr "" @@ -1336,7 +1340,7 @@ msgstr "" msgid "All untracked stock items have been allocated" msgstr "" -#: build/templates/build/index.html:18 part/templates/part/detail.html:407 +#: build/templates/build/index.html:18 part/templates/part/detail.html:300 msgid "New Build Order" msgstr "" @@ -1380,7 +1384,7 @@ msgstr "" msgid "Maximum output quantity is " msgstr "" -#: build/views.py:122 stock/serializers.py:356 stock/views.py:1290 +#: build/views.py:122 stock/serializers.py:361 stock/views.py:1290 msgid "Serial numbers already exist" msgstr "" @@ -1675,7 +1679,7 @@ msgid "Parts are trackable by default" msgstr "" #: common/models.py:745 part/models.py:920 -#: part/templates/part/part_base.html:144 +#: part/templates/part/part_base.html:147 #: templates/js/translated/table_filters.js:42 msgid "Virtual" msgstr "" @@ -2142,7 +2146,7 @@ msgstr "" #: common/models.py:1233 company/serializers.py:264 #: company/templates/company/supplier_part.html:256 -#: templates/js/translated/part.js:1620 +#: templates/js/translated/part.js:852 templates/js/translated/part.js:1801 msgid "Price" msgstr "" @@ -2206,7 +2210,7 @@ msgstr "" msgid "Description of the company" msgstr "" -#: company/models.py:112 company/templates/company/company_base.html:70 +#: company/models.py:112 company/templates/company/company_base.html:97 #: templates/js/translated/company.js:349 msgid "Website" msgstr "" @@ -2215,7 +2219,7 @@ msgstr "" msgid "Company website URL" msgstr "" -#: company/models.py:117 company/templates/company/company_base.html:88 +#: company/models.py:117 company/templates/company/company_base.html:115 msgid "Address" msgstr "" @@ -2231,7 +2235,7 @@ msgstr "" msgid "Contact phone number" msgstr "" -#: company/models.py:125 company/templates/company/company_base.html:102 +#: company/models.py:125 company/templates/company/company_base.html:129 #: templates/InvenTree/settings/user.html:47 msgid "Email" msgstr "" @@ -2240,7 +2244,7 @@ msgstr "" msgid "Contact email address" msgstr "" -#: company/models.py:128 company/templates/company/company_base.html:109 +#: company/models.py:128 company/templates/company/company_base.html:136 msgid "Contact" msgstr "" @@ -2281,7 +2285,7 @@ msgid "Does this company manufacture parts?" msgstr "" #: company/models.py:152 company/serializers.py:270 -#: company/templates/company/company_base.html:76 stock/serializers.py:172 +#: company/templates/company/company_base.html:103 stock/serializers.py:177 msgid "Currency" msgstr "" @@ -2289,8 +2293,8 @@ msgstr "" msgid "Default currency used for this company" msgstr "" -#: company/models.py:320 company/models.py:535 stock/models.py:484 -#: stock/templates/stock/item_base.html:224 +#: company/models.py:320 company/models.py:535 stock/models.py:474 +#: stock/templates/stock/item_base.html:135 msgid "Base Part" msgstr "" @@ -2298,29 +2302,29 @@ msgstr "" msgid "Select part" msgstr "" -#: company/models.py:335 company/templates/company/company_base.html:116 -#: company/templates/company/manufacturer_part.html:93 -#: company/templates/company/supplier_part.html:104 -#: stock/templates/stock/item_base.html:353 +#: company/models.py:335 company/templates/company/company_base.html:73 +#: company/templates/company/manufacturer_part.html:91 +#: company/templates/company/supplier_part.html:97 +#: stock/templates/stock/item_base.html:381 #: templates/js/translated/company.js:333 #: templates/js/translated/company.js:514 -#: templates/js/translated/company.js:797 templates/js/translated/part.js:229 +#: templates/js/translated/company.js:797 templates/js/translated/part.js:232 msgid "Manufacturer" msgstr "" -#: company/models.py:336 templates/js/translated/part.js:230 +#: company/models.py:336 templates/js/translated/part.js:233 msgid "Select manufacturer" msgstr "" -#: company/models.py:342 company/templates/company/manufacturer_part.html:97 -#: company/templates/company/supplier_part.html:112 +#: company/models.py:342 company/templates/company/manufacturer_part.html:96 +#: company/templates/company/supplier_part.html:105 #: templates/js/translated/company.js:530 -#: templates/js/translated/company.js:815 templates/js/translated/order.js:874 -#: templates/js/translated/part.js:240 +#: templates/js/translated/company.js:815 templates/js/translated/order.js:873 +#: templates/js/translated/part.js:243 templates/js/translated/part.js:832 msgid "MPN" msgstr "" -#: company/models.py:343 templates/js/translated/part.js:241 +#: company/models.py:343 templates/js/translated/part.js:244 msgid "Manufacturer Part Number" msgstr "" @@ -2335,7 +2339,7 @@ msgstr "" #: company/models.py:409 company/models.py:558 #: company/templates/company/manufacturer_part.html:6 #: company/templates/company/manufacturer_part.html:23 -#: stock/templates/stock/item_base.html:363 +#: stock/templates/stock/item_base.html:391 msgid "Manufacturer Part" msgstr "" @@ -2345,8 +2349,8 @@ msgstr "" #: company/models.py:422 #: report/templates/report/inventree_test_report_base.html:95 -#: stock/models.py:1867 templates/js/translated/company.js:644 -#: templates/js/translated/part.js:645 templates/js/translated/stock.js:878 +#: stock/models.py:1857 templates/js/translated/company.js:644 +#: templates/js/translated/part.js:652 templates/js/translated/stock.js:960 msgid "Value" msgstr "" @@ -2355,9 +2359,9 @@ msgid "Parameter value" msgstr "" #: company/models.py:429 part/models.py:882 part/models.py:2397 -#: part/templates/part/detail.html:59 +#: part/templates/part/part_base.html:288 #: templates/InvenTree/settings/settings.html:264 -#: templates/js/translated/company.js:650 templates/js/translated/part.js:651 +#: templates/js/translated/company.js:650 templates/js/translated/part.js:658 msgid "Units" msgstr "" @@ -2369,28 +2373,28 @@ msgstr "" msgid "Linked manufacturer part must reference the same base part" msgstr "" -#: company/models.py:545 company/templates/company/company_base.html:121 -#: company/templates/company/supplier_part.html:94 order/models.py:263 -#: order/templates/order/order_base.html:108 +#: company/models.py:545 company/templates/company/company_base.html:78 +#: company/templates/company/supplier_part.html:87 order/models.py:263 +#: order/templates/order/order_base.html:112 #: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:219 -#: part/bom.py:247 stock/templates/stock/item_base.html:370 +#: part/bom.py:247 stock/templates/stock/item_base.html:398 #: templates/js/translated/company.js:337 -#: templates/js/translated/company.js:771 templates/js/translated/order.js:660 -#: templates/js/translated/part.js:210 +#: templates/js/translated/company.js:771 templates/js/translated/order.js:667 +#: templates/js/translated/part.js:213 templates/js/translated/part.js:800 msgid "Supplier" msgstr "" -#: company/models.py:546 templates/js/translated/part.js:211 +#: company/models.py:546 templates/js/translated/part.js:214 msgid "Select supplier" msgstr "" -#: company/models.py:551 company/templates/company/supplier_part.html:98 -#: part/bom.py:220 part/bom.py:248 templates/js/translated/order.js:861 -#: templates/js/translated/part.js:221 +#: company/models.py:551 company/templates/company/supplier_part.html:91 +#: part/bom.py:220 part/bom.py:248 templates/js/translated/order.js:860 +#: templates/js/translated/part.js:224 templates/js/translated/part.js:818 msgid "SKU" msgstr "" -#: company/models.py:552 templates/js/translated/part.js:222 +#: company/models.py:552 templates/js/translated/part.js:225 msgid "Supplier stock keeping unit" msgstr "" @@ -2406,7 +2410,7 @@ msgstr "" msgid "Supplier part description" msgstr "" -#: company/models.py:576 company/templates/company/supplier_part.html:126 +#: company/models.py:576 company/templates/company/supplier_part.html:119 #: part/models.py:2588 report/templates/report/inventree_po_report.html:93 #: report/templates/report/inventree_so_report.html:93 msgid "Note" @@ -2420,9 +2424,9 @@ msgstr "" msgid "Minimum charge (e.g. stocking fee)" msgstr "" -#: company/models.py:582 company/templates/company/supplier_part.html:119 -#: stock/models.py:507 stock/templates/stock/item_base.html:311 -#: templates/js/translated/company.js:847 templates/js/translated/stock.js:1366 +#: company/models.py:582 company/templates/company/supplier_part.html:112 +#: stock/models.py:497 stock/templates/stock/item_base.html:339 +#: templates/js/translated/company.js:847 templates/js/translated/stock.js:1448 msgid "Packaging" msgstr "" @@ -2457,43 +2461,56 @@ msgstr "" msgid "Create Purchase Order" msgstr "" -#: company/templates/company/company_base.html:27 +#: company/templates/company/company_base.html:26 +msgid "Company actions" +msgstr "" + +#: company/templates/company/company_base.html:31 msgid "Edit company information" msgstr "" #: company/templates/company/company_base.html:32 -#: company/templates/company/company_base.html:148 +#: templates/js/translated/company.js:265 +msgid "Edit Company" +msgstr "" + +#: company/templates/company/company_base.html:36 +msgid "Delete company" +msgstr "" + +#: company/templates/company/company_base.html:37 +#: company/templates/company/company_base.html:159 msgid "Delete Company" msgstr "" -#: company/templates/company/company_base.html:48 +#: company/templates/company/company_base.html:53 #: part/templates/part/part_thumb.html:12 msgid "Upload new image" msgstr "" -#: company/templates/company/company_base.html:51 +#: company/templates/company/company_base.html:56 #: part/templates/part/part_thumb.html:14 msgid "Download image from URL" msgstr "" -#: company/templates/company/company_base.html:81 -msgid "Uses default currency" -msgstr "" - -#: company/templates/company/company_base.html:95 -msgid "Phone" -msgstr "" - -#: company/templates/company/company_base.html:126 order/models.py:567 -#: order/templates/order/sales_order_base.html:114 stock/models.py:525 -#: stock/models.py:526 stock/templates/stock/item_base.html:263 -#: templates/js/translated/company.js:329 templates/js/translated/order.js:1073 -#: templates/js/translated/stock.js:2002 +#: company/templates/company/company_base.html:83 order/models.py:567 +#: order/templates/order/sales_order_base.html:115 stock/models.py:515 +#: stock/models.py:516 stock/templates/stock/item_base.html:291 +#: templates/js/translated/company.js:329 templates/js/translated/order.js:1072 +#: templates/js/translated/stock.js:2084 msgid "Customer" msgstr "" -#: company/templates/company/company_base.html:194 -#: part/templates/part/part_base.html:342 +#: company/templates/company/company_base.html:108 +msgid "Uses default currency" +msgstr "" + +#: company/templates/company/company_base.html:122 +msgid "Phone" +msgstr "" + +#: company/templates/company/company_base.html:205 +#: part/templates/part/part_base.html:471 msgid "Upload Image" msgstr "" @@ -2509,23 +2526,23 @@ msgid "Create new supplier part" msgstr "" #: company/templates/company/detail.html:20 -#: company/templates/company/manufacturer_part.html:112 -#: part/templates/part/detail.html:440 +#: company/templates/company/manufacturer_part.html:118 +#: part/templates/part/detail.html:333 msgid "New Supplier Part" msgstr "" #: company/templates/company/detail.html:32 #: company/templates/company/detail.html:79 -#: company/templates/company/manufacturer_part.html:121 -#: company/templates/company/manufacturer_part.html:150 -#: part/templates/part/category.html:160 part/templates/part/detail.html:449 -#: part/templates/part/detail.html:477 +#: company/templates/company/manufacturer_part.html:127 +#: company/templates/company/manufacturer_part.html:156 +#: part/templates/part/category.html:167 part/templates/part/detail.html:342 +#: part/templates/part/detail.html:370 msgid "Options" msgstr "" #: company/templates/company/detail.html:37 #: company/templates/company/detail.html:84 -#: part/templates/part/category.html:166 +#: part/templates/part/category.html:173 msgid "Order parts" msgstr "" @@ -2547,7 +2564,7 @@ msgstr "" msgid "Create new manufacturer part" msgstr "" -#: company/templates/company/detail.html:67 part/templates/part/detail.html:467 +#: company/templates/company/detail.html:67 part/templates/part/detail.html:360 msgid "New Manufacturer Part" msgstr "" @@ -2561,7 +2578,7 @@ msgstr "" #: order/templates/order/order_base.html:13 #: order/templates/order/purchase_orders.html:8 #: order/templates/order/purchase_orders.html:12 -#: part/templates/part/detail.html:171 part/templates/part/part_sidebar.html:35 +#: part/templates/part/detail.html:64 part/templates/part/part_sidebar.html:33 #: templates/InvenTree/index.html:252 templates/InvenTree/search.html:203 #: templates/InvenTree/settings/sidebar.html:44 templates/navbar.html:45 #: users/models.py:45 @@ -2583,7 +2600,7 @@ msgstr "" #: order/templates/order/sales_order_base.html:13 #: order/templates/order/sales_orders.html:8 #: order/templates/order/sales_orders.html:15 -#: part/templates/part/detail.html:194 part/templates/part/part_sidebar.html:39 +#: part/templates/part/detail.html:87 part/templates/part/part_sidebar.html:37 #: templates/InvenTree/index.html:283 templates/InvenTree/search.html:223 #: templates/InvenTree/settings/sidebar.html:46 templates/navbar.html:56 #: users/models.py:46 @@ -2610,14 +2627,14 @@ msgid "Company Notes" msgstr "" #: company/templates/company/detail.html:383 -#: company/templates/company/manufacturer_part.html:209 -#: part/templates/part/detail.html:520 +#: company/templates/company/manufacturer_part.html:215 +#: part/templates/part/detail.html:413 msgid "Delete Supplier Parts?" msgstr "" #: company/templates/company/detail.html:384 -#: company/templates/company/manufacturer_part.html:210 -#: part/templates/part/detail.html:521 +#: company/templates/company/manufacturer_part.html:216 +#: part/templates/part/detail.html:414 msgid "All selected supplier parts will be deleted" msgstr "" @@ -2634,7 +2651,7 @@ msgstr "" #: company/templates/company/manufacturer_part.html:35 #: company/templates/company/supplier_part.html:34 #: company/templates/company/supplier_part.html:159 -#: part/templates/part/detail.html:174 part/templates/part/part_base.html:76 +#: part/templates/part/detail.html:67 part/templates/part/part_base.html:76 msgid "Order part" msgstr "" @@ -2648,60 +2665,60 @@ msgstr "" msgid "Delete manufacturer part" msgstr "" -#: company/templates/company/manufacturer_part.html:70 -#: company/templates/company/supplier_part.html:71 +#: company/templates/company/manufacturer_part.html:66 +#: company/templates/company/supplier_part.html:63 msgid "Internal Part" msgstr "" -#: company/templates/company/manufacturer_part.html:108 +#: company/templates/company/manufacturer_part.html:114 #: company/templates/company/supplier_part.html:15 company/views.py:49 -#: part/templates/part/part_sidebar.html:33 part/templates/part/prices.html:163 +#: part/templates/part/part_sidebar.html:31 part/templates/part/prices.html:163 #: templates/InvenTree/search.html:194 templates/navbar.html:43 msgid "Suppliers" msgstr "" -#: company/templates/company/manufacturer_part.html:123 -#: part/templates/part/detail.html:451 +#: company/templates/company/manufacturer_part.html:129 +#: part/templates/part/detail.html:344 msgid "Delete supplier parts" msgstr "" -#: company/templates/company/manufacturer_part.html:123 -#: company/templates/company/manufacturer_part.html:152 -#: company/templates/company/manufacturer_part.html:248 -#: part/templates/part/detail.html:451 part/templates/part/detail.html:479 +#: company/templates/company/manufacturer_part.html:129 +#: company/templates/company/manufacturer_part.html:158 +#: company/templates/company/manufacturer_part.html:254 +#: part/templates/part/detail.html:344 part/templates/part/detail.html:372 #: templates/js/translated/company.js:425 templates/js/translated/helpers.js:31 #: users/models.py:204 msgid "Delete" msgstr "" -#: company/templates/company/manufacturer_part.html:137 +#: company/templates/company/manufacturer_part.html:143 #: company/templates/company/manufacturer_part_sidebar.html:5 #: part/templates/part/category_sidebar.html:17 -#: part/templates/part/detail.html:277 part/templates/part/part_sidebar.html:10 +#: part/templates/part/detail.html:170 part/templates/part/part_sidebar.html:8 msgid "Parameters" msgstr "" -#: company/templates/company/manufacturer_part.html:141 -#: part/templates/part/detail.html:282 +#: company/templates/company/manufacturer_part.html:147 +#: part/templates/part/detail.html:175 #: templates/InvenTree/settings/category.html:12 #: templates/InvenTree/settings/part.html:65 msgid "New Parameter" msgstr "" -#: company/templates/company/manufacturer_part.html:152 +#: company/templates/company/manufacturer_part.html:158 msgid "Delete parameters" msgstr "" -#: company/templates/company/manufacturer_part.html:185 -#: part/templates/part/detail.html:976 +#: company/templates/company/manufacturer_part.html:191 +#: part/templates/part/detail.html:867 msgid "Add Parameter" msgstr "" -#: company/templates/company/manufacturer_part.html:233 +#: company/templates/company/manufacturer_part.html:239 msgid "Selected parameters will be deleted" msgstr "" -#: company/templates/company/manufacturer_part.html:245 +#: company/templates/company/manufacturer_part.html:251 msgid "Delete Parameters" msgstr "" @@ -2722,9 +2739,9 @@ msgid "Assigned Stock Items" msgstr "" #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 stock/models.py:492 -#: stock/templates/stock/item_base.html:375 -#: templates/js/translated/company.js:787 templates/js/translated/stock.js:1323 +#: company/templates/company/supplier_part.html:24 stock/models.py:482 +#: stock/templates/stock/item_base.html:403 +#: templates/js/translated/company.js:787 templates/js/translated/stock.js:1405 msgid "Supplier Part" msgstr "" @@ -2744,13 +2761,13 @@ msgid "Supplier Part Stock" msgstr "" #: company/templates/company/supplier_part.html:141 -#: part/templates/part/detail.html:127 stock/templates/stock/location.html:147 +#: part/templates/part/detail.html:20 stock/templates/stock/location.html:162 msgid "Create new stock item" msgstr "" #: company/templates/company/supplier_part.html:142 -#: part/templates/part/detail.html:128 stock/templates/stock/location.html:148 -#: templates/js/translated/stock.js:354 +#: part/templates/part/detail.html:21 stock/templates/stock/location.html:163 +#: templates/js/translated/stock.js:355 msgid "New Stock Item" msgstr "" @@ -2760,7 +2777,7 @@ msgid "Supplier Part Orders" msgstr "" #: company/templates/company/supplier_part.html:160 -#: part/templates/part/detail.html:175 +#: part/templates/part/detail.html:68 msgid "Order Part" msgstr "" @@ -2796,15 +2813,15 @@ msgid "Delete price break" msgstr "" #: company/templates/company/supplier_part_navbar.html:15 -#: part/templates/part/part_sidebar.html:16 +#: part/templates/part/part_sidebar.html:14 #: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:14 #: stock/templates/stock/stock_app_base.html:10 #: templates/InvenTree/search.html:156 #: templates/InvenTree/settings/sidebar.html:40 -#: templates/js/translated/bom.js:216 templates/js/translated/part.js:427 -#: templates/js/translated/part.js:562 templates/js/translated/part.js:878 -#: templates/js/translated/part.js:1039 templates/js/translated/stock.js:509 -#: templates/js/translated/stock.js:1162 templates/navbar.html:26 +#: templates/js/translated/bom.js:216 templates/js/translated/part.js:434 +#: templates/js/translated/part.js:569 templates/js/translated/part.js:1059 +#: templates/js/translated/part.js:1220 templates/js/translated/stock.js:591 +#: templates/js/translated/stock.js:1244 templates/navbar.html:26 msgid "Stock" msgstr "" @@ -2818,16 +2835,16 @@ msgid "Supplier Part Pricing" msgstr "" #: company/templates/company/supplier_part_navbar.html:29 -#: part/templates/part/part_sidebar.html:30 +#: part/templates/part/part_sidebar.html:28 msgid "Pricing" msgstr "" #: company/templates/company/supplier_part_sidebar.html:5 -#: stock/templates/stock/location.html:118 -#: stock/templates/stock/location.html:132 -#: stock/templates/stock/location.html:144 +#: stock/templates/stock/location.html:133 +#: stock/templates/stock/location.html:147 +#: stock/templates/stock/location.html:159 #: stock/templates/stock/location_sidebar.html:7 -#: templates/InvenTree/search.html:158 templates/js/translated/stock.js:1901 +#: templates/InvenTree/search.html:158 templates/js/translated/stock.js:1983 #: templates/stats.html:93 templates/stats.html:102 users/models.py:43 msgid "Stock Items" msgstr "" @@ -2947,7 +2964,7 @@ msgstr "" msgid "Place order" msgstr "" -#: order/forms.py:37 order/templates/order/order_base.html:59 +#: order/forms.py:37 order/templates/order/order_base.html:60 msgid "Mark order as complete" msgstr "" @@ -3000,8 +3017,8 @@ msgstr "" msgid "Company from which the items are being ordered" msgstr "" -#: order/models.py:267 order/templates/order/order_base.html:114 -#: templates/js/translated/order.js:669 +#: order/models.py:267 order/templates/order/order_base.html:118 +#: templates/js/translated/order.js:676 msgid "Supplier Reference" msgstr "" @@ -3061,7 +3078,7 @@ msgstr "" msgid "Target date for order completion. Order will be overdue after this date." msgstr "" -#: order/models.py:582 templates/js/translated/order.js:1114 +#: order/models.py:582 templates/js/translated/order.js:1113 msgid "Shipment Date" msgstr "" @@ -3086,16 +3103,16 @@ msgid "Line item notes" msgstr "" #: order/models.py:768 order/models.py:856 -#: templates/js/translated/order.js:1166 +#: templates/js/translated/order.js:1165 msgid "Order" msgstr "" #: order/models.py:769 order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_po_report.html:77 -#: stock/templates/stock/item_base.html:325 -#: templates/js/translated/order.js:638 templates/js/translated/stock.js:1300 -#: templates/js/translated/stock.js:1983 +#: stock/templates/stock/item_base.html:353 +#: templates/js/translated/order.js:638 templates/js/translated/part.js:775 +#: templates/js/translated/stock.js:1382 templates/js/translated/stock.js:2065 msgid "Purchase Order" msgstr "" @@ -3103,9 +3120,10 @@ msgstr "" msgid "Supplier part" msgstr "" -#: order/models.py:797 order/templates/order/order_base.html:147 -#: order/templates/order/sales_order_base.html:154 -#: templates/js/translated/order.js:429 templates/js/translated/order.js:954 +#: order/models.py:797 order/templates/order/order_base.html:151 +#: order/templates/order/sales_order_base.html:155 +#: templates/js/translated/order.js:429 templates/js/translated/order.js:953 +#: templates/js/translated/part.js:847 templates/js/translated/part.js:873 msgid "Received" msgstr "" @@ -3113,9 +3131,9 @@ msgstr "" msgid "Number of items received" msgstr "" -#: order/models.py:805 part/templates/part/prices.html:176 stock/models.py:619 -#: stock/serializers.py:163 stock/templates/stock/item_base.html:332 -#: templates/js/translated/stock.js:1354 +#: order/models.py:805 part/templates/part/prices.html:176 stock/models.py:609 +#: stock/serializers.py:168 stock/templates/stock/item_base.html:360 +#: templates/js/translated/stock.js:1436 msgid "Purchase Price" msgstr "" @@ -3176,47 +3194,47 @@ msgstr "" msgid "Enter stock allocation quantity" msgstr "" -#: order/serializers.py:169 +#: order/serializers.py:175 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:204 +#: order/serializers.py:213 msgid "Line Item" msgstr "" -#: order/serializers.py:210 +#: order/serializers.py:219 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:220 order/serializers.py:288 +#: order/serializers.py:229 order/serializers.py:297 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:244 +#: order/serializers.py:253 msgid "Barcode Hash" msgstr "" -#: order/serializers.py:245 +#: order/serializers.py:254 msgid "Unique identifier field" msgstr "" -#: order/serializers.py:262 +#: order/serializers.py:271 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:300 +#: order/serializers.py:309 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:317 +#: order/serializers.py:326 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:328 +#: order/serializers.py:337 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:569 +#: order/serializers.py:578 msgid "Sale price currency" msgstr "" @@ -3248,22 +3266,36 @@ msgstr "" msgid "Receive items" msgstr "" -#: order/templates/order/order_base.html:93 -#: order/templates/order/sales_order_base.html:98 +#: order/templates/order/order_base.html:58 +#: order/templates/order/purchase_order_detail.html:31 +msgid "Receive Items" +msgstr "" + +#: order/templates/order/order_base.html:62 order/views.py:185 +msgid "Complete Order" +msgstr "" + +#: order/templates/order/order_base.html:84 +#: order/templates/order/sales_order_base.html:79 msgid "Order Reference" msgstr "" -#: order/templates/order/order_base.html:98 -#: order/templates/order/sales_order_base.html:103 +#: order/templates/order/order_base.html:89 +#: order/templates/order/sales_order_base.html:84 +msgid "Order Description" +msgstr "" + +#: order/templates/order/order_base.html:94 +#: order/templates/order/sales_order_base.html:89 msgid "Order Status" msgstr "" -#: order/templates/order/order_base.html:133 +#: order/templates/order/order_base.html:137 #: report/templates/report/inventree_build_order_base.html:122 msgid "Issued" msgstr "" -#: order/templates/order/order_base.html:203 +#: order/templates/order/order_base.html:207 msgid "Edit Purchase Order" msgstr "" @@ -3421,7 +3453,7 @@ msgid "Select existing purchase orders, or create new orders." msgstr "" #: order/templates/order/order_wizard/select_pos.html:31 -#: templates/js/translated/order.js:695 templates/js/translated/order.js:1119 +#: templates/js/translated/order.js:694 templates/js/translated/order.js:1118 msgid "Items" msgstr "" @@ -3465,10 +3497,6 @@ msgstr "" msgid "Receive selected items" msgstr "" -#: order/templates/order/purchase_order_detail.html:31 -msgid "Receive Items" -msgstr "" - #: order/templates/order/purchase_order_detail.html:50 msgid "Received Items" msgstr "" @@ -3496,16 +3524,16 @@ msgstr "" msgid "Ship Order" msgstr "" -#: order/templates/order/sales_order_base.html:86 +#: order/templates/order/sales_order_base.html:102 msgid "This Sales Order has not been fully allocated" msgstr "" -#: order/templates/order/sales_order_base.html:121 -#: templates/js/translated/order.js:1086 +#: order/templates/order/sales_order_base.html:122 +#: templates/js/translated/order.js:1085 msgid "Customer Reference" msgstr "" -#: order/templates/order/sales_order_base.html:194 +#: order/templates/order/sales_order_base.html:195 msgid "Edit Sales Order" msgstr "" @@ -3576,10 +3604,6 @@ msgstr "" msgid "Purchase order issued" msgstr "" -#: order/views.py:185 -msgid "Complete Order" -msgstr "" - #: order/views.py:201 msgid "Confirm order completion" msgstr "" @@ -3672,11 +3696,11 @@ msgid "This field is required" msgstr "" #: part/bom.py:125 part/models.py:81 part/models.py:816 -#: part/templates/part/category.html:90 part/templates/part/detail.html:104 +#: part/templates/part/category.html:104 part/templates/part/part_base.html:338 msgid "Default Location" msgstr "" -#: part/bom.py:126 part/templates/part/part_base.html:167 +#: part/bom.py:126 part/templates/part/part_base.html:185 msgid "Available Stock" msgstr "" @@ -3793,19 +3817,19 @@ msgstr "" msgid "Part Category" msgstr "" -#: part/models.py:96 part/templates/part/category.html:117 +#: part/models.py:96 part/templates/part/category.html:124 #: templates/InvenTree/search.html:101 templates/stats.html:84 #: users/models.py:40 msgid "Part Categories" msgstr "" #: part/models.py:358 part/templates/part/cat_link.html:3 -#: part/templates/part/category.html:13 part/templates/part/category.html:122 -#: part/templates/part/category.html:142 +#: part/templates/part/category.html:13 part/templates/part/category.html:129 +#: part/templates/part/category.html:149 #: part/templates/part/category_sidebar.html:9 #: templates/InvenTree/index.html:85 templates/InvenTree/search.html:88 #: templates/InvenTree/settings/sidebar.html:36 -#: templates/js/translated/part.js:1416 templates/navbar.html:19 +#: templates/js/translated/part.js:1597 templates/navbar.html:19 #: templates/stats.html:80 templates/stats.html:89 users/models.py:41 msgid "Parts" msgstr "" @@ -3859,8 +3883,8 @@ msgstr "" msgid "Part description" msgstr "" -#: part/models.py:770 part/templates/part/category.html:97 -#: part/templates/part/detail.html:73 +#: part/models.py:770 part/templates/part/category.html:82 +#: part/templates/part/part_base.html:302 msgid "Keywords" msgstr "" @@ -3869,9 +3893,10 @@ msgid "Part keywords to improve visibility in search results" msgstr "" #: part/models.py:778 part/models.py:2223 part/models.py:2472 -#: part/templates/part/detail.html:36 part/templates/part/set_category.html:15 +#: part/templates/part/part_base.html:265 +#: part/templates/part/set_category.html:15 #: templates/InvenTree/settings/settings.html:163 -#: templates/js/translated/part.js:1021 +#: templates/js/translated/part.js:1202 msgid "Category" msgstr "" @@ -3879,9 +3904,9 @@ msgstr "" msgid "Part category" msgstr "" -#: part/models.py:784 part/templates/part/detail.html:45 -#: templates/js/translated/part.js:550 templates/js/translated/part.js:974 -#: templates/js/translated/stock.js:1134 +#: part/models.py:784 part/templates/part/part_base.html:274 +#: templates/js/translated/part.js:557 templates/js/translated/part.js:1155 +#: templates/js/translated/stock.js:1216 msgid "IPN" msgstr "" @@ -3893,8 +3918,8 @@ msgstr "" msgid "Part revision or version number" msgstr "" -#: part/models.py:792 part/templates/part/detail.html:52 report/models.py:200 -#: templates/js/translated/part.js:554 +#: part/models.py:792 part/templates/part/part_base.html:281 +#: report/models.py:200 templates/js/translated/part.js:561 msgid "Revision" msgstr "" @@ -3902,7 +3927,7 @@ msgstr "" msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:861 part/templates/part/detail.html:113 +#: part/models.py:861 part/templates/part/part_base.html:347 msgid "Default Supplier" msgstr "" @@ -3918,7 +3943,7 @@ msgstr "" msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:875 part/templates/part/part_base.html:178 +#: part/models.py:875 part/templates/part/part_base.html:196 msgid "Minimum Stock" msgstr "" @@ -4001,8 +4026,8 @@ msgstr "" msgid "Test with this name already exists for this part" msgstr "" -#: part/models.py:2310 templates/js/translated/part.js:1467 -#: templates/js/translated/stock.js:858 +#: part/models.py:2310 templates/js/translated/part.js:1648 +#: templates/js/translated/stock.js:940 msgid "Test Name" msgstr "" @@ -4018,7 +4043,7 @@ msgstr "" msgid "Enter description for this test" msgstr "" -#: part/models.py:2322 templates/js/translated/part.js:1476 +#: part/models.py:2322 templates/js/translated/part.js:1657 #: templates/js/translated/table_filters.js:276 msgid "Required" msgstr "" @@ -4027,7 +4052,7 @@ msgstr "" msgid "Is this test required to pass?" msgstr "" -#: part/models.py:2328 templates/js/translated/part.js:1484 +#: part/models.py:2328 templates/js/translated/part.js:1665 msgid "Requires Value" msgstr "" @@ -4035,7 +4060,7 @@ msgstr "" msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:2334 templates/js/translated/part.js:1491 +#: part/models.py:2334 templates/js/translated/part.js:1672 msgid "Requires Attachment" msgstr "" @@ -4150,7 +4175,7 @@ msgstr "" msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:2686 stock/models.py:371 +#: part/models.py:2686 stock/models.py:361 msgid "Quantity must be integer value for trackable parts" msgstr "" @@ -4213,7 +4238,7 @@ msgstr "" msgid "The BOM for %(part)s has not been validated." msgstr "" -#: part/templates/part/bom.html:30 part/templates/part/detail.html:357 +#: part/templates/part/bom.html:30 part/templates/part/detail.html:250 msgid "BOM actions" msgstr "" @@ -4298,68 +4323,64 @@ msgstr "" msgid "New Category" msgstr "" -#: part/templates/part/category.html:67 -msgid "Top level part category" -msgstr "" - -#: part/templates/part/category.html:79 +#: part/templates/part/category.html:76 part/templates/part/category.html:89 msgid "Category Path" msgstr "" -#: part/templates/part/category.html:84 -msgid "Category Description" +#: part/templates/part/category.html:90 +msgid "Top level part category" msgstr "" -#: part/templates/part/category.html:103 part/templates/part/category.html:194 +#: part/templates/part/category.html:110 part/templates/part/category.html:201 #: part/templates/part/category_sidebar.html:7 msgid "Subcategories" msgstr "" -#: part/templates/part/category.html:108 +#: part/templates/part/category.html:115 msgid "Parts (Including subcategories)" msgstr "" -#: part/templates/part/category.html:145 +#: part/templates/part/category.html:152 msgid "Export Part Data" msgstr "" -#: part/templates/part/category.html:146 part/templates/part/category.html:170 +#: part/templates/part/category.html:153 part/templates/part/category.html:177 msgid "Export" msgstr "" -#: part/templates/part/category.html:149 +#: part/templates/part/category.html:156 msgid "Create new part" msgstr "" -#: part/templates/part/category.html:150 templates/js/translated/bom.js:40 +#: part/templates/part/category.html:157 templates/js/translated/bom.js:40 msgid "New Part" msgstr "" -#: part/templates/part/category.html:164 +#: part/templates/part/category.html:171 msgid "Set category" msgstr "" -#: part/templates/part/category.html:164 +#: part/templates/part/category.html:171 msgid "Set Category" msgstr "" -#: part/templates/part/category.html:168 +#: part/templates/part/category.html:175 msgid "Print Labels" msgstr "" -#: part/templates/part/category.html:170 +#: part/templates/part/category.html:177 msgid "Export Data" msgstr "" -#: part/templates/part/category.html:184 +#: part/templates/part/category.html:191 msgid "Part Parameters" msgstr "" -#: part/templates/part/category.html:261 +#: part/templates/part/category.html:268 msgid "Create Part Category" msgstr "" -#: part/templates/part/category.html:288 +#: part/templates/part/category.html:295 msgid "Create Part" msgstr "" @@ -4402,7 +4423,7 @@ msgstr "" msgid "Import Parts" msgstr "" -#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:366 +#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:373 msgid "Duplicate Part" msgstr "" @@ -4426,167 +4447,155 @@ msgstr "" msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)" msgstr "" -#: part/templates/part/detail.html:16 -msgid "Part Details" -msgstr "" - -#: part/templates/part/detail.html:66 -msgid "Minimum stock level" -msgstr "" - -#: part/templates/part/detail.html:97 -msgid "Latest Serial Number" -msgstr "" - -#: part/templates/part/detail.html:124 +#: part/templates/part/detail.html:17 msgid "Part Stock" msgstr "" -#: part/templates/part/detail.html:136 +#: part/templates/part/detail.html:29 #, python-format msgid "Showing stock for all variants of %(full_name)s" msgstr "" -#: part/templates/part/detail.html:146 +#: part/templates/part/detail.html:39 msgid "Part Test Templates" msgstr "" -#: part/templates/part/detail.html:151 +#: part/templates/part/detail.html:44 msgid "Add Test Template" msgstr "" -#: part/templates/part/detail.html:208 +#: part/templates/part/detail.html:101 msgid "Sales Order Allocations" msgstr "" -#: part/templates/part/detail.html:249 +#: part/templates/part/detail.html:142 msgid "Part Variants" msgstr "" -#: part/templates/part/detail.html:253 +#: part/templates/part/detail.html:146 msgid "Create new variant" msgstr "" -#: part/templates/part/detail.html:254 +#: part/templates/part/detail.html:147 msgid "New Variant" msgstr "" -#: part/templates/part/detail.html:281 +#: part/templates/part/detail.html:174 msgid "Add new parameter" msgstr "" -#: part/templates/part/detail.html:315 part/templates/part/part_sidebar.html:47 +#: part/templates/part/detail.html:208 part/templates/part/part_sidebar.html:45 msgid "Related Parts" msgstr "" -#: part/templates/part/detail.html:319 part/templates/part/detail.html:320 +#: part/templates/part/detail.html:212 part/templates/part/detail.html:213 msgid "Add Related" msgstr "" -#: part/templates/part/detail.html:340 part/templates/part/part_sidebar.html:19 +#: part/templates/part/detail.html:233 part/templates/part/part_sidebar.html:17 msgid "Bill of Materials" msgstr "" -#: part/templates/part/detail.html:345 +#: part/templates/part/detail.html:238 msgid "Export actions" msgstr "" -#: part/templates/part/detail.html:349 +#: part/templates/part/detail.html:242 msgid "Export BOM" msgstr "" -#: part/templates/part/detail.html:351 +#: part/templates/part/detail.html:244 msgid "Print BOM Report" msgstr "" -#: part/templates/part/detail.html:361 +#: part/templates/part/detail.html:254 msgid "Upload BOM" msgstr "" -#: part/templates/part/detail.html:363 templates/js/translated/part.js:267 +#: part/templates/part/detail.html:256 templates/js/translated/part.js:270 msgid "Copy BOM" msgstr "" -#: part/templates/part/detail.html:365 part/views.py:755 +#: part/templates/part/detail.html:258 part/views.py:755 msgid "Validate BOM" msgstr "" -#: part/templates/part/detail.html:370 +#: part/templates/part/detail.html:263 msgid "New BOM Item" msgstr "" -#: part/templates/part/detail.html:371 +#: part/templates/part/detail.html:264 msgid "Add BOM Item" msgstr "" -#: part/templates/part/detail.html:384 +#: part/templates/part/detail.html:277 msgid "Assemblies" msgstr "" -#: part/templates/part/detail.html:401 +#: part/templates/part/detail.html:294 msgid "Part Builds" msgstr "" -#: part/templates/part/detail.html:426 +#: part/templates/part/detail.html:319 msgid "Build Order Allocations" msgstr "" -#: part/templates/part/detail.html:436 +#: part/templates/part/detail.html:329 msgid "Part Suppliers" msgstr "" -#: part/templates/part/detail.html:463 +#: part/templates/part/detail.html:356 msgid "Part Manufacturers" msgstr "" -#: part/templates/part/detail.html:479 +#: part/templates/part/detail.html:372 msgid "Delete manufacturer parts" msgstr "" -#: part/templates/part/detail.html:660 +#: part/templates/part/detail.html:553 msgid "Delete selected BOM items?" msgstr "" -#: part/templates/part/detail.html:661 +#: part/templates/part/detail.html:554 msgid "All selected BOM items will be deleted" msgstr "" -#: part/templates/part/detail.html:712 +#: part/templates/part/detail.html:605 msgid "Create BOM Item" msgstr "" -#: part/templates/part/detail.html:764 +#: part/templates/part/detail.html:657 msgid "Related Part" msgstr "" -#: part/templates/part/detail.html:772 +#: part/templates/part/detail.html:665 msgid "Add Related Part" msgstr "" -#: part/templates/part/detail.html:869 +#: part/templates/part/detail.html:760 msgid "Add Test Result Template" msgstr "" -#: part/templates/part/detail.html:926 +#: part/templates/part/detail.html:817 msgid "Edit Part Notes" msgstr "" -#: part/templates/part/detail.html:1039 +#: part/templates/part/detail.html:930 #, python-format msgid "Purchase Unit Price - %(currency)s" msgstr "" -#: part/templates/part/detail.html:1051 +#: part/templates/part/detail.html:942 #, python-format msgid "Unit Price-Cost Difference - %(currency)s" msgstr "" -#: part/templates/part/detail.html:1063 +#: part/templates/part/detail.html:954 #, python-format msgid "Supplier Unit Cost - %(currency)s" msgstr "" -#: part/templates/part/detail.html:1152 +#: part/templates/part/detail.html:1043 #, python-format msgid "Unit Price - %(currency)s" msgstr "" @@ -4668,86 +4677,108 @@ msgstr "" msgid "Delete part" msgstr "" -#: part/templates/part/part_base.html:109 +#: part/templates/part/part_base.html:112 msgid "Part is a template part (variants can be made from this part)" msgstr "" -#: part/templates/part/part_base.html:113 +#: part/templates/part/part_base.html:116 msgid "Part can be assembled from other parts" msgstr "" -#: part/templates/part/part_base.html:117 +#: part/templates/part/part_base.html:120 msgid "Part can be used in assemblies" msgstr "" -#: part/templates/part/part_base.html:121 +#: part/templates/part/part_base.html:124 msgid "Part stock is tracked by serial number" msgstr "" -#: part/templates/part/part_base.html:125 +#: part/templates/part/part_base.html:128 msgid "Part can be purchased from external suppliers" msgstr "" -#: part/templates/part/part_base.html:129 +#: part/templates/part/part_base.html:132 msgid "Part can be sold to customers" msgstr "" -#: part/templates/part/part_base.html:135 -#: part/templates/part/part_base.html:143 +#: part/templates/part/part_base.html:138 +#: part/templates/part/part_base.html:146 msgid "Part is virtual (not a physical part)" msgstr "" -#: part/templates/part/part_base.html:136 +#: part/templates/part/part_base.html:139 #: templates/js/translated/company.js:505 #: templates/js/translated/company.js:762 #: templates/js/translated/model_renderers.js:175 -#: templates/js/translated/part.js:465 templates/js/translated/part.js:542 +#: templates/js/translated/part.js:472 templates/js/translated/part.js:549 msgid "Inactive" msgstr "" -#: part/templates/part/part_base.html:155 +#: part/templates/part/part_base.html:156 +#: part/templates/part/part_base.html:579 +msgid "Show Part Details" +msgstr "" + +#: part/templates/part/part_base.html:173 #, python-format msgid "This part is a variant of %(link)s" msgstr "" -#: part/templates/part/part_base.html:172 templates/js/translated/order.js:1546 +#: part/templates/part/part_base.html:190 templates/js/translated/order.js:1545 #: templates/js/translated/table_filters.js:188 msgid "In Stock" msgstr "" -#: part/templates/part/part_base.html:185 templates/js/translated/part.js:1054 +#: part/templates/part/part_base.html:203 templates/js/translated/part.js:1235 msgid "On Order" msgstr "" -#: part/templates/part/part_base.html:192 templates/InvenTree/index.html:178 +#: part/templates/part/part_base.html:210 templates/InvenTree/index.html:178 msgid "Required for Build Orders" msgstr "" -#: part/templates/part/part_base.html:199 +#: part/templates/part/part_base.html:217 msgid "Required for Sales Orders" msgstr "" -#: part/templates/part/part_base.html:206 +#: part/templates/part/part_base.html:224 msgid "Allocated to Orders" msgstr "" -#: part/templates/part/part_base.html:221 templates/js/translated/bom.js:566 +#: part/templates/part/part_base.html:239 templates/js/translated/bom.js:566 msgid "Can Build" msgstr "" -#: part/templates/part/part_base.html:227 templates/js/translated/part.js:885 -#: templates/js/translated/part.js:1058 +#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1066 +#: templates/js/translated/part.js:1239 msgid "Building" msgstr "" -#: part/templates/part/part_base.html:320 part/templates/part/prices.html:144 +#: part/templates/part/part_base.html:295 +msgid "Minimum stock level" +msgstr "" + +#: part/templates/part/part_base.html:324 +msgid "Latest Serial Number" +msgstr "" + +#: part/templates/part/part_base.html:328 +#: stock/templates/stock/item_base.html:159 +msgid "Search for serial number" +msgstr "" + +#: part/templates/part/part_base.html:449 part/templates/part/prices.html:144 msgid "Calculate" msgstr "" -#: part/templates/part/part_base.html:363 +#: part/templates/part/part_base.html:492 msgid "No matching images found" msgstr "" +#: part/templates/part/part_base.html:573 +msgid "Hide Part Details" +msgstr "" + #: part/templates/part/part_pricing.html:22 part/templates/part/prices.html:21 msgid "Supplier Pricing" msgstr "" @@ -4805,20 +4836,15 @@ msgstr "" msgid "No pricing information is available for this part." msgstr "" -#: part/templates/part/part_sidebar.html:8 -#: templates/js/translated/stock.js:1949 -msgid "Details" -msgstr "" - -#: part/templates/part/part_sidebar.html:13 +#: part/templates/part/part_sidebar.html:11 msgid "Variants" msgstr "" -#: part/templates/part/part_sidebar.html:27 +#: part/templates/part/part_sidebar.html:25 msgid "Used In" msgstr "" -#: part/templates/part/part_sidebar.html:43 +#: part/templates/part/part_sidebar.html:41 msgid "Test Templates" msgstr "" @@ -4934,8 +4960,8 @@ msgid "Set category for the following parts" msgstr "" #: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:476 -#: templates/js/translated/part.js:429 templates/js/translated/part.js:875 -#: templates/js/translated/part.js:1062 +#: templates/js/translated/part.js:436 templates/js/translated/part.js:1056 +#: templates/js/translated/part.js:1243 msgid "No Stock" msgstr "" @@ -5037,7 +5063,7 @@ msgstr "" msgid "Delete Part Parameter Template" msgstr "" -#: part/views.py:1489 templates/js/translated/part.js:310 +#: part/views.py:1489 templates/js/translated/part.js:313 msgid "Edit Part Category" msgstr "" @@ -5171,11 +5197,12 @@ msgid "Stock Item Test Report" msgstr "" #: report/templates/report/inventree_test_report_base.html:79 -#: stock/models.py:530 stock/templates/stock/item_base.html:238 +#: stock/models.py:520 stock/templates/stock/item_base.html:149 #: templates/js/translated/build.js:233 templates/js/translated/build.js:637 #: templates/js/translated/build.js:1013 #: templates/js/translated/model_renderers.js:95 -#: templates/js/translated/order.js:1288 templates/js/translated/order.js:1377 +#: templates/js/translated/order.js:1287 templates/js/translated/order.js:1376 +#: templates/js/translated/stock.js:410 msgid "Serial Number" msgstr "" @@ -5184,17 +5211,17 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:93 -#: stock/models.py:1855 +#: stock/models.py:1845 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:94 -#: stock/models.py:1861 +#: stock/models.py:1851 msgid "Result" msgstr "" #: report/templates/report/inventree_test_report_base.html:97 -#: templates/js/translated/order.js:685 templates/js/translated/stock.js:1917 +#: templates/js/translated/order.js:684 templates/js/translated/stock.js:1999 msgid "Date" msgstr "" @@ -5212,7 +5239,7 @@ msgid "Installed Items" msgstr "" #: report/templates/report/inventree_test_report_base.html:137 -#: templates/js/translated/stock.js:2177 +#: templates/js/translated/stock.js:2259 msgid "Serial" msgstr "" @@ -5220,9 +5247,9 @@ msgstr "" msgid "Quantity is required" msgstr "" -#: stock/forms.py:91 stock/forms.py:265 stock/models.py:587 -#: stock/templates/stock/item_base.html:382 -#: templates/js/translated/stock.js:1276 +#: stock/forms.py:91 stock/forms.py:265 stock/models.py:577 +#: stock/templates/stock/item_base.html:186 +#: templates/js/translated/stock.js:1358 msgid "Expiry Date" msgstr "" @@ -5270,241 +5297,241 @@ msgstr "" msgid "Confirm removal of installed stock items" msgstr "" -#: stock/models.py:60 stock/models.py:624 -#: stock/templates/stock/item_base.html:422 +#: stock/models.py:60 stock/models.py:614 +#: stock/templates/stock/item_base.html:417 msgid "Owner" msgstr "" -#: stock/models.py:61 stock/models.py:625 +#: stock/models.py:61 stock/models.py:615 msgid "Select Owner" msgstr "" -#: stock/models.py:352 +#: stock/models.py:342 msgid "StockItem with this serial number already exists" msgstr "" -#: stock/models.py:388 +#: stock/models.py:378 #, python-brace-format msgid "Part type ('{pf}') must be {pe}" msgstr "" -#: stock/models.py:398 stock/models.py:407 +#: stock/models.py:388 stock/models.py:397 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:399 +#: stock/models.py:389 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:421 +#: stock/models.py:411 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:427 +#: stock/models.py:417 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:434 +#: stock/models.py:424 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:476 +#: stock/models.py:466 msgid "Parent Stock Item" msgstr "" -#: stock/models.py:485 +#: stock/models.py:475 msgid "Base part" msgstr "" -#: stock/models.py:493 +#: stock/models.py:483 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:498 stock/templates/stock/location.html:12 +#: stock/models.py:488 stock/templates/stock/location.html:12 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" msgstr "" -#: stock/models.py:501 +#: stock/models.py:491 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:508 +#: stock/models.py:498 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:513 stock/templates/stock/item_base.html:271 +#: stock/models.py:503 stock/templates/stock/item_base.html:299 msgid "Installed In" msgstr "" -#: stock/models.py:516 +#: stock/models.py:506 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:532 +#: stock/models.py:522 msgid "Serial number for this item" msgstr "" -#: stock/models.py:546 +#: stock/models.py:536 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:550 +#: stock/models.py:540 msgid "Stock Quantity" msgstr "" -#: stock/models.py:559 +#: stock/models.py:549 msgid "Source Build" msgstr "" -#: stock/models.py:561 +#: stock/models.py:551 msgid "Build for this stock item" msgstr "" -#: stock/models.py:572 +#: stock/models.py:562 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:575 +#: stock/models.py:565 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:581 +#: stock/models.py:571 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:588 +#: stock/models.py:578 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:601 +#: stock/models.py:591 msgid "Delete on deplete" msgstr "" -#: stock/models.py:601 +#: stock/models.py:591 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:611 stock/templates/stock/item.html:111 +#: stock/models.py:601 stock/templates/stock/item.html:111 msgid "Stock Item Notes" msgstr "" -#: stock/models.py:620 +#: stock/models.py:610 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:630 +#: stock/models.py:620 msgid "Scheduled for deletion" msgstr "" -#: stock/models.py:631 +#: stock/models.py:621 msgid "This StockItem will be deleted by the background worker" msgstr "" -#: stock/models.py:1094 +#: stock/models.py:1084 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1100 +#: stock/models.py:1090 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1106 +#: stock/models.py:1096 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({n})" msgstr "" -#: stock/models.py:1109 +#: stock/models.py:1099 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1112 +#: stock/models.py:1102 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1119 +#: stock/models.py:1109 #, python-brace-format msgid "Serial numbers already exist: {exists}" msgstr "" -#: stock/models.py:1277 +#: stock/models.py:1267 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:1775 +#: stock/models.py:1765 msgid "Entry notes" msgstr "" -#: stock/models.py:1832 +#: stock/models.py:1822 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:1838 +#: stock/models.py:1828 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:1856 +#: stock/models.py:1846 msgid "Test name" msgstr "" -#: stock/models.py:1862 templates/js/translated/table_filters.js:266 +#: stock/models.py:1852 templates/js/translated/table_filters.js:266 msgid "Test result" msgstr "" -#: stock/models.py:1868 +#: stock/models.py:1858 msgid "Test output value" msgstr "" -#: stock/models.py:1875 +#: stock/models.py:1865 msgid "Test result attachment" msgstr "" -#: stock/models.py:1881 +#: stock/models.py:1871 msgid "Test notes" msgstr "" -#: stock/serializers.py:166 +#: stock/serializers.py:171 msgid "Purchase price of this stock item" msgstr "" -#: stock/serializers.py:173 +#: stock/serializers.py:178 msgid "Purchase currency of this stock item" msgstr "" -#: stock/serializers.py:287 +#: stock/serializers.py:292 msgid "Enter number of stock items to serialize" msgstr "" -#: stock/serializers.py:302 +#: stock/serializers.py:307 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "" -#: stock/serializers.py:308 +#: stock/serializers.py:313 msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:319 stock/serializers.py:686 +#: stock/serializers.py:324 stock/serializers.py:691 msgid "Destination stock location" msgstr "" -#: stock/serializers.py:326 +#: stock/serializers.py:331 msgid "Optional note field" msgstr "" -#: stock/serializers.py:339 +#: stock/serializers.py:344 msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:556 +#: stock/serializers.py:561 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:584 +#: stock/serializers.py:589 msgid "Stock transaction notes" msgstr "" -#: stock/serializers.py:594 +#: stock/serializers.py:599 msgid "A list of stock items must be provided" msgstr "" @@ -5629,125 +5656,131 @@ msgstr "" msgid "Install" msgstr "" -#: stock/templates/stock/item_base.html:106 +#: stock/templates/stock/item_base.html:108 msgid "Convert to variant" msgstr "" -#: stock/templates/stock/item_base.html:109 +#: stock/templates/stock/item_base.html:111 msgid "Duplicate stock item" msgstr "" -#: stock/templates/stock/item_base.html:111 +#: stock/templates/stock/item_base.html:113 msgid "Edit stock item" msgstr "" -#: stock/templates/stock/item_base.html:114 +#: stock/templates/stock/item_base.html:116 msgid "Delete stock item" msgstr "" -#: stock/templates/stock/item_base.html:136 -#: stock/templates/stock/item_base.html:386 -#: templates/js/translated/table_filters.js:247 -msgid "Expired" +#: stock/templates/stock/item_base.html:154 +msgid "previous page" msgstr "" -#: stock/templates/stock/item_base.html:146 -#: stock/templates/stock/item_base.html:388 -#: templates/js/translated/table_filters.js:253 -msgid "Stale" +#: stock/templates/stock/item_base.html:154 +msgid "Navigate to previous serial number" msgstr "" -#: stock/templates/stock/item_base.html:161 -msgid "You are not in the list of owners of this item. This stock item cannot be edited." +#: stock/templates/stock/item_base.html:163 +msgid "next page" msgstr "" -#: stock/templates/stock/item_base.html:168 -msgid "This stock item is in production and cannot be edited." -msgstr "" - -#: stock/templates/stock/item_base.html:169 -msgid "Edit the stock item from the build view." -msgstr "" - -#: stock/templates/stock/item_base.html:182 -msgid "This stock item has not passed all required tests" +#: stock/templates/stock/item_base.html:163 +msgid "Navigate to next serial number" msgstr "" #: stock/templates/stock/item_base.html:190 #, python-format -msgid "This stock item is allocated to Sales Order %(link)s (Quantity: %(qty)s)" -msgstr "" - -#: stock/templates/stock/item_base.html:198 -#, python-format -msgid "This stock item is allocated to Build %(link)s (Quantity: %(qty)s)" -msgstr "" - -#: stock/templates/stock/item_base.html:204 -msgid "This stock item is serialized - it has a unique serial number and the quantity cannot be adjusted." -msgstr "" - -#: stock/templates/stock/item_base.html:208 -msgid "This stock item cannot be deleted as it has child items" -msgstr "" - -#: stock/templates/stock/item_base.html:212 -msgid "This stock item will be automatically deleted when all stock is depleted." -msgstr "" - -#: stock/templates/stock/item_base.html:241 -msgid "previous page" -msgstr "" - -#: stock/templates/stock/item_base.html:247 -msgid "next page" -msgstr "" - -#: stock/templates/stock/item_base.html:290 -#: templates/js/translated/build.js:1035 -msgid "No location set" -msgstr "" - -#: stock/templates/stock/item_base.html:297 -msgid "Barcode Identifier" -msgstr "" - -#: stock/templates/stock/item_base.html:339 -msgid "Parent Item" -msgstr "" - -#: stock/templates/stock/item_base.html:357 -msgid "No manufacturer set" -msgstr "" - -#: stock/templates/stock/item_base.html:386 -#, python-format msgid "This StockItem expired on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:388 +#: stock/templates/stock/item_base.html:190 +#: templates/js/translated/table_filters.js:247 +msgid "Expired" +msgstr "" + +#: stock/templates/stock/item_base.html:192 #, python-format msgid "This StockItem expires on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:395 -#: templates/js/translated/stock.js:1289 +#: stock/templates/stock/item_base.html:192 +#: templates/js/translated/table_filters.js:253 +msgid "Stale" +msgstr "" + +#: stock/templates/stock/item_base.html:199 +#: templates/js/translated/stock.js:1371 msgid "Last Updated" msgstr "" -#: stock/templates/stock/item_base.html:400 +#: stock/templates/stock/item_base.html:204 msgid "Last Stocktake" msgstr "" -#: stock/templates/stock/item_base.html:404 +#: stock/templates/stock/item_base.html:208 msgid "No stocktake performed" msgstr "" -#: stock/templates/stock/item_base.html:415 +#: stock/templates/stock/item_base.html:226 +msgid "You are not in the list of owners of this item. This stock item cannot be edited." +msgstr "" + +#: stock/templates/stock/item_base.html:233 +msgid "This stock item is in production and cannot be edited." +msgstr "" + +#: stock/templates/stock/item_base.html:234 +msgid "Edit the stock item from the build view." +msgstr "" + +#: stock/templates/stock/item_base.html:247 +msgid "This stock item has not passed all required tests" +msgstr "" + +#: stock/templates/stock/item_base.html:255 +#, python-format +msgid "This stock item is allocated to Sales Order %(link)s (Quantity: %(qty)s)" +msgstr "" + +#: stock/templates/stock/item_base.html:263 +#, python-format +msgid "This stock item is allocated to Build %(link)s (Quantity: %(qty)s)" +msgstr "" + +#: stock/templates/stock/item_base.html:269 +msgid "This stock item is serialized - it has a unique serial number and the quantity cannot be adjusted." +msgstr "" + +#: stock/templates/stock/item_base.html:273 +msgid "This stock item cannot be deleted as it has child items" +msgstr "" + +#: stock/templates/stock/item_base.html:277 +msgid "This stock item will be automatically deleted when all stock is depleted." +msgstr "" + +#: stock/templates/stock/item_base.html:318 +#: templates/js/translated/build.js:1035 +msgid "No location set" +msgstr "" + +#: stock/templates/stock/item_base.html:325 +msgid "Barcode Identifier" +msgstr "" + +#: stock/templates/stock/item_base.html:367 +msgid "Parent Item" +msgstr "" + +#: stock/templates/stock/item_base.html:385 +msgid "No manufacturer set" +msgstr "" + +#: stock/templates/stock/item_base.html:410 msgid "Tests" msgstr "" -#: stock/templates/stock/item_base.html:505 +#: stock/templates/stock/item_base.html:500 msgid "Edit Stock Status" msgstr "" @@ -5825,30 +5858,35 @@ msgstr "" msgid "New Location" msgstr "" -#: stock/templates/stock/location.html:86 +#: stock/templates/stock/location.html:95 +#: stock/templates/stock/location.html:101 +msgid "Location Path" +msgstr "" + +#: stock/templates/stock/location.html:102 msgid "Top level stock location" msgstr "" -#: stock/templates/stock/location.html:95 +#: stock/templates/stock/location.html:115 msgid "You are not in the list of owners of this location. This stock location cannot be edited." msgstr "" -#: stock/templates/stock/location.html:113 -#: stock/templates/stock/location.html:160 +#: stock/templates/stock/location.html:128 +#: stock/templates/stock/location.html:175 #: stock/templates/stock/location_sidebar.html:5 msgid "Sublocations" msgstr "" -#: stock/templates/stock/location.html:127 templates/InvenTree/search.html:170 +#: stock/templates/stock/location.html:142 templates/InvenTree/search.html:170 #: templates/stats.html:97 users/models.py:42 msgid "Stock Locations" msgstr "" -#: stock/templates/stock/location.html:167 templates/stock_table.html:30 +#: stock/templates/stock/location.html:182 templates/stock_table.html:30 msgid "Printing Actions" msgstr "" -#: stock/templates/stock/location.html:171 templates/stock_table.html:34 +#: stock/templates/stock/location.html:186 templates/stock_table.html:34 msgid "Print labels" msgstr "" @@ -5942,7 +5980,7 @@ msgstr "" msgid "Uninstall Stock Items" msgstr "" -#: stock/views.py:760 templates/js/translated/stock.js:648 +#: stock/views.py:760 templates/js/translated/stock.js:730 msgid "Confirm stock adjustment" msgstr "" @@ -5950,7 +5988,7 @@ msgstr "" msgid "Uninstalled stock items" msgstr "" -#: stock/views.py:793 templates/js/translated/stock.js:318 +#: stock/views.py:793 templates/js/translated/stock.js:319 msgid "Edit Stock Item" msgstr "" @@ -5962,7 +6000,7 @@ msgstr "" msgid "Create new Stock Item" msgstr "" -#: stock/views.py:1186 templates/js/translated/stock.js:298 +#: stock/views.py:1186 templates/js/translated/stock.js:299 msgid "Duplicate Stock Item" msgstr "" @@ -6868,7 +6906,7 @@ msgstr "" msgid "Unlink" msgstr "" -#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:600 +#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:682 msgid "Remove stock item" msgstr "" @@ -6963,7 +7001,7 @@ msgid "View BOM" msgstr "" #: templates/js/translated/bom.js:608 templates/js/translated/build.js:1183 -#: templates/js/translated/order.js:1320 +#: templates/js/translated/order.js:1319 msgid "Actions" msgstr "" @@ -7055,7 +7093,7 @@ msgstr "" msgid "No build order allocations found" msgstr "" -#: templates/js/translated/build.js:424 templates/js/translated/order.js:1194 +#: templates/js/translated/build.js:424 templates/js/translated/order.js:1193 msgid "Location not specified" msgstr "" @@ -7064,12 +7102,12 @@ msgid "No active build outputs found" msgstr "" #: templates/js/translated/build.js:1052 templates/js/translated/build.js:1760 -#: templates/js/translated/order.js:1327 +#: templates/js/translated/order.js:1326 msgid "Edit stock allocation" msgstr "" #: templates/js/translated/build.js:1054 templates/js/translated/build.js:1761 -#: templates/js/translated/order.js:1328 +#: templates/js/translated/order.js:1327 msgid "Delete stock allocation" msgstr "" @@ -7090,11 +7128,11 @@ msgid "Quantity Per" msgstr "" #: templates/js/translated/build.js:1134 templates/js/translated/build.js:1360 -#: templates/js/translated/build.js:1756 templates/js/translated/order.js:1557 +#: templates/js/translated/build.js:1756 templates/js/translated/order.js:1556 msgid "Allocated" msgstr "" -#: templates/js/translated/build.js:1190 templates/js/translated/order.js:1611 +#: templates/js/translated/build.js:1190 templates/js/translated/order.js:1610 msgid "Build stock" msgstr "" @@ -7102,7 +7140,7 @@ msgstr "" msgid "Order stock" msgstr "" -#: templates/js/translated/build.js:1197 templates/js/translated/order.js:1604 +#: templates/js/translated/build.js:1197 templates/js/translated/order.js:1603 msgid "Allocate stock" msgstr "" @@ -7143,9 +7181,9 @@ msgstr "" msgid "No builds matching query" msgstr "" -#: templates/js/translated/build.js:1593 templates/js/translated/part.js:966 -#: templates/js/translated/part.js:1377 templates/js/translated/stock.js:1094 -#: templates/js/translated/stock.js:1871 +#: templates/js/translated/build.js:1593 templates/js/translated/part.js:1147 +#: templates/js/translated/part.js:1558 templates/js/translated/stock.js:1176 +#: templates/js/translated/stock.js:1953 msgid "Select" msgstr "" @@ -7153,7 +7191,7 @@ msgstr "" msgid "Build order is overdue" msgstr "" -#: templates/js/translated/build.js:1674 templates/js/translated/stock.js:2090 +#: templates/js/translated/build.js:1674 templates/js/translated/stock.js:2172 msgid "No user information" msgstr "" @@ -7197,10 +7235,6 @@ msgstr "" msgid "Delete Supplier Part" msgstr "" -#: templates/js/translated/company.js:265 -msgid "Edit Company" -msgstr "" - #: templates/js/translated/company.js:286 msgid "Add new Company" msgstr "" @@ -7230,34 +7264,34 @@ msgid "No manufacturer parts found" msgstr "" #: templates/js/translated/company.js:497 -#: templates/js/translated/company.js:754 templates/js/translated/part.js:449 -#: templates/js/translated/part.js:534 +#: templates/js/translated/company.js:754 templates/js/translated/part.js:456 +#: templates/js/translated/part.js:541 msgid "Template part" msgstr "" #: templates/js/translated/company.js:501 -#: templates/js/translated/company.js:758 templates/js/translated/part.js:453 -#: templates/js/translated/part.js:538 +#: templates/js/translated/company.js:758 templates/js/translated/part.js:460 +#: templates/js/translated/part.js:545 msgid "Assembled part" msgstr "" -#: templates/js/translated/company.js:628 templates/js/translated/part.js:626 +#: templates/js/translated/company.js:628 templates/js/translated/part.js:633 msgid "No parameters found" msgstr "" -#: templates/js/translated/company.js:665 templates/js/translated/part.js:668 +#: templates/js/translated/company.js:665 templates/js/translated/part.js:675 msgid "Edit parameter" msgstr "" -#: templates/js/translated/company.js:666 templates/js/translated/part.js:669 +#: templates/js/translated/company.js:666 templates/js/translated/part.js:676 msgid "Delete parameter" msgstr "" -#: templates/js/translated/company.js:685 templates/js/translated/part.js:686 +#: templates/js/translated/company.js:685 templates/js/translated/part.js:693 msgid "Edit Parameter" msgstr "" -#: templates/js/translated/company.js:696 templates/js/translated/part.js:698 +#: templates/js/translated/company.js:696 templates/js/translated/part.js:705 msgid "Delete Parameter" msgstr "" @@ -7346,7 +7380,7 @@ msgid "NO" msgstr "" #: templates/js/translated/label.js:29 templates/js/translated/report.js:118 -#: templates/js/translated/stock.js:624 +#: templates/js/translated/stock.js:706 msgid "Select Stock Items" msgstr "" @@ -7502,11 +7536,11 @@ msgstr "" msgid "Export Order" msgstr "" -#: templates/js/translated/order.js:211 templates/js/translated/stock.js:423 +#: templates/js/translated/order.js:211 templates/js/translated/stock.js:505 msgid "Format" msgstr "" -#: templates/js/translated/order.js:212 templates/js/translated/stock.js:424 +#: templates/js/translated/order.js:212 templates/js/translated/stock.js:506 msgid "Select file format" msgstr "" @@ -7522,7 +7556,7 @@ msgstr "" msgid "Quantity to receive" msgstr "" -#: templates/js/translated/order.js:360 templates/js/translated/stock.js:1673 +#: templates/js/translated/order.js:360 templates/js/translated/stock.js:1755 msgid "Stock Status" msgstr "" @@ -7546,321 +7580,321 @@ msgstr "" msgid "Receive Purchase Order Items" msgstr "" -#: templates/js/translated/order.js:627 +#: templates/js/translated/order.js:627 templates/js/translated/part.js:746 msgid "No purchase orders found" msgstr "" -#: templates/js/translated/order.js:652 templates/js/translated/order.js:1063 +#: templates/js/translated/order.js:659 templates/js/translated/order.js:1062 msgid "Order is overdue" msgstr "" -#: templates/js/translated/order.js:772 templates/js/translated/order.js:1646 +#: templates/js/translated/order.js:771 templates/js/translated/order.js:1645 msgid "Edit Line Item" msgstr "" -#: templates/js/translated/order.js:784 templates/js/translated/order.js:1657 +#: templates/js/translated/order.js:783 templates/js/translated/order.js:1656 msgid "Delete Line Item" msgstr "" -#: templates/js/translated/order.js:823 +#: templates/js/translated/order.js:822 msgid "No line items found" msgstr "" -#: templates/js/translated/order.js:850 templates/js/translated/order.js:1467 +#: templates/js/translated/order.js:849 templates/js/translated/order.js:1466 msgid "Total" msgstr "" -#: templates/js/translated/order.js:904 templates/js/translated/order.js:1492 -#: templates/js/translated/part.js:1594 templates/js/translated/part.js:1805 +#: templates/js/translated/order.js:903 templates/js/translated/order.js:1491 +#: templates/js/translated/part.js:1775 templates/js/translated/part.js:1986 msgid "Unit Price" msgstr "" -#: templates/js/translated/order.js:919 templates/js/translated/order.js:1508 +#: templates/js/translated/order.js:918 templates/js/translated/order.js:1507 msgid "Total Price" msgstr "" -#: templates/js/translated/order.js:997 templates/js/translated/order.js:1617 +#: templates/js/translated/order.js:996 templates/js/translated/order.js:1616 msgid "Edit line item" msgstr "" -#: templates/js/translated/order.js:998 +#: templates/js/translated/order.js:997 msgid "Delete line item" msgstr "" -#: templates/js/translated/order.js:1002 +#: templates/js/translated/order.js:1001 templates/js/translated/part.js:878 msgid "Receive line item" msgstr "" -#: templates/js/translated/order.js:1039 +#: templates/js/translated/order.js:1038 msgid "No sales orders found" msgstr "" -#: templates/js/translated/order.js:1077 +#: templates/js/translated/order.js:1076 msgid "Invalid Customer" msgstr "" -#: templates/js/translated/order.js:1155 +#: templates/js/translated/order.js:1154 msgid "No sales order allocations found" msgstr "" -#: templates/js/translated/order.js:1248 +#: templates/js/translated/order.js:1247 msgid "Edit Stock Allocation" msgstr "" -#: templates/js/translated/order.js:1265 +#: templates/js/translated/order.js:1264 msgid "Confirm Delete Operation" msgstr "" -#: templates/js/translated/order.js:1266 +#: templates/js/translated/order.js:1265 msgid "Delete Stock Allocation" msgstr "" -#: templates/js/translated/order.js:1308 +#: templates/js/translated/order.js:1307 msgid "Stock location not specified" msgstr "" -#: templates/js/translated/order.js:1557 +#: templates/js/translated/order.js:1556 msgid "Fulfilled" msgstr "" -#: templates/js/translated/order.js:1601 +#: templates/js/translated/order.js:1600 msgid "Allocate serial numbers" msgstr "" -#: templates/js/translated/order.js:1607 +#: templates/js/translated/order.js:1606 msgid "Purchase stock" msgstr "" -#: templates/js/translated/order.js:1614 templates/js/translated/order.js:1793 +#: templates/js/translated/order.js:1613 templates/js/translated/order.js:1792 msgid "Calculate price" msgstr "" -#: templates/js/translated/order.js:1618 +#: templates/js/translated/order.js:1617 msgid "Delete line item " msgstr "" -#: templates/js/translated/order.js:1741 +#: templates/js/translated/order.js:1740 msgid "Allocate Stock Item" msgstr "" -#: templates/js/translated/order.js:1801 +#: templates/js/translated/order.js:1800 msgid "Update Unit Price" msgstr "" -#: templates/js/translated/order.js:1815 +#: templates/js/translated/order.js:1814 msgid "No matching line items" msgstr "" -#: templates/js/translated/part.js:51 +#: templates/js/translated/part.js:52 msgid "Part Attributes" msgstr "" -#: templates/js/translated/part.js:55 +#: templates/js/translated/part.js:56 msgid "Part Creation Options" msgstr "" -#: templates/js/translated/part.js:59 +#: templates/js/translated/part.js:60 msgid "Part Duplication Options" msgstr "" -#: templates/js/translated/part.js:63 +#: templates/js/translated/part.js:64 msgid "Supplier Options" msgstr "" -#: templates/js/translated/part.js:77 +#: templates/js/translated/part.js:78 msgid "Add Part Category" msgstr "" -#: templates/js/translated/part.js:166 +#: templates/js/translated/part.js:162 msgid "Create Initial Stock" msgstr "" -#: templates/js/translated/part.js:167 +#: templates/js/translated/part.js:163 msgid "Create an initial stock item for this part" msgstr "" -#: templates/js/translated/part.js:174 +#: templates/js/translated/part.js:170 msgid "Initial Stock Quantity" msgstr "" -#: templates/js/translated/part.js:175 +#: templates/js/translated/part.js:171 msgid "Specify initial stock quantity for this part" msgstr "" -#: templates/js/translated/part.js:182 +#: templates/js/translated/part.js:178 msgid "Select destination stock location" msgstr "" -#: templates/js/translated/part.js:193 +#: templates/js/translated/part.js:196 msgid "Copy Category Parameters" msgstr "" -#: templates/js/translated/part.js:194 +#: templates/js/translated/part.js:197 msgid "Copy parameter templates from selected part category" msgstr "" -#: templates/js/translated/part.js:202 +#: templates/js/translated/part.js:205 msgid "Add Supplier Data" msgstr "" -#: templates/js/translated/part.js:203 +#: templates/js/translated/part.js:206 msgid "Create initial supplier data for this part" msgstr "" -#: templates/js/translated/part.js:259 +#: templates/js/translated/part.js:262 msgid "Copy Image" msgstr "" -#: templates/js/translated/part.js:260 +#: templates/js/translated/part.js:263 msgid "Copy image from original part" msgstr "" -#: templates/js/translated/part.js:268 +#: templates/js/translated/part.js:271 msgid "Copy bill of materials from original part" msgstr "" -#: templates/js/translated/part.js:275 +#: templates/js/translated/part.js:278 msgid "Copy Parameters" msgstr "" -#: templates/js/translated/part.js:276 +#: templates/js/translated/part.js:279 msgid "Copy parameter data from original part" msgstr "" -#: templates/js/translated/part.js:289 +#: templates/js/translated/part.js:292 msgid "Parent part category" msgstr "" -#: templates/js/translated/part.js:333 +#: templates/js/translated/part.js:336 msgid "Edit Part" msgstr "" -#: templates/js/translated/part.js:335 +#: templates/js/translated/part.js:338 msgid "Part edited" msgstr "" -#: templates/js/translated/part.js:403 +#: templates/js/translated/part.js:410 msgid "You are subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:405 +#: templates/js/translated/part.js:412 msgid "You have subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:410 +#: templates/js/translated/part.js:417 msgid "Subscribe to notifications for this item" msgstr "" -#: templates/js/translated/part.js:412 +#: templates/js/translated/part.js:419 msgid "You have unsubscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:441 templates/js/translated/part.js:526 +#: templates/js/translated/part.js:448 templates/js/translated/part.js:533 msgid "Trackable part" msgstr "" -#: templates/js/translated/part.js:445 templates/js/translated/part.js:530 +#: templates/js/translated/part.js:452 templates/js/translated/part.js:537 msgid "Virtual part" msgstr "" -#: templates/js/translated/part.js:457 +#: templates/js/translated/part.js:464 msgid "Subscribed part" msgstr "" -#: templates/js/translated/part.js:461 +#: templates/js/translated/part.js:468 msgid "Salable part" msgstr "" -#: templates/js/translated/part.js:576 +#: templates/js/translated/part.js:583 msgid "No variants found" msgstr "" -#: templates/js/translated/part.js:765 +#: templates/js/translated/part.js:946 msgid "Delete part relationship" msgstr "" -#: templates/js/translated/part.js:789 +#: templates/js/translated/part.js:970 msgid "Delete Part Relationship" msgstr "" -#: templates/js/translated/part.js:856 templates/js/translated/part.js:1116 +#: templates/js/translated/part.js:1037 templates/js/translated/part.js:1297 msgid "No parts found" msgstr "" -#: templates/js/translated/part.js:1026 +#: templates/js/translated/part.js:1207 msgid "No category" msgstr "" -#: templates/js/translated/part.js:1049 +#: templates/js/translated/part.js:1230 #: templates/js/translated/table_filters.js:381 msgid "Low stock" msgstr "" -#: templates/js/translated/part.js:1140 templates/js/translated/part.js:1312 -#: templates/js/translated/stock.js:1832 +#: templates/js/translated/part.js:1321 templates/js/translated/part.js:1493 +#: templates/js/translated/stock.js:1914 msgid "Display as list" msgstr "" -#: templates/js/translated/part.js:1156 +#: templates/js/translated/part.js:1337 msgid "Display as grid" msgstr "" -#: templates/js/translated/part.js:1331 templates/js/translated/stock.js:1851 +#: templates/js/translated/part.js:1512 templates/js/translated/stock.js:1933 msgid "Display as tree" msgstr "" -#: templates/js/translated/part.js:1395 +#: templates/js/translated/part.js:1576 msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:1409 templates/js/translated/stock.js:1895 +#: templates/js/translated/part.js:1590 templates/js/translated/stock.js:1977 msgid "Path" msgstr "" -#: templates/js/translated/part.js:1453 +#: templates/js/translated/part.js:1634 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:1504 templates/js/translated/stock.js:816 +#: templates/js/translated/part.js:1685 templates/js/translated/stock.js:898 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:1505 templates/js/translated/stock.js:817 +#: templates/js/translated/part.js:1686 templates/js/translated/stock.js:899 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:1511 +#: templates/js/translated/part.js:1692 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:1533 +#: templates/js/translated/part.js:1714 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:1547 +#: templates/js/translated/part.js:1728 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:1572 +#: templates/js/translated/part.js:1753 #, python-brace-format msgid "No ${human_name} information found" msgstr "" -#: templates/js/translated/part.js:1627 +#: templates/js/translated/part.js:1808 #, python-brace-format msgid "Edit ${human_name}" msgstr "" -#: templates/js/translated/part.js:1628 +#: templates/js/translated/part.js:1809 #, python-brace-format msgid "Delete ${human_name}" msgstr "" -#: templates/js/translated/part.js:1729 +#: templates/js/translated/part.js:1910 msgid "Single Price" msgstr "" -#: templates/js/translated/part.js:1748 +#: templates/js/translated/part.js:1929 msgid "Single Price Difference" msgstr "" @@ -7930,276 +7964,300 @@ msgstr "" msgid "Sales Order(s) must be selected before printing report" msgstr "" -#: templates/js/translated/stock.js:70 +#: templates/js/translated/stock.js:71 msgid "Serialize Stock Item" msgstr "" -#: templates/js/translated/stock.js:88 templates/js/translated/stock.js:167 +#: templates/js/translated/stock.js:89 templates/js/translated/stock.js:168 msgid "Next available serial number" msgstr "" -#: templates/js/translated/stock.js:90 templates/js/translated/stock.js:169 +#: templates/js/translated/stock.js:91 templates/js/translated/stock.js:170 msgid "Latest serial number" msgstr "" -#: templates/js/translated/stock.js:104 +#: templates/js/translated/stock.js:105 msgid "Parent stock location" msgstr "" -#: templates/js/translated/stock.js:140 +#: templates/js/translated/stock.js:141 msgid "New Stock Location" msgstr "" -#: templates/js/translated/stock.js:180 +#: templates/js/translated/stock.js:181 msgid "This part cannot be serialized" msgstr "" -#: templates/js/translated/stock.js:219 +#: templates/js/translated/stock.js:220 msgid "Enter initial quantity for this stock item" msgstr "" -#: templates/js/translated/stock.js:225 +#: templates/js/translated/stock.js:226 msgid "Enter serial numbers for new stock (or leave blank)" msgstr "" -#: templates/js/translated/stock.js:368 +#: templates/js/translated/stock.js:369 msgid "Created new stock item" msgstr "" -#: templates/js/translated/stock.js:381 +#: templates/js/translated/stock.js:382 msgid "Created multiple stock items" msgstr "" -#: templates/js/translated/stock.js:420 +#: templates/js/translated/stock.js:407 +msgid "Find Serial Number" +msgstr "" + +#: templates/js/translated/stock.js:411 templates/js/translated/stock.js:412 +msgid "Enter serial number" +msgstr "" + +#: templates/js/translated/stock.js:428 +msgid "Enter a serial number" +msgstr "" + +#: templates/js/translated/stock.js:448 +msgid "No matching serial number" +msgstr "" + +#: templates/js/translated/stock.js:457 +msgid "More than one matching result found" +msgstr "" + +#: templates/js/translated/stock.js:502 msgid "Export Stock" msgstr "" -#: templates/js/translated/stock.js:431 +#: templates/js/translated/stock.js:513 msgid "Include Sublocations" msgstr "" -#: templates/js/translated/stock.js:432 +#: templates/js/translated/stock.js:514 msgid "Include stock items in sublocations" msgstr "" -#: templates/js/translated/stock.js:474 +#: templates/js/translated/stock.js:556 msgid "Transfer Stock" msgstr "" -#: templates/js/translated/stock.js:475 +#: templates/js/translated/stock.js:557 msgid "Move" msgstr "" -#: templates/js/translated/stock.js:481 +#: templates/js/translated/stock.js:563 msgid "Count Stock" msgstr "" -#: templates/js/translated/stock.js:482 +#: templates/js/translated/stock.js:564 msgid "Count" msgstr "" -#: templates/js/translated/stock.js:486 +#: templates/js/translated/stock.js:568 msgid "Remove Stock" msgstr "" -#: templates/js/translated/stock.js:487 +#: templates/js/translated/stock.js:569 msgid "Take" msgstr "" -#: templates/js/translated/stock.js:491 +#: templates/js/translated/stock.js:573 msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:492 users/models.py:200 +#: templates/js/translated/stock.js:574 users/models.py:200 msgid "Add" msgstr "" -#: templates/js/translated/stock.js:496 templates/stock_table.html:56 +#: templates/js/translated/stock.js:578 templates/stock_table.html:56 msgid "Delete Stock" msgstr "" -#: templates/js/translated/stock.js:585 +#: templates/js/translated/stock.js:667 msgid "Quantity cannot be adjusted for serialized stock" msgstr "" -#: templates/js/translated/stock.js:585 +#: templates/js/translated/stock.js:667 msgid "Specify stock quantity" msgstr "" -#: templates/js/translated/stock.js:625 +#: templates/js/translated/stock.js:707 msgid "You must select at least one available stock item" msgstr "" -#: templates/js/translated/stock.js:783 +#: templates/js/translated/stock.js:865 msgid "PASS" msgstr "" -#: templates/js/translated/stock.js:785 +#: templates/js/translated/stock.js:867 msgid "FAIL" msgstr "" -#: templates/js/translated/stock.js:790 +#: templates/js/translated/stock.js:872 msgid "NO RESULT" msgstr "" -#: templates/js/translated/stock.js:812 +#: templates/js/translated/stock.js:894 msgid "Add test result" msgstr "" -#: templates/js/translated/stock.js:838 +#: templates/js/translated/stock.js:920 msgid "No test results found" msgstr "" -#: templates/js/translated/stock.js:895 +#: templates/js/translated/stock.js:977 msgid "Test Date" msgstr "" -#: templates/js/translated/stock.js:1002 +#: templates/js/translated/stock.js:1084 msgid "In production" msgstr "" -#: templates/js/translated/stock.js:1006 +#: templates/js/translated/stock.js:1088 msgid "Installed in Stock Item" msgstr "" -#: templates/js/translated/stock.js:1010 +#: templates/js/translated/stock.js:1092 msgid "Shipped to customer" msgstr "" -#: templates/js/translated/stock.js:1014 +#: templates/js/translated/stock.js:1096 msgid "Assigned to Sales Order" msgstr "" -#: templates/js/translated/stock.js:1020 +#: templates/js/translated/stock.js:1102 msgid "No stock location set" msgstr "" -#: templates/js/translated/stock.js:1178 +#: templates/js/translated/stock.js:1260 msgid "Stock item is in production" msgstr "" -#: templates/js/translated/stock.js:1183 +#: templates/js/translated/stock.js:1265 msgid "Stock item assigned to sales order" msgstr "" -#: templates/js/translated/stock.js:1186 +#: templates/js/translated/stock.js:1268 msgid "Stock item assigned to customer" msgstr "" -#: templates/js/translated/stock.js:1190 +#: templates/js/translated/stock.js:1272 msgid "Stock item has expired" msgstr "" -#: templates/js/translated/stock.js:1192 +#: templates/js/translated/stock.js:1274 msgid "Stock item will expire soon" msgstr "" -#: templates/js/translated/stock.js:1196 +#: templates/js/translated/stock.js:1278 msgid "Stock item has been allocated" msgstr "" -#: templates/js/translated/stock.js:1200 +#: templates/js/translated/stock.js:1282 msgid "Stock item has been installed in another item" msgstr "" -#: templates/js/translated/stock.js:1207 +#: templates/js/translated/stock.js:1289 msgid "Stock item has been rejected" msgstr "" -#: templates/js/translated/stock.js:1209 +#: templates/js/translated/stock.js:1291 msgid "Stock item is lost" msgstr "" -#: templates/js/translated/stock.js:1211 +#: templates/js/translated/stock.js:1293 msgid "Stock item is destroyed" msgstr "" -#: templates/js/translated/stock.js:1215 +#: templates/js/translated/stock.js:1297 #: templates/js/translated/table_filters.js:183 msgid "Depleted" msgstr "" -#: templates/js/translated/stock.js:1265 +#: templates/js/translated/stock.js:1347 msgid "Stocktake" msgstr "" -#: templates/js/translated/stock.js:1338 +#: templates/js/translated/stock.js:1420 msgid "Supplier part not specified" msgstr "" -#: templates/js/translated/stock.js:1376 +#: templates/js/translated/stock.js:1458 msgid "No stock items matching query" msgstr "" -#: templates/js/translated/stock.js:1397 templates/js/translated/stock.js:1445 +#: templates/js/translated/stock.js:1479 templates/js/translated/stock.js:1527 msgid "items" msgstr "" -#: templates/js/translated/stock.js:1485 +#: templates/js/translated/stock.js:1567 msgid "batches" msgstr "" -#: templates/js/translated/stock.js:1512 +#: templates/js/translated/stock.js:1594 msgid "locations" msgstr "" -#: templates/js/translated/stock.js:1514 +#: templates/js/translated/stock.js:1596 msgid "Undefined location" msgstr "" -#: templates/js/translated/stock.js:1688 +#: templates/js/translated/stock.js:1770 msgid "Set Stock Status" msgstr "" -#: templates/js/translated/stock.js:1702 +#: templates/js/translated/stock.js:1784 msgid "Select Status Code" msgstr "" -#: templates/js/translated/stock.js:1703 +#: templates/js/translated/stock.js:1785 msgid "Status code must be selected" msgstr "" -#: templates/js/translated/stock.js:1927 +#: templates/js/translated/stock.js:2009 msgid "Invalid date" msgstr "" -#: templates/js/translated/stock.js:1974 +#: templates/js/translated/stock.js:2031 +msgid "Details" +msgstr "" + +#: templates/js/translated/stock.js:2056 msgid "Location no longer exists" msgstr "" -#: templates/js/translated/stock.js:1993 +#: templates/js/translated/stock.js:2075 msgid "Purchase order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2012 +#: templates/js/translated/stock.js:2094 msgid "Customer no longer exists" msgstr "" -#: templates/js/translated/stock.js:2030 +#: templates/js/translated/stock.js:2112 msgid "Stock item no longer exists" msgstr "" -#: templates/js/translated/stock.js:2053 +#: templates/js/translated/stock.js:2135 msgid "Added" msgstr "" -#: templates/js/translated/stock.js:2061 +#: templates/js/translated/stock.js:2143 msgid "Removed" msgstr "" -#: templates/js/translated/stock.js:2102 +#: templates/js/translated/stock.js:2184 msgid "Edit tracking entry" msgstr "" -#: templates/js/translated/stock.js:2103 +#: templates/js/translated/stock.js:2185 msgid "Delete tracking entry" msgstr "" -#: templates/js/translated/stock.js:2154 +#: templates/js/translated/stock.js:2236 msgid "No installed items" msgstr "" -#: templates/js/translated/stock.js:2205 +#: templates/js/translated/stock.js:2287 msgid "Uninstall Stock Item" msgstr "" diff --git a/InvenTree/locale/id/LC_MESSAGES/django.po b/InvenTree/locale/id/LC_MESSAGES/django.po index 69f7ad51fe..cfcf2e1d88 100644 --- a/InvenTree/locale/id/LC_MESSAGES/django.po +++ b/InvenTree/locale/id/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-11-30 21:49+0000\n" -"PO-Revision-Date: 2021-11-30 21:51\n" +"POT-Creation-Date: 2021-12-03 10:37+0000\n" +"PO-Revision-Date: 2021-12-03 11:25\n" "Last-Translator: \n" "Language-Team: Indonesian\n" "Language: id_ID\n" @@ -114,129 +114,130 @@ msgstr "" msgid "Number of unique serial number ({s}) must match quantity ({q})" msgstr "" -#: InvenTree/models.py:114 +#: InvenTree/models.py:120 msgid "Missing file" msgstr "" -#: InvenTree/models.py:115 +#: InvenTree/models.py:121 msgid "Missing external link" msgstr "" -#: InvenTree/models.py:126 stock/models.py:1874 +#: InvenTree/models.py:132 stock/models.py:1864 #: templates/js/translated/attachment.js:117 msgid "Attachment" msgstr "" -#: InvenTree/models.py:127 +#: InvenTree/models.py:133 msgid "Select file to attach" msgstr "" -#: InvenTree/models.py:133 company/models.py:131 company/models.py:348 +#: InvenTree/models.py:139 company/models.py:131 company/models.py:348 #: company/models.py:564 order/models.py:163 part/models.py:797 #: report/templates/report/inventree_build_order_base.html:165 #: templates/js/translated/company.js:537 -#: templates/js/translated/company.js:826 templates/js/translated/part.js:1077 +#: templates/js/translated/company.js:826 templates/js/translated/part.js:1258 msgid "Link" msgstr "" -#: InvenTree/models.py:134 build/models.py:330 part/models.py:798 -#: stock/models.py:540 +#: InvenTree/models.py:140 build/models.py:330 part/models.py:798 +#: stock/models.py:530 msgid "Link to external URL" msgstr "" -#: InvenTree/models.py:137 templates/js/translated/attachment.js:161 +#: InvenTree/models.py:143 templates/js/translated/attachment.js:161 msgid "Comment" msgstr "" -#: InvenTree/models.py:137 +#: InvenTree/models.py:143 msgid "File comment" msgstr "" -#: InvenTree/models.py:143 InvenTree/models.py:144 common/models.py:1185 +#: InvenTree/models.py:149 InvenTree/models.py:150 common/models.py:1185 #: common/models.py:1186 part/models.py:2205 part/models.py:2225 #: report/templates/report/inventree_test_report_base.html:96 -#: templates/js/translated/stock.js:2084 +#: templates/js/translated/stock.js:2166 msgid "User" msgstr "" -#: InvenTree/models.py:147 +#: InvenTree/models.py:153 msgid "upload date" msgstr "" -#: InvenTree/models.py:170 +#: InvenTree/models.py:176 msgid "Filename must not be empty" msgstr "" -#: InvenTree/models.py:193 +#: InvenTree/models.py:199 msgid "Invalid attachment directory" msgstr "" -#: InvenTree/models.py:203 +#: InvenTree/models.py:209 #, python-brace-format msgid "Filename contains illegal character '{c}'" msgstr "" -#: InvenTree/models.py:206 +#: InvenTree/models.py:212 msgid "Filename missing extension" msgstr "" -#: InvenTree/models.py:213 +#: InvenTree/models.py:219 msgid "Attachment with this filename already exists" msgstr "" -#: InvenTree/models.py:220 +#: InvenTree/models.py:226 msgid "Error renaming file" msgstr "" -#: InvenTree/models.py:255 +#: InvenTree/models.py:261 msgid "Invalid choice" msgstr "" -#: InvenTree/models.py:271 InvenTree/models.py:272 company/models.py:415 +#: InvenTree/models.py:277 InvenTree/models.py:278 company/models.py:415 #: label/models.py:112 part/models.py:741 part/models.py:2389 -#: part/templates/part/detail.html:25 report/models.py:181 -#: templates/InvenTree/settings/settings.html:259 -#: templates/js/translated/company.js:638 templates/js/translated/part.js:499 -#: templates/js/translated/part.js:636 templates/js/translated/part.js:1384 -#: templates/js/translated/stock.js:1877 +#: report/models.py:181 templates/InvenTree/settings/settings.html:259 +#: templates/js/translated/company.js:638 templates/js/translated/part.js:506 +#: templates/js/translated/part.js:643 templates/js/translated/part.js:1565 +#: templates/js/translated/stock.js:1959 msgid "Name" msgstr "" -#: InvenTree/models.py:278 build/models.py:207 +#: InvenTree/models.py:284 build/models.py:207 #: build/templates/build/detail.html:25 company/models.py:354 -#: company/models.py:570 company/templates/company/manufacturer_part.html:80 -#: company/templates/company/supplier_part.html:81 label/models.py:119 -#: order/models.py:161 part/models.py:764 part/templates/part/detail.html:30 +#: company/models.py:570 company/templates/company/company_base.html:68 +#: company/templates/company/manufacturer_part.html:76 +#: company/templates/company/supplier_part.html:73 label/models.py:119 +#: order/models.py:161 part/models.py:764 part/templates/part/category.html:70 +#: part/templates/part/part_base.html:163 #: part/templates/part/set_category.html:14 report/models.py:194 #: report/models.py:553 report/models.py:592 #: report/templates/report/inventree_build_order_base.html:118 -#: stock/templates/stock/location.html:108 templates/js/translated/bom.js:215 +#: stock/templates/stock/location.html:89 templates/js/translated/bom.js:215 #: templates/js/translated/bom.js:428 templates/js/translated/build.js:1621 #: templates/js/translated/company.js:345 #: templates/js/translated/company.js:548 -#: templates/js/translated/company.js:837 templates/js/translated/order.js:673 -#: templates/js/translated/order.js:855 templates/js/translated/order.js:1091 -#: templates/js/translated/part.js:558 templates/js/translated/part.js:752 -#: templates/js/translated/part.js:837 templates/js/translated/part.js:1007 -#: templates/js/translated/part.js:1403 templates/js/translated/part.js:1472 -#: templates/js/translated/stock.js:1151 templates/js/translated/stock.js:1889 -#: templates/js/translated/stock.js:1934 +#: templates/js/translated/company.js:837 templates/js/translated/order.js:680 +#: templates/js/translated/order.js:854 templates/js/translated/order.js:1090 +#: templates/js/translated/part.js:565 templates/js/translated/part.js:933 +#: templates/js/translated/part.js:1018 templates/js/translated/part.js:1188 +#: templates/js/translated/part.js:1584 templates/js/translated/part.js:1653 +#: templates/js/translated/stock.js:1233 templates/js/translated/stock.js:1971 +#: templates/js/translated/stock.js:2016 msgid "Description" msgstr "" -#: InvenTree/models.py:279 +#: InvenTree/models.py:285 msgid "Description (optional)" msgstr "" -#: InvenTree/models.py:287 +#: InvenTree/models.py:293 msgid "parent" msgstr "" -#: InvenTree/serializers.py:62 part/models.py:2674 +#: InvenTree/serializers.py:65 part/models.py:2674 msgid "Must be a valid number" msgstr "" -#: InvenTree/serializers.py:285 +#: InvenTree/serializers.py:299 msgid "Filename" msgstr "" @@ -361,7 +362,7 @@ msgid "Returned" msgstr "" #: InvenTree/status_codes.py:143 -#: order/templates/order/sales_order_base.html:147 +#: order/templates/order/sales_order_base.html:148 msgid "Shipped" msgstr "" @@ -566,7 +567,7 @@ msgid "Barcode associated with StockItem" msgstr "" #: build/forms.py:36 build/models.py:1283 -#: build/templates/build/build_base.html:124 +#: build/templates/build/build_base.html:132 #: build/templates/build/detail.html:35 common/models.py:1225 #: company/forms.py:42 company/templates/company/supplier_part.html:251 #: order/forms.py:102 order/models.py:729 order/models.py:991 @@ -574,26 +575,27 @@ msgstr "" #: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:223 #: part/forms.py:239 part/forms.py:255 part/models.py:2576 #: part/templates/part/bom_upload/match_parts.html:31 -#: part/templates/part/detail.html:1076 part/templates/part/detail.html:1162 +#: part/templates/part/detail.html:967 part/templates/part/detail.html:1053 #: part/templates/part/part_pricing.html:16 #: report/templates/report/inventree_build_order_base.html:114 #: report/templates/report/inventree_po_report.html:91 #: report/templates/report/inventree_so_report.html:91 #: report/templates/report/inventree_test_report_base.html:81 #: report/templates/report/inventree_test_report_base.html:139 -#: stock/forms.py:156 stock/serializers.py:286 -#: stock/templates/stock/item_base.html:256 +#: stock/forms.py:156 stock/serializers.py:291 +#: stock/templates/stock/item_base.html:174 #: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:443 #: templates/js/translated/build.js:235 templates/js/translated/build.js:435 #: templates/js/translated/build.js:629 templates/js/translated/build.js:639 #: templates/js/translated/build.js:1015 templates/js/translated/build.js:1362 #: templates/js/translated/model_renderers.js:99 -#: templates/js/translated/order.js:892 templates/js/translated/order.js:1205 -#: templates/js/translated/order.js:1283 templates/js/translated/order.js:1290 -#: templates/js/translated/order.js:1379 templates/js/translated/order.js:1479 -#: templates/js/translated/part.js:1615 templates/js/translated/part.js:1738 -#: templates/js/translated/part.js:1816 templates/js/translated/stock.js:377 -#: templates/js/translated/stock.js:2069 templates/js/translated/stock.js:2171 +#: templates/js/translated/order.js:891 templates/js/translated/order.js:1204 +#: templates/js/translated/order.js:1282 templates/js/translated/order.js:1289 +#: templates/js/translated/order.js:1378 templates/js/translated/order.js:1478 +#: templates/js/translated/part.js:843 templates/js/translated/part.js:1796 +#: templates/js/translated/part.js:1919 templates/js/translated/part.js:1997 +#: templates/js/translated/stock.js:378 templates/js/translated/stock.js:2151 +#: templates/js/translated/stock.js:2253 msgid "Quantity" msgstr "" @@ -602,8 +604,8 @@ msgid "Enter quantity for build output" msgstr "" #: build/forms.py:41 order/forms.py:96 stock/forms.py:95 -#: stock/serializers.py:307 templates/js/translated/stock.js:224 -#: templates/js/translated/stock.js:378 +#: stock/serializers.py:312 templates/js/translated/stock.js:225 +#: templates/js/translated/stock.js:379 msgid "Serial Numbers" msgstr "" @@ -646,7 +648,7 @@ msgstr "" #: build/templates/build/index.html:8 build/templates/build/index.html:12 #: order/templates/order/sales_order_detail.html:42 #: order/templates/order/so_sidebar.html:7 -#: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:221 +#: part/templates/part/part_sidebar.html:20 templates/InvenTree/index.html:221 #: templates/InvenTree/search.html:145 #: templates/InvenTree/settings/sidebar.html:42 users/models.py:44 msgid "Build Orders" @@ -662,7 +664,7 @@ msgstr "" #: report/templates/report/inventree_po_report.html:92 #: report/templates/report/inventree_so_report.html:92 #: templates/js/translated/bom.js:435 templates/js/translated/build.js:1119 -#: templates/js/translated/order.js:886 templates/js/translated/order.js:1473 +#: templates/js/translated/order.js:885 templates/js/translated/order.js:1472 msgid "Reference" msgstr "" @@ -670,7 +672,7 @@ msgstr "" msgid "Brief description of the build" msgstr "" -#: build/models.py:219 build/templates/build/build_base.html:156 +#: build/models.py:219 build/templates/build/build_base.html:164 #: build/templates/build/detail.html:88 msgid "Parent Build" msgstr "" @@ -679,7 +681,7 @@ msgstr "" msgid "BuildOrder to which this build is allocated" msgstr "" -#: build/models.py:225 build/templates/build/build_base.html:119 +#: build/models.py:225 build/templates/build/build_base.html:77 #: build/templates/build/detail.html:30 company/models.py:705 #: order/models.py:789 order/models.py:860 #: order/templates/order/order_wizard/select_parts.html:32 part/models.py:357 @@ -700,10 +702,10 @@ msgstr "" #: templates/js/translated/build.js:988 templates/js/translated/build.js:1359 #: templates/js/translated/build.js:1626 templates/js/translated/company.js:489 #: templates/js/translated/company.js:746 templates/js/translated/order.js:426 -#: templates/js/translated/order.js:840 templates/js/translated/order.js:1457 -#: templates/js/translated/part.js:737 templates/js/translated/part.js:818 -#: templates/js/translated/part.js:985 templates/js/translated/stock.js:508 -#: templates/js/translated/stock.js:1108 templates/js/translated/stock.js:2159 +#: templates/js/translated/order.js:839 templates/js/translated/order.js:1456 +#: templates/js/translated/part.js:918 templates/js/translated/part.js:999 +#: templates/js/translated/part.js:1166 templates/js/translated/stock.js:590 +#: templates/js/translated/stock.js:1190 templates/js/translated/stock.js:2241 msgid "Part" msgstr "" @@ -751,7 +753,7 @@ msgstr "" msgid "Number of stock items which have been completed" msgstr "" -#: build/models.py:277 part/templates/part/part_base.html:216 +#: build/models.py:277 part/templates/part/part_base.html:234 msgid "Build Status" msgstr "" @@ -759,7 +761,7 @@ msgstr "" msgid "Build status code" msgstr "" -#: build/models.py:285 stock/models.py:544 +#: build/models.py:285 stock/models.py:534 msgid "Batch Code" msgstr "" @@ -768,7 +770,7 @@ msgid "Batch code for this build output" msgstr "" #: build/models.py:292 order/models.py:165 part/models.py:936 -#: part/templates/part/detail.html:86 templates/js/translated/order.js:1104 +#: part/templates/part/part_base.html:313 templates/js/translated/order.js:1103 msgid "Creation Date" msgstr "" @@ -797,12 +799,12 @@ msgstr "" msgid "User who issued this build order" msgstr "" -#: build/models.py:323 build/templates/build/build_base.html:177 +#: build/models.py:323 build/templates/build/build_base.html:185 #: build/templates/build/detail.html:116 order/models.py:179 -#: order/templates/order/order_base.html:154 -#: order/templates/order/sales_order_base.html:161 part/models.py:940 +#: order/templates/order/order_base.html:158 +#: order/templates/order/sales_order_base.html:162 part/models.py:940 #: report/templates/report/inventree_build_order_base.html:159 -#: templates/js/translated/build.js:1680 templates/js/translated/order.js:700 +#: templates/js/translated/build.js:1680 templates/js/translated/order.js:699 msgid "Responsible" msgstr "" @@ -811,10 +813,10 @@ msgid "User responsible for this build order" msgstr "" #: build/models.py:329 build/templates/build/detail.html:102 -#: company/templates/company/manufacturer_part.html:87 -#: company/templates/company/supplier_part.html:88 -#: part/templates/part/detail.html:80 stock/models.py:538 -#: stock/templates/stock/item_base.html:346 +#: company/templates/company/manufacturer_part.html:102 +#: company/templates/company/supplier_part.html:126 +#: part/templates/part/part_base.html:354 stock/models.py:528 +#: stock/templates/stock/item_base.html:374 msgid "External Link" msgstr "" @@ -824,15 +826,15 @@ msgstr "" #: order/models.py:183 order/models.py:738 #: order/templates/order/po_sidebar.html:11 #: order/templates/order/so_sidebar.html:11 part/models.py:925 -#: part/templates/part/detail.html:223 part/templates/part/part_sidebar.html:52 +#: part/templates/part/detail.html:116 part/templates/part/part_sidebar.html:50 #: report/templates/report/inventree_build_order_base.html:173 -#: stock/forms.py:154 stock/forms.py:204 stock/forms.py:238 stock/models.py:610 -#: stock/models.py:1774 stock/models.py:1880 stock/serializers.py:325 -#: stock/serializers.py:583 stock/templates/stock/stock_sidebar.html:21 +#: stock/forms.py:154 stock/forms.py:204 stock/forms.py:238 stock/models.py:600 +#: stock/models.py:1764 stock/models.py:1870 stock/serializers.py:330 +#: stock/serializers.py:588 stock/templates/stock/stock_sidebar.html:21 #: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:599 -#: templates/js/translated/company.js:842 templates/js/translated/order.js:985 -#: templates/js/translated/order.js:1583 templates/js/translated/stock.js:891 -#: templates/js/translated/stock.js:1370 +#: templates/js/translated/company.js:842 templates/js/translated/order.js:984 +#: templates/js/translated/order.js:1582 templates/js/translated/stock.js:973 +#: templates/js/translated/stock.js:1452 msgid "Notes" msgstr "" @@ -877,7 +879,7 @@ msgstr "" msgid "Selected stock item not found in BOM" msgstr "" -#: build/models.py:1253 stock/templates/stock/item_base.html:318 +#: build/models.py:1253 stock/templates/stock/item_base.html:346 #: templates/InvenTree/search.html:143 templates/js/translated/build.js:1599 #: templates/navbar.html:33 msgid "Build" @@ -890,11 +892,11 @@ msgstr "" #: build/models.py:1270 build/serializers.py:328 #: stock/templates/stock/item_base.html:8 #: stock/templates/stock/item_base.html:16 -#: stock/templates/stock/item_base.html:340 +#: stock/templates/stock/item_base.html:368 #: templates/js/translated/build.js:408 templates/js/translated/build.js:413 #: templates/js/translated/build.js:1361 templates/js/translated/build.js:1742 -#: templates/js/translated/order.js:1178 templates/js/translated/order.js:1183 -#: templates/js/translated/stock.js:2020 +#: templates/js/translated/order.js:1177 templates/js/translated/order.js:1182 +#: templates/js/translated/stock.js:2102 msgid "Stock Item" msgstr "" @@ -934,16 +936,16 @@ msgstr "" msgid "This build output is not fully allocated" msgstr "" -#: build/serializers.py:190 order/serializers.py:219 order/serializers.py:287 -#: stock/forms.py:236 stock/serializers.py:318 stock/serializers.py:685 -#: stock/templates/stock/item_base.html:286 +#: build/serializers.py:190 order/serializers.py:228 order/serializers.py:296 +#: stock/forms.py:236 stock/serializers.py:323 stock/serializers.py:690 +#: stock/templates/stock/item_base.html:314 #: templates/js/translated/barcode.js:384 #: templates/js/translated/barcode.js:557 templates/js/translated/build.js:420 #: templates/js/translated/build.js:1027 templates/js/translated/order.js:348 -#: templates/js/translated/order.js:1190 templates/js/translated/order.js:1298 -#: templates/js/translated/order.js:1304 templates/js/translated/part.js:181 -#: templates/js/translated/stock.js:510 templates/js/translated/stock.js:1251 -#: templates/js/translated/stock.js:1961 +#: templates/js/translated/order.js:1189 templates/js/translated/order.js:1297 +#: templates/js/translated/order.js:1303 templates/js/translated/part.js:177 +#: templates/js/translated/stock.js:592 templates/js/translated/stock.js:1333 +#: templates/js/translated/stock.js:2043 msgid "Location" msgstr "" @@ -951,13 +953,13 @@ msgstr "" msgid "Location for completed build outputs" msgstr "" -#: build/serializers.py:197 build/templates/build/build_base.html:129 +#: build/serializers.py:197 build/templates/build/build_base.html:137 #: build/templates/build/detail.html:63 order/models.py:572 -#: order/serializers.py:240 stock/templates/stock/item_base.html:409 +#: order/serializers.py:249 stock/templates/stock/item_base.html:180 #: templates/js/translated/barcode.js:140 templates/js/translated/build.js:1655 -#: templates/js/translated/order.js:431 templates/js/translated/order.js:677 -#: templates/js/translated/order.js:1096 templates/js/translated/stock.js:1226 -#: templates/js/translated/stock.js:2038 templates/js/translated/stock.js:2187 +#: templates/js/translated/order.js:431 templates/js/translated/order.js:1095 +#: templates/js/translated/stock.js:1308 templates/js/translated/stock.js:2120 +#: templates/js/translated/stock.js:2269 msgid "Status" msgstr "" @@ -986,8 +988,8 @@ msgstr "" msgid "Item must be in stock" msgstr "" -#: build/serializers.py:348 order/models.py:316 order/serializers.py:233 -#: stock/models.py:381 stock/models.py:1103 stock/serializers.py:298 +#: build/serializers.py:348 order/models.py:316 order/serializers.py:242 +#: stock/models.py:371 stock/models.py:1093 stock/serializers.py:303 msgid "Quantity must be greater than zero" msgstr "" @@ -1031,7 +1033,7 @@ msgid "Edit Build" msgstr "" #: build/templates/build/build_base.html:56 -#: build/templates/build/build_base.html:207 build/views.py:56 +#: build/templates/build/build_base.html:215 build/views.py:56 msgid "Cancel Build" msgstr "" @@ -1041,93 +1043,95 @@ msgstr "" #: build/templates/build/build_base.html:64 #: build/templates/build/build_base.html:65 -#: build/templates/build/build_base.html:223 +#: build/templates/build/build_base.html:231 msgid "Complete Build" msgstr "" -#: build/templates/build/build_base.html:79 +#: build/templates/build/build_base.html:82 +msgid "Build Description" +msgstr "" + +#: build/templates/build/build_base.html:91 #, python-format msgid "This Build Order is allocated to Sales Order %(link)s" msgstr "" -#: build/templates/build/build_base.html:86 +#: build/templates/build/build_base.html:98 #, python-format msgid "This Build Order is a child of Build Order %(link)s" msgstr "" -#: build/templates/build/build_base.html:93 +#: build/templates/build/build_base.html:105 msgid "Build Order is ready to mark as completed" msgstr "" -#: build/templates/build/build_base.html:98 +#: build/templates/build/build_base.html:110 msgid "Build Order cannot be completed as outstanding outputs remain" msgstr "" -#: build/templates/build/build_base.html:103 +#: build/templates/build/build_base.html:115 msgid "Required build quantity has not yet been completed" msgstr "" -#: build/templates/build/build_base.html:108 +#: build/templates/build/build_base.html:120 msgid "Stock has not been fully allocated to this Build Order" msgstr "" -#: build/templates/build/build_base.html:138 +#: build/templates/build/build_base.html:146 #: build/templates/build/detail.html:132 -#: order/templates/order/order_base.html:140 -#: order/templates/order/sales_order_base.html:140 +#: order/templates/order/order_base.html:144 +#: order/templates/order/sales_order_base.html:141 #: report/templates/report/inventree_build_order_base.html:126 -#: templates/js/translated/build.js:1692 templates/js/translated/order.js:690 -#: templates/js/translated/order.js:1109 +#: templates/js/translated/build.js:1692 templates/js/translated/order.js:689 +#: templates/js/translated/order.js:1108 msgid "Target Date" msgstr "" -#: build/templates/build/build_base.html:143 +#: build/templates/build/build_base.html:151 #, python-format msgid "This build was due on %(target)s" msgstr "" -#: build/templates/build/build_base.html:143 -#: build/templates/build/build_base.html:188 -#: order/templates/order/order_base.html:81 -#: order/templates/order/order_base.html:102 -#: order/templates/order/sales_order_base.html:78 -#: order/templates/order/sales_order_base.html:107 +#: build/templates/build/build_base.html:151 +#: build/templates/build/build_base.html:196 +#: order/templates/order/order_base.html:98 +#: order/templates/order/sales_order_base.html:93 #: templates/js/translated/table_filters.js:294 #: templates/js/translated/table_filters.js:322 #: templates/js/translated/table_filters.js:339 msgid "Overdue" msgstr "" -#: build/templates/build/build_base.html:150 +#: build/templates/build/build_base.html:158 #: build/templates/build/detail.html:68 build/templates/build/detail.html:143 #: templates/js/translated/build.js:1641 #: templates/js/translated/table_filters.js:304 msgid "Completed" msgstr "" -#: build/templates/build/build_base.html:163 +#: build/templates/build/build_base.html:171 #: build/templates/build/detail.html:95 order/models.py:857 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: order/templates/order/sales_order_ship.html:25 #: report/templates/report/inventree_build_order_base.html:136 #: report/templates/report/inventree_so_report.html:77 -#: stock/templates/stock/item_base.html:280 -#: templates/js/translated/order.js:1051 +#: stock/templates/stock/item_base.html:308 +#: templates/js/translated/order.js:1050 msgid "Sales Order" msgstr "" -#: build/templates/build/build_base.html:170 +#: build/templates/build/build_base.html:178 #: build/templates/build/detail.html:109 #: report/templates/report/inventree_build_order_base.html:153 msgid "Issued By" msgstr "" -#: build/templates/build/build_base.html:215 +#: build/templates/build/build_base.html:223 msgid "Incomplete Outputs" msgstr "" -#: build/templates/build/build_base.html:216 +#: build/templates/build/build_base.html:224 msgid "Build Order cannot be completed as incomplete build outputs remain" msgstr "" @@ -1188,7 +1192,7 @@ msgid "Stock can be taken from any available location." msgstr "" #: build/templates/build/detail.html:50 order/models.py:811 stock/forms.py:150 -#: templates/js/translated/order.js:432 templates/js/translated/order.js:974 +#: templates/js/translated/order.js:432 templates/js/translated/order.js:973 msgid "Destination" msgstr "" @@ -1201,16 +1205,16 @@ msgid "Allocated Parts" msgstr "" #: build/templates/build/detail.html:81 -#: stock/templates/stock/item_base.html:304 -#: templates/js/translated/stock.js:1240 templates/js/translated/stock.js:2194 +#: stock/templates/stock/item_base.html:332 +#: templates/js/translated/stock.js:1322 templates/js/translated/stock.js:2276 #: templates/js/translated/table_filters.js:151 #: templates/js/translated/table_filters.js:233 msgid "Batch" msgstr "" #: build/templates/build/detail.html:127 -#: order/templates/order/order_base.html:127 -#: order/templates/order/sales_order_base.html:134 +#: order/templates/order/order_base.html:131 +#: order/templates/order/sales_order_base.html:135 #: templates/js/translated/build.js:1663 msgid "Created" msgstr "" @@ -1254,7 +1258,7 @@ msgstr "" #: build/templates/build/detail.html:185 #: company/templates/company/detail.html:38 #: company/templates/company/detail.html:85 order/views.py:509 -#: part/templates/part/category.html:166 +#: part/templates/part/category.html:173 msgid "Order Parts" msgstr "" @@ -1306,8 +1310,8 @@ msgstr "" #: order/templates/order/po_sidebar.html:9 #: order/templates/order/purchase_order_detail.html:60 #: order/templates/order/sales_order_detail.html:52 -#: order/templates/order/so_sidebar.html:9 part/templates/part/detail.html:300 -#: part/templates/part/part_sidebar.html:50 stock/templates/stock/item.html:95 +#: order/templates/order/so_sidebar.html:9 part/templates/part/detail.html:193 +#: part/templates/part/part_sidebar.html:48 stock/templates/stock/item.html:95 #: stock/templates/stock/stock_sidebar.html:19 msgid "Attachments" msgstr "" @@ -1323,7 +1327,7 @@ msgstr "" #: order/templates/order/purchase_order_detail.html:108 #: order/templates/order/sales_order_detail.html:72 #: order/templates/order/sales_order_detail.html:99 -#: part/templates/part/detail.html:227 stock/templates/stock/item.html:115 +#: part/templates/part/detail.html:120 stock/templates/stock/item.html:115 #: stock/templates/stock/item.html:205 msgid "Edit Notes" msgstr "" @@ -1336,7 +1340,7 @@ msgstr "" msgid "All untracked stock items have been allocated" msgstr "" -#: build/templates/build/index.html:18 part/templates/part/detail.html:407 +#: build/templates/build/index.html:18 part/templates/part/detail.html:300 msgid "New Build Order" msgstr "" @@ -1380,7 +1384,7 @@ msgstr "" msgid "Maximum output quantity is " msgstr "" -#: build/views.py:122 stock/serializers.py:356 stock/views.py:1290 +#: build/views.py:122 stock/serializers.py:361 stock/views.py:1290 msgid "Serial numbers already exist" msgstr "" @@ -1675,7 +1679,7 @@ msgid "Parts are trackable by default" msgstr "" #: common/models.py:745 part/models.py:920 -#: part/templates/part/part_base.html:144 +#: part/templates/part/part_base.html:147 #: templates/js/translated/table_filters.js:42 msgid "Virtual" msgstr "" @@ -2142,7 +2146,7 @@ msgstr "" #: common/models.py:1233 company/serializers.py:264 #: company/templates/company/supplier_part.html:256 -#: templates/js/translated/part.js:1620 +#: templates/js/translated/part.js:852 templates/js/translated/part.js:1801 msgid "Price" msgstr "" @@ -2206,7 +2210,7 @@ msgstr "" msgid "Description of the company" msgstr "" -#: company/models.py:112 company/templates/company/company_base.html:70 +#: company/models.py:112 company/templates/company/company_base.html:97 #: templates/js/translated/company.js:349 msgid "Website" msgstr "" @@ -2215,7 +2219,7 @@ msgstr "" msgid "Company website URL" msgstr "" -#: company/models.py:117 company/templates/company/company_base.html:88 +#: company/models.py:117 company/templates/company/company_base.html:115 msgid "Address" msgstr "" @@ -2231,7 +2235,7 @@ msgstr "" msgid "Contact phone number" msgstr "" -#: company/models.py:125 company/templates/company/company_base.html:102 +#: company/models.py:125 company/templates/company/company_base.html:129 #: templates/InvenTree/settings/user.html:47 msgid "Email" msgstr "" @@ -2240,7 +2244,7 @@ msgstr "" msgid "Contact email address" msgstr "" -#: company/models.py:128 company/templates/company/company_base.html:109 +#: company/models.py:128 company/templates/company/company_base.html:136 msgid "Contact" msgstr "" @@ -2281,7 +2285,7 @@ msgid "Does this company manufacture parts?" msgstr "" #: company/models.py:152 company/serializers.py:270 -#: company/templates/company/company_base.html:76 stock/serializers.py:172 +#: company/templates/company/company_base.html:103 stock/serializers.py:177 msgid "Currency" msgstr "" @@ -2289,8 +2293,8 @@ msgstr "" msgid "Default currency used for this company" msgstr "" -#: company/models.py:320 company/models.py:535 stock/models.py:484 -#: stock/templates/stock/item_base.html:224 +#: company/models.py:320 company/models.py:535 stock/models.py:474 +#: stock/templates/stock/item_base.html:135 msgid "Base Part" msgstr "" @@ -2298,29 +2302,29 @@ msgstr "" msgid "Select part" msgstr "" -#: company/models.py:335 company/templates/company/company_base.html:116 -#: company/templates/company/manufacturer_part.html:93 -#: company/templates/company/supplier_part.html:104 -#: stock/templates/stock/item_base.html:353 +#: company/models.py:335 company/templates/company/company_base.html:73 +#: company/templates/company/manufacturer_part.html:91 +#: company/templates/company/supplier_part.html:97 +#: stock/templates/stock/item_base.html:381 #: templates/js/translated/company.js:333 #: templates/js/translated/company.js:514 -#: templates/js/translated/company.js:797 templates/js/translated/part.js:229 +#: templates/js/translated/company.js:797 templates/js/translated/part.js:232 msgid "Manufacturer" msgstr "" -#: company/models.py:336 templates/js/translated/part.js:230 +#: company/models.py:336 templates/js/translated/part.js:233 msgid "Select manufacturer" msgstr "" -#: company/models.py:342 company/templates/company/manufacturer_part.html:97 -#: company/templates/company/supplier_part.html:112 +#: company/models.py:342 company/templates/company/manufacturer_part.html:96 +#: company/templates/company/supplier_part.html:105 #: templates/js/translated/company.js:530 -#: templates/js/translated/company.js:815 templates/js/translated/order.js:874 -#: templates/js/translated/part.js:240 +#: templates/js/translated/company.js:815 templates/js/translated/order.js:873 +#: templates/js/translated/part.js:243 templates/js/translated/part.js:832 msgid "MPN" msgstr "" -#: company/models.py:343 templates/js/translated/part.js:241 +#: company/models.py:343 templates/js/translated/part.js:244 msgid "Manufacturer Part Number" msgstr "" @@ -2335,7 +2339,7 @@ msgstr "" #: company/models.py:409 company/models.py:558 #: company/templates/company/manufacturer_part.html:6 #: company/templates/company/manufacturer_part.html:23 -#: stock/templates/stock/item_base.html:363 +#: stock/templates/stock/item_base.html:391 msgid "Manufacturer Part" msgstr "" @@ -2345,8 +2349,8 @@ msgstr "" #: company/models.py:422 #: report/templates/report/inventree_test_report_base.html:95 -#: stock/models.py:1867 templates/js/translated/company.js:644 -#: templates/js/translated/part.js:645 templates/js/translated/stock.js:878 +#: stock/models.py:1857 templates/js/translated/company.js:644 +#: templates/js/translated/part.js:652 templates/js/translated/stock.js:960 msgid "Value" msgstr "" @@ -2355,9 +2359,9 @@ msgid "Parameter value" msgstr "" #: company/models.py:429 part/models.py:882 part/models.py:2397 -#: part/templates/part/detail.html:59 +#: part/templates/part/part_base.html:288 #: templates/InvenTree/settings/settings.html:264 -#: templates/js/translated/company.js:650 templates/js/translated/part.js:651 +#: templates/js/translated/company.js:650 templates/js/translated/part.js:658 msgid "Units" msgstr "" @@ -2369,28 +2373,28 @@ msgstr "" msgid "Linked manufacturer part must reference the same base part" msgstr "" -#: company/models.py:545 company/templates/company/company_base.html:121 -#: company/templates/company/supplier_part.html:94 order/models.py:263 -#: order/templates/order/order_base.html:108 +#: company/models.py:545 company/templates/company/company_base.html:78 +#: company/templates/company/supplier_part.html:87 order/models.py:263 +#: order/templates/order/order_base.html:112 #: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:219 -#: part/bom.py:247 stock/templates/stock/item_base.html:370 +#: part/bom.py:247 stock/templates/stock/item_base.html:398 #: templates/js/translated/company.js:337 -#: templates/js/translated/company.js:771 templates/js/translated/order.js:660 -#: templates/js/translated/part.js:210 +#: templates/js/translated/company.js:771 templates/js/translated/order.js:667 +#: templates/js/translated/part.js:213 templates/js/translated/part.js:800 msgid "Supplier" msgstr "" -#: company/models.py:546 templates/js/translated/part.js:211 +#: company/models.py:546 templates/js/translated/part.js:214 msgid "Select supplier" msgstr "" -#: company/models.py:551 company/templates/company/supplier_part.html:98 -#: part/bom.py:220 part/bom.py:248 templates/js/translated/order.js:861 -#: templates/js/translated/part.js:221 +#: company/models.py:551 company/templates/company/supplier_part.html:91 +#: part/bom.py:220 part/bom.py:248 templates/js/translated/order.js:860 +#: templates/js/translated/part.js:224 templates/js/translated/part.js:818 msgid "SKU" msgstr "" -#: company/models.py:552 templates/js/translated/part.js:222 +#: company/models.py:552 templates/js/translated/part.js:225 msgid "Supplier stock keeping unit" msgstr "" @@ -2406,7 +2410,7 @@ msgstr "" msgid "Supplier part description" msgstr "" -#: company/models.py:576 company/templates/company/supplier_part.html:126 +#: company/models.py:576 company/templates/company/supplier_part.html:119 #: part/models.py:2588 report/templates/report/inventree_po_report.html:93 #: report/templates/report/inventree_so_report.html:93 msgid "Note" @@ -2420,9 +2424,9 @@ msgstr "" msgid "Minimum charge (e.g. stocking fee)" msgstr "" -#: company/models.py:582 company/templates/company/supplier_part.html:119 -#: stock/models.py:507 stock/templates/stock/item_base.html:311 -#: templates/js/translated/company.js:847 templates/js/translated/stock.js:1366 +#: company/models.py:582 company/templates/company/supplier_part.html:112 +#: stock/models.py:497 stock/templates/stock/item_base.html:339 +#: templates/js/translated/company.js:847 templates/js/translated/stock.js:1448 msgid "Packaging" msgstr "" @@ -2457,43 +2461,56 @@ msgstr "" msgid "Create Purchase Order" msgstr "" -#: company/templates/company/company_base.html:27 +#: company/templates/company/company_base.html:26 +msgid "Company actions" +msgstr "" + +#: company/templates/company/company_base.html:31 msgid "Edit company information" msgstr "" #: company/templates/company/company_base.html:32 -#: company/templates/company/company_base.html:148 +#: templates/js/translated/company.js:265 +msgid "Edit Company" +msgstr "" + +#: company/templates/company/company_base.html:36 +msgid "Delete company" +msgstr "" + +#: company/templates/company/company_base.html:37 +#: company/templates/company/company_base.html:159 msgid "Delete Company" msgstr "" -#: company/templates/company/company_base.html:48 +#: company/templates/company/company_base.html:53 #: part/templates/part/part_thumb.html:12 msgid "Upload new image" msgstr "" -#: company/templates/company/company_base.html:51 +#: company/templates/company/company_base.html:56 #: part/templates/part/part_thumb.html:14 msgid "Download image from URL" msgstr "" -#: company/templates/company/company_base.html:81 -msgid "Uses default currency" -msgstr "" - -#: company/templates/company/company_base.html:95 -msgid "Phone" -msgstr "" - -#: company/templates/company/company_base.html:126 order/models.py:567 -#: order/templates/order/sales_order_base.html:114 stock/models.py:525 -#: stock/models.py:526 stock/templates/stock/item_base.html:263 -#: templates/js/translated/company.js:329 templates/js/translated/order.js:1073 -#: templates/js/translated/stock.js:2002 +#: company/templates/company/company_base.html:83 order/models.py:567 +#: order/templates/order/sales_order_base.html:115 stock/models.py:515 +#: stock/models.py:516 stock/templates/stock/item_base.html:291 +#: templates/js/translated/company.js:329 templates/js/translated/order.js:1072 +#: templates/js/translated/stock.js:2084 msgid "Customer" msgstr "" -#: company/templates/company/company_base.html:194 -#: part/templates/part/part_base.html:342 +#: company/templates/company/company_base.html:108 +msgid "Uses default currency" +msgstr "" + +#: company/templates/company/company_base.html:122 +msgid "Phone" +msgstr "" + +#: company/templates/company/company_base.html:205 +#: part/templates/part/part_base.html:471 msgid "Upload Image" msgstr "" @@ -2509,23 +2526,23 @@ msgid "Create new supplier part" msgstr "" #: company/templates/company/detail.html:20 -#: company/templates/company/manufacturer_part.html:112 -#: part/templates/part/detail.html:440 +#: company/templates/company/manufacturer_part.html:118 +#: part/templates/part/detail.html:333 msgid "New Supplier Part" msgstr "" #: company/templates/company/detail.html:32 #: company/templates/company/detail.html:79 -#: company/templates/company/manufacturer_part.html:121 -#: company/templates/company/manufacturer_part.html:150 -#: part/templates/part/category.html:160 part/templates/part/detail.html:449 -#: part/templates/part/detail.html:477 +#: company/templates/company/manufacturer_part.html:127 +#: company/templates/company/manufacturer_part.html:156 +#: part/templates/part/category.html:167 part/templates/part/detail.html:342 +#: part/templates/part/detail.html:370 msgid "Options" msgstr "" #: company/templates/company/detail.html:37 #: company/templates/company/detail.html:84 -#: part/templates/part/category.html:166 +#: part/templates/part/category.html:173 msgid "Order parts" msgstr "" @@ -2547,7 +2564,7 @@ msgstr "" msgid "Create new manufacturer part" msgstr "" -#: company/templates/company/detail.html:67 part/templates/part/detail.html:467 +#: company/templates/company/detail.html:67 part/templates/part/detail.html:360 msgid "New Manufacturer Part" msgstr "" @@ -2561,7 +2578,7 @@ msgstr "" #: order/templates/order/order_base.html:13 #: order/templates/order/purchase_orders.html:8 #: order/templates/order/purchase_orders.html:12 -#: part/templates/part/detail.html:171 part/templates/part/part_sidebar.html:35 +#: part/templates/part/detail.html:64 part/templates/part/part_sidebar.html:33 #: templates/InvenTree/index.html:252 templates/InvenTree/search.html:203 #: templates/InvenTree/settings/sidebar.html:44 templates/navbar.html:45 #: users/models.py:45 @@ -2583,7 +2600,7 @@ msgstr "" #: order/templates/order/sales_order_base.html:13 #: order/templates/order/sales_orders.html:8 #: order/templates/order/sales_orders.html:15 -#: part/templates/part/detail.html:194 part/templates/part/part_sidebar.html:39 +#: part/templates/part/detail.html:87 part/templates/part/part_sidebar.html:37 #: templates/InvenTree/index.html:283 templates/InvenTree/search.html:223 #: templates/InvenTree/settings/sidebar.html:46 templates/navbar.html:56 #: users/models.py:46 @@ -2610,14 +2627,14 @@ msgid "Company Notes" msgstr "" #: company/templates/company/detail.html:383 -#: company/templates/company/manufacturer_part.html:209 -#: part/templates/part/detail.html:520 +#: company/templates/company/manufacturer_part.html:215 +#: part/templates/part/detail.html:413 msgid "Delete Supplier Parts?" msgstr "" #: company/templates/company/detail.html:384 -#: company/templates/company/manufacturer_part.html:210 -#: part/templates/part/detail.html:521 +#: company/templates/company/manufacturer_part.html:216 +#: part/templates/part/detail.html:414 msgid "All selected supplier parts will be deleted" msgstr "" @@ -2634,7 +2651,7 @@ msgstr "" #: company/templates/company/manufacturer_part.html:35 #: company/templates/company/supplier_part.html:34 #: company/templates/company/supplier_part.html:159 -#: part/templates/part/detail.html:174 part/templates/part/part_base.html:76 +#: part/templates/part/detail.html:67 part/templates/part/part_base.html:76 msgid "Order part" msgstr "" @@ -2648,60 +2665,60 @@ msgstr "" msgid "Delete manufacturer part" msgstr "" -#: company/templates/company/manufacturer_part.html:70 -#: company/templates/company/supplier_part.html:71 +#: company/templates/company/manufacturer_part.html:66 +#: company/templates/company/supplier_part.html:63 msgid "Internal Part" msgstr "" -#: company/templates/company/manufacturer_part.html:108 +#: company/templates/company/manufacturer_part.html:114 #: company/templates/company/supplier_part.html:15 company/views.py:49 -#: part/templates/part/part_sidebar.html:33 part/templates/part/prices.html:163 +#: part/templates/part/part_sidebar.html:31 part/templates/part/prices.html:163 #: templates/InvenTree/search.html:194 templates/navbar.html:43 msgid "Suppliers" msgstr "" -#: company/templates/company/manufacturer_part.html:123 -#: part/templates/part/detail.html:451 +#: company/templates/company/manufacturer_part.html:129 +#: part/templates/part/detail.html:344 msgid "Delete supplier parts" msgstr "" -#: company/templates/company/manufacturer_part.html:123 -#: company/templates/company/manufacturer_part.html:152 -#: company/templates/company/manufacturer_part.html:248 -#: part/templates/part/detail.html:451 part/templates/part/detail.html:479 +#: company/templates/company/manufacturer_part.html:129 +#: company/templates/company/manufacturer_part.html:158 +#: company/templates/company/manufacturer_part.html:254 +#: part/templates/part/detail.html:344 part/templates/part/detail.html:372 #: templates/js/translated/company.js:425 templates/js/translated/helpers.js:31 #: users/models.py:204 msgid "Delete" msgstr "" -#: company/templates/company/manufacturer_part.html:137 +#: company/templates/company/manufacturer_part.html:143 #: company/templates/company/manufacturer_part_sidebar.html:5 #: part/templates/part/category_sidebar.html:17 -#: part/templates/part/detail.html:277 part/templates/part/part_sidebar.html:10 +#: part/templates/part/detail.html:170 part/templates/part/part_sidebar.html:8 msgid "Parameters" msgstr "" -#: company/templates/company/manufacturer_part.html:141 -#: part/templates/part/detail.html:282 +#: company/templates/company/manufacturer_part.html:147 +#: part/templates/part/detail.html:175 #: templates/InvenTree/settings/category.html:12 #: templates/InvenTree/settings/part.html:65 msgid "New Parameter" msgstr "" -#: company/templates/company/manufacturer_part.html:152 +#: company/templates/company/manufacturer_part.html:158 msgid "Delete parameters" msgstr "" -#: company/templates/company/manufacturer_part.html:185 -#: part/templates/part/detail.html:976 +#: company/templates/company/manufacturer_part.html:191 +#: part/templates/part/detail.html:867 msgid "Add Parameter" msgstr "" -#: company/templates/company/manufacturer_part.html:233 +#: company/templates/company/manufacturer_part.html:239 msgid "Selected parameters will be deleted" msgstr "" -#: company/templates/company/manufacturer_part.html:245 +#: company/templates/company/manufacturer_part.html:251 msgid "Delete Parameters" msgstr "" @@ -2722,9 +2739,9 @@ msgid "Assigned Stock Items" msgstr "" #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 stock/models.py:492 -#: stock/templates/stock/item_base.html:375 -#: templates/js/translated/company.js:787 templates/js/translated/stock.js:1323 +#: company/templates/company/supplier_part.html:24 stock/models.py:482 +#: stock/templates/stock/item_base.html:403 +#: templates/js/translated/company.js:787 templates/js/translated/stock.js:1405 msgid "Supplier Part" msgstr "" @@ -2744,13 +2761,13 @@ msgid "Supplier Part Stock" msgstr "" #: company/templates/company/supplier_part.html:141 -#: part/templates/part/detail.html:127 stock/templates/stock/location.html:147 +#: part/templates/part/detail.html:20 stock/templates/stock/location.html:162 msgid "Create new stock item" msgstr "" #: company/templates/company/supplier_part.html:142 -#: part/templates/part/detail.html:128 stock/templates/stock/location.html:148 -#: templates/js/translated/stock.js:354 +#: part/templates/part/detail.html:21 stock/templates/stock/location.html:163 +#: templates/js/translated/stock.js:355 msgid "New Stock Item" msgstr "" @@ -2760,7 +2777,7 @@ msgid "Supplier Part Orders" msgstr "" #: company/templates/company/supplier_part.html:160 -#: part/templates/part/detail.html:175 +#: part/templates/part/detail.html:68 msgid "Order Part" msgstr "" @@ -2796,15 +2813,15 @@ msgid "Delete price break" msgstr "" #: company/templates/company/supplier_part_navbar.html:15 -#: part/templates/part/part_sidebar.html:16 +#: part/templates/part/part_sidebar.html:14 #: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:14 #: stock/templates/stock/stock_app_base.html:10 #: templates/InvenTree/search.html:156 #: templates/InvenTree/settings/sidebar.html:40 -#: templates/js/translated/bom.js:216 templates/js/translated/part.js:427 -#: templates/js/translated/part.js:562 templates/js/translated/part.js:878 -#: templates/js/translated/part.js:1039 templates/js/translated/stock.js:509 -#: templates/js/translated/stock.js:1162 templates/navbar.html:26 +#: templates/js/translated/bom.js:216 templates/js/translated/part.js:434 +#: templates/js/translated/part.js:569 templates/js/translated/part.js:1059 +#: templates/js/translated/part.js:1220 templates/js/translated/stock.js:591 +#: templates/js/translated/stock.js:1244 templates/navbar.html:26 msgid "Stock" msgstr "" @@ -2818,16 +2835,16 @@ msgid "Supplier Part Pricing" msgstr "" #: company/templates/company/supplier_part_navbar.html:29 -#: part/templates/part/part_sidebar.html:30 +#: part/templates/part/part_sidebar.html:28 msgid "Pricing" msgstr "" #: company/templates/company/supplier_part_sidebar.html:5 -#: stock/templates/stock/location.html:118 -#: stock/templates/stock/location.html:132 -#: stock/templates/stock/location.html:144 +#: stock/templates/stock/location.html:133 +#: stock/templates/stock/location.html:147 +#: stock/templates/stock/location.html:159 #: stock/templates/stock/location_sidebar.html:7 -#: templates/InvenTree/search.html:158 templates/js/translated/stock.js:1901 +#: templates/InvenTree/search.html:158 templates/js/translated/stock.js:1983 #: templates/stats.html:93 templates/stats.html:102 users/models.py:43 msgid "Stock Items" msgstr "" @@ -2947,7 +2964,7 @@ msgstr "" msgid "Place order" msgstr "" -#: order/forms.py:37 order/templates/order/order_base.html:59 +#: order/forms.py:37 order/templates/order/order_base.html:60 msgid "Mark order as complete" msgstr "" @@ -3000,8 +3017,8 @@ msgstr "" msgid "Company from which the items are being ordered" msgstr "" -#: order/models.py:267 order/templates/order/order_base.html:114 -#: templates/js/translated/order.js:669 +#: order/models.py:267 order/templates/order/order_base.html:118 +#: templates/js/translated/order.js:676 msgid "Supplier Reference" msgstr "" @@ -3061,7 +3078,7 @@ msgstr "" msgid "Target date for order completion. Order will be overdue after this date." msgstr "" -#: order/models.py:582 templates/js/translated/order.js:1114 +#: order/models.py:582 templates/js/translated/order.js:1113 msgid "Shipment Date" msgstr "" @@ -3086,16 +3103,16 @@ msgid "Line item notes" msgstr "" #: order/models.py:768 order/models.py:856 -#: templates/js/translated/order.js:1166 +#: templates/js/translated/order.js:1165 msgid "Order" msgstr "" #: order/models.py:769 order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_po_report.html:77 -#: stock/templates/stock/item_base.html:325 -#: templates/js/translated/order.js:638 templates/js/translated/stock.js:1300 -#: templates/js/translated/stock.js:1983 +#: stock/templates/stock/item_base.html:353 +#: templates/js/translated/order.js:638 templates/js/translated/part.js:775 +#: templates/js/translated/stock.js:1382 templates/js/translated/stock.js:2065 msgid "Purchase Order" msgstr "" @@ -3103,9 +3120,10 @@ msgstr "" msgid "Supplier part" msgstr "" -#: order/models.py:797 order/templates/order/order_base.html:147 -#: order/templates/order/sales_order_base.html:154 -#: templates/js/translated/order.js:429 templates/js/translated/order.js:954 +#: order/models.py:797 order/templates/order/order_base.html:151 +#: order/templates/order/sales_order_base.html:155 +#: templates/js/translated/order.js:429 templates/js/translated/order.js:953 +#: templates/js/translated/part.js:847 templates/js/translated/part.js:873 msgid "Received" msgstr "" @@ -3113,9 +3131,9 @@ msgstr "" msgid "Number of items received" msgstr "" -#: order/models.py:805 part/templates/part/prices.html:176 stock/models.py:619 -#: stock/serializers.py:163 stock/templates/stock/item_base.html:332 -#: templates/js/translated/stock.js:1354 +#: order/models.py:805 part/templates/part/prices.html:176 stock/models.py:609 +#: stock/serializers.py:168 stock/templates/stock/item_base.html:360 +#: templates/js/translated/stock.js:1436 msgid "Purchase Price" msgstr "" @@ -3176,47 +3194,47 @@ msgstr "" msgid "Enter stock allocation quantity" msgstr "" -#: order/serializers.py:169 +#: order/serializers.py:175 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:204 +#: order/serializers.py:213 msgid "Line Item" msgstr "" -#: order/serializers.py:210 +#: order/serializers.py:219 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:220 order/serializers.py:288 +#: order/serializers.py:229 order/serializers.py:297 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:244 +#: order/serializers.py:253 msgid "Barcode Hash" msgstr "" -#: order/serializers.py:245 +#: order/serializers.py:254 msgid "Unique identifier field" msgstr "" -#: order/serializers.py:262 +#: order/serializers.py:271 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:300 +#: order/serializers.py:309 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:317 +#: order/serializers.py:326 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:328 +#: order/serializers.py:337 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:569 +#: order/serializers.py:578 msgid "Sale price currency" msgstr "" @@ -3248,22 +3266,36 @@ msgstr "" msgid "Receive items" msgstr "" -#: order/templates/order/order_base.html:93 -#: order/templates/order/sales_order_base.html:98 +#: order/templates/order/order_base.html:58 +#: order/templates/order/purchase_order_detail.html:31 +msgid "Receive Items" +msgstr "" + +#: order/templates/order/order_base.html:62 order/views.py:185 +msgid "Complete Order" +msgstr "" + +#: order/templates/order/order_base.html:84 +#: order/templates/order/sales_order_base.html:79 msgid "Order Reference" msgstr "" -#: order/templates/order/order_base.html:98 -#: order/templates/order/sales_order_base.html:103 +#: order/templates/order/order_base.html:89 +#: order/templates/order/sales_order_base.html:84 +msgid "Order Description" +msgstr "" + +#: order/templates/order/order_base.html:94 +#: order/templates/order/sales_order_base.html:89 msgid "Order Status" msgstr "" -#: order/templates/order/order_base.html:133 +#: order/templates/order/order_base.html:137 #: report/templates/report/inventree_build_order_base.html:122 msgid "Issued" msgstr "" -#: order/templates/order/order_base.html:203 +#: order/templates/order/order_base.html:207 msgid "Edit Purchase Order" msgstr "" @@ -3421,7 +3453,7 @@ msgid "Select existing purchase orders, or create new orders." msgstr "" #: order/templates/order/order_wizard/select_pos.html:31 -#: templates/js/translated/order.js:695 templates/js/translated/order.js:1119 +#: templates/js/translated/order.js:694 templates/js/translated/order.js:1118 msgid "Items" msgstr "" @@ -3465,10 +3497,6 @@ msgstr "" msgid "Receive selected items" msgstr "" -#: order/templates/order/purchase_order_detail.html:31 -msgid "Receive Items" -msgstr "" - #: order/templates/order/purchase_order_detail.html:50 msgid "Received Items" msgstr "" @@ -3496,16 +3524,16 @@ msgstr "" msgid "Ship Order" msgstr "" -#: order/templates/order/sales_order_base.html:86 +#: order/templates/order/sales_order_base.html:102 msgid "This Sales Order has not been fully allocated" msgstr "" -#: order/templates/order/sales_order_base.html:121 -#: templates/js/translated/order.js:1086 +#: order/templates/order/sales_order_base.html:122 +#: templates/js/translated/order.js:1085 msgid "Customer Reference" msgstr "" -#: order/templates/order/sales_order_base.html:194 +#: order/templates/order/sales_order_base.html:195 msgid "Edit Sales Order" msgstr "" @@ -3576,10 +3604,6 @@ msgstr "" msgid "Purchase order issued" msgstr "" -#: order/views.py:185 -msgid "Complete Order" -msgstr "" - #: order/views.py:201 msgid "Confirm order completion" msgstr "" @@ -3672,11 +3696,11 @@ msgid "This field is required" msgstr "" #: part/bom.py:125 part/models.py:81 part/models.py:816 -#: part/templates/part/category.html:90 part/templates/part/detail.html:104 +#: part/templates/part/category.html:104 part/templates/part/part_base.html:338 msgid "Default Location" msgstr "" -#: part/bom.py:126 part/templates/part/part_base.html:167 +#: part/bom.py:126 part/templates/part/part_base.html:185 msgid "Available Stock" msgstr "" @@ -3793,19 +3817,19 @@ msgstr "" msgid "Part Category" msgstr "" -#: part/models.py:96 part/templates/part/category.html:117 +#: part/models.py:96 part/templates/part/category.html:124 #: templates/InvenTree/search.html:101 templates/stats.html:84 #: users/models.py:40 msgid "Part Categories" msgstr "" #: part/models.py:358 part/templates/part/cat_link.html:3 -#: part/templates/part/category.html:13 part/templates/part/category.html:122 -#: part/templates/part/category.html:142 +#: part/templates/part/category.html:13 part/templates/part/category.html:129 +#: part/templates/part/category.html:149 #: part/templates/part/category_sidebar.html:9 #: templates/InvenTree/index.html:85 templates/InvenTree/search.html:88 #: templates/InvenTree/settings/sidebar.html:36 -#: templates/js/translated/part.js:1416 templates/navbar.html:19 +#: templates/js/translated/part.js:1597 templates/navbar.html:19 #: templates/stats.html:80 templates/stats.html:89 users/models.py:41 msgid "Parts" msgstr "" @@ -3859,8 +3883,8 @@ msgstr "" msgid "Part description" msgstr "" -#: part/models.py:770 part/templates/part/category.html:97 -#: part/templates/part/detail.html:73 +#: part/models.py:770 part/templates/part/category.html:82 +#: part/templates/part/part_base.html:302 msgid "Keywords" msgstr "" @@ -3869,9 +3893,10 @@ msgid "Part keywords to improve visibility in search results" msgstr "" #: part/models.py:778 part/models.py:2223 part/models.py:2472 -#: part/templates/part/detail.html:36 part/templates/part/set_category.html:15 +#: part/templates/part/part_base.html:265 +#: part/templates/part/set_category.html:15 #: templates/InvenTree/settings/settings.html:163 -#: templates/js/translated/part.js:1021 +#: templates/js/translated/part.js:1202 msgid "Category" msgstr "" @@ -3879,9 +3904,9 @@ msgstr "" msgid "Part category" msgstr "" -#: part/models.py:784 part/templates/part/detail.html:45 -#: templates/js/translated/part.js:550 templates/js/translated/part.js:974 -#: templates/js/translated/stock.js:1134 +#: part/models.py:784 part/templates/part/part_base.html:274 +#: templates/js/translated/part.js:557 templates/js/translated/part.js:1155 +#: templates/js/translated/stock.js:1216 msgid "IPN" msgstr "" @@ -3893,8 +3918,8 @@ msgstr "" msgid "Part revision or version number" msgstr "" -#: part/models.py:792 part/templates/part/detail.html:52 report/models.py:200 -#: templates/js/translated/part.js:554 +#: part/models.py:792 part/templates/part/part_base.html:281 +#: report/models.py:200 templates/js/translated/part.js:561 msgid "Revision" msgstr "" @@ -3902,7 +3927,7 @@ msgstr "" msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:861 part/templates/part/detail.html:113 +#: part/models.py:861 part/templates/part/part_base.html:347 msgid "Default Supplier" msgstr "" @@ -3918,7 +3943,7 @@ msgstr "" msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:875 part/templates/part/part_base.html:178 +#: part/models.py:875 part/templates/part/part_base.html:196 msgid "Minimum Stock" msgstr "" @@ -4001,8 +4026,8 @@ msgstr "" msgid "Test with this name already exists for this part" msgstr "" -#: part/models.py:2310 templates/js/translated/part.js:1467 -#: templates/js/translated/stock.js:858 +#: part/models.py:2310 templates/js/translated/part.js:1648 +#: templates/js/translated/stock.js:940 msgid "Test Name" msgstr "" @@ -4018,7 +4043,7 @@ msgstr "" msgid "Enter description for this test" msgstr "" -#: part/models.py:2322 templates/js/translated/part.js:1476 +#: part/models.py:2322 templates/js/translated/part.js:1657 #: templates/js/translated/table_filters.js:276 msgid "Required" msgstr "" @@ -4027,7 +4052,7 @@ msgstr "" msgid "Is this test required to pass?" msgstr "" -#: part/models.py:2328 templates/js/translated/part.js:1484 +#: part/models.py:2328 templates/js/translated/part.js:1665 msgid "Requires Value" msgstr "" @@ -4035,7 +4060,7 @@ msgstr "" msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:2334 templates/js/translated/part.js:1491 +#: part/models.py:2334 templates/js/translated/part.js:1672 msgid "Requires Attachment" msgstr "" @@ -4150,7 +4175,7 @@ msgstr "" msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:2686 stock/models.py:371 +#: part/models.py:2686 stock/models.py:361 msgid "Quantity must be integer value for trackable parts" msgstr "" @@ -4213,7 +4238,7 @@ msgstr "" msgid "The BOM for %(part)s has not been validated." msgstr "" -#: part/templates/part/bom.html:30 part/templates/part/detail.html:357 +#: part/templates/part/bom.html:30 part/templates/part/detail.html:250 msgid "BOM actions" msgstr "" @@ -4298,68 +4323,64 @@ msgstr "" msgid "New Category" msgstr "" -#: part/templates/part/category.html:67 -msgid "Top level part category" -msgstr "" - -#: part/templates/part/category.html:79 +#: part/templates/part/category.html:76 part/templates/part/category.html:89 msgid "Category Path" msgstr "" -#: part/templates/part/category.html:84 -msgid "Category Description" +#: part/templates/part/category.html:90 +msgid "Top level part category" msgstr "" -#: part/templates/part/category.html:103 part/templates/part/category.html:194 +#: part/templates/part/category.html:110 part/templates/part/category.html:201 #: part/templates/part/category_sidebar.html:7 msgid "Subcategories" msgstr "" -#: part/templates/part/category.html:108 +#: part/templates/part/category.html:115 msgid "Parts (Including subcategories)" msgstr "" -#: part/templates/part/category.html:145 +#: part/templates/part/category.html:152 msgid "Export Part Data" msgstr "" -#: part/templates/part/category.html:146 part/templates/part/category.html:170 +#: part/templates/part/category.html:153 part/templates/part/category.html:177 msgid "Export" msgstr "" -#: part/templates/part/category.html:149 +#: part/templates/part/category.html:156 msgid "Create new part" msgstr "" -#: part/templates/part/category.html:150 templates/js/translated/bom.js:40 +#: part/templates/part/category.html:157 templates/js/translated/bom.js:40 msgid "New Part" msgstr "" -#: part/templates/part/category.html:164 +#: part/templates/part/category.html:171 msgid "Set category" msgstr "" -#: part/templates/part/category.html:164 +#: part/templates/part/category.html:171 msgid "Set Category" msgstr "" -#: part/templates/part/category.html:168 +#: part/templates/part/category.html:175 msgid "Print Labels" msgstr "" -#: part/templates/part/category.html:170 +#: part/templates/part/category.html:177 msgid "Export Data" msgstr "" -#: part/templates/part/category.html:184 +#: part/templates/part/category.html:191 msgid "Part Parameters" msgstr "" -#: part/templates/part/category.html:261 +#: part/templates/part/category.html:268 msgid "Create Part Category" msgstr "" -#: part/templates/part/category.html:288 +#: part/templates/part/category.html:295 msgid "Create Part" msgstr "" @@ -4402,7 +4423,7 @@ msgstr "" msgid "Import Parts" msgstr "" -#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:366 +#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:373 msgid "Duplicate Part" msgstr "" @@ -4426,167 +4447,155 @@ msgstr "" msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)" msgstr "" -#: part/templates/part/detail.html:16 -msgid "Part Details" -msgstr "" - -#: part/templates/part/detail.html:66 -msgid "Minimum stock level" -msgstr "" - -#: part/templates/part/detail.html:97 -msgid "Latest Serial Number" -msgstr "" - -#: part/templates/part/detail.html:124 +#: part/templates/part/detail.html:17 msgid "Part Stock" msgstr "" -#: part/templates/part/detail.html:136 +#: part/templates/part/detail.html:29 #, python-format msgid "Showing stock for all variants of %(full_name)s" msgstr "" -#: part/templates/part/detail.html:146 +#: part/templates/part/detail.html:39 msgid "Part Test Templates" msgstr "" -#: part/templates/part/detail.html:151 +#: part/templates/part/detail.html:44 msgid "Add Test Template" msgstr "" -#: part/templates/part/detail.html:208 +#: part/templates/part/detail.html:101 msgid "Sales Order Allocations" msgstr "" -#: part/templates/part/detail.html:249 +#: part/templates/part/detail.html:142 msgid "Part Variants" msgstr "" -#: part/templates/part/detail.html:253 +#: part/templates/part/detail.html:146 msgid "Create new variant" msgstr "" -#: part/templates/part/detail.html:254 +#: part/templates/part/detail.html:147 msgid "New Variant" msgstr "" -#: part/templates/part/detail.html:281 +#: part/templates/part/detail.html:174 msgid "Add new parameter" msgstr "" -#: part/templates/part/detail.html:315 part/templates/part/part_sidebar.html:47 +#: part/templates/part/detail.html:208 part/templates/part/part_sidebar.html:45 msgid "Related Parts" msgstr "" -#: part/templates/part/detail.html:319 part/templates/part/detail.html:320 +#: part/templates/part/detail.html:212 part/templates/part/detail.html:213 msgid "Add Related" msgstr "" -#: part/templates/part/detail.html:340 part/templates/part/part_sidebar.html:19 +#: part/templates/part/detail.html:233 part/templates/part/part_sidebar.html:17 msgid "Bill of Materials" msgstr "" -#: part/templates/part/detail.html:345 +#: part/templates/part/detail.html:238 msgid "Export actions" msgstr "" -#: part/templates/part/detail.html:349 +#: part/templates/part/detail.html:242 msgid "Export BOM" msgstr "" -#: part/templates/part/detail.html:351 +#: part/templates/part/detail.html:244 msgid "Print BOM Report" msgstr "" -#: part/templates/part/detail.html:361 +#: part/templates/part/detail.html:254 msgid "Upload BOM" msgstr "" -#: part/templates/part/detail.html:363 templates/js/translated/part.js:267 +#: part/templates/part/detail.html:256 templates/js/translated/part.js:270 msgid "Copy BOM" msgstr "" -#: part/templates/part/detail.html:365 part/views.py:755 +#: part/templates/part/detail.html:258 part/views.py:755 msgid "Validate BOM" msgstr "" -#: part/templates/part/detail.html:370 +#: part/templates/part/detail.html:263 msgid "New BOM Item" msgstr "" -#: part/templates/part/detail.html:371 +#: part/templates/part/detail.html:264 msgid "Add BOM Item" msgstr "" -#: part/templates/part/detail.html:384 +#: part/templates/part/detail.html:277 msgid "Assemblies" msgstr "" -#: part/templates/part/detail.html:401 +#: part/templates/part/detail.html:294 msgid "Part Builds" msgstr "" -#: part/templates/part/detail.html:426 +#: part/templates/part/detail.html:319 msgid "Build Order Allocations" msgstr "" -#: part/templates/part/detail.html:436 +#: part/templates/part/detail.html:329 msgid "Part Suppliers" msgstr "" -#: part/templates/part/detail.html:463 +#: part/templates/part/detail.html:356 msgid "Part Manufacturers" msgstr "" -#: part/templates/part/detail.html:479 +#: part/templates/part/detail.html:372 msgid "Delete manufacturer parts" msgstr "" -#: part/templates/part/detail.html:660 +#: part/templates/part/detail.html:553 msgid "Delete selected BOM items?" msgstr "" -#: part/templates/part/detail.html:661 +#: part/templates/part/detail.html:554 msgid "All selected BOM items will be deleted" msgstr "" -#: part/templates/part/detail.html:712 +#: part/templates/part/detail.html:605 msgid "Create BOM Item" msgstr "" -#: part/templates/part/detail.html:764 +#: part/templates/part/detail.html:657 msgid "Related Part" msgstr "" -#: part/templates/part/detail.html:772 +#: part/templates/part/detail.html:665 msgid "Add Related Part" msgstr "" -#: part/templates/part/detail.html:869 +#: part/templates/part/detail.html:760 msgid "Add Test Result Template" msgstr "" -#: part/templates/part/detail.html:926 +#: part/templates/part/detail.html:817 msgid "Edit Part Notes" msgstr "" -#: part/templates/part/detail.html:1039 +#: part/templates/part/detail.html:930 #, python-format msgid "Purchase Unit Price - %(currency)s" msgstr "" -#: part/templates/part/detail.html:1051 +#: part/templates/part/detail.html:942 #, python-format msgid "Unit Price-Cost Difference - %(currency)s" msgstr "" -#: part/templates/part/detail.html:1063 +#: part/templates/part/detail.html:954 #, python-format msgid "Supplier Unit Cost - %(currency)s" msgstr "" -#: part/templates/part/detail.html:1152 +#: part/templates/part/detail.html:1043 #, python-format msgid "Unit Price - %(currency)s" msgstr "" @@ -4668,86 +4677,108 @@ msgstr "" msgid "Delete part" msgstr "" -#: part/templates/part/part_base.html:109 +#: part/templates/part/part_base.html:112 msgid "Part is a template part (variants can be made from this part)" msgstr "" -#: part/templates/part/part_base.html:113 +#: part/templates/part/part_base.html:116 msgid "Part can be assembled from other parts" msgstr "" -#: part/templates/part/part_base.html:117 +#: part/templates/part/part_base.html:120 msgid "Part can be used in assemblies" msgstr "" -#: part/templates/part/part_base.html:121 +#: part/templates/part/part_base.html:124 msgid "Part stock is tracked by serial number" msgstr "" -#: part/templates/part/part_base.html:125 +#: part/templates/part/part_base.html:128 msgid "Part can be purchased from external suppliers" msgstr "" -#: part/templates/part/part_base.html:129 +#: part/templates/part/part_base.html:132 msgid "Part can be sold to customers" msgstr "" -#: part/templates/part/part_base.html:135 -#: part/templates/part/part_base.html:143 +#: part/templates/part/part_base.html:138 +#: part/templates/part/part_base.html:146 msgid "Part is virtual (not a physical part)" msgstr "" -#: part/templates/part/part_base.html:136 +#: part/templates/part/part_base.html:139 #: templates/js/translated/company.js:505 #: templates/js/translated/company.js:762 #: templates/js/translated/model_renderers.js:175 -#: templates/js/translated/part.js:465 templates/js/translated/part.js:542 +#: templates/js/translated/part.js:472 templates/js/translated/part.js:549 msgid "Inactive" msgstr "" -#: part/templates/part/part_base.html:155 +#: part/templates/part/part_base.html:156 +#: part/templates/part/part_base.html:579 +msgid "Show Part Details" +msgstr "" + +#: part/templates/part/part_base.html:173 #, python-format msgid "This part is a variant of %(link)s" msgstr "" -#: part/templates/part/part_base.html:172 templates/js/translated/order.js:1546 +#: part/templates/part/part_base.html:190 templates/js/translated/order.js:1545 #: templates/js/translated/table_filters.js:188 msgid "In Stock" msgstr "" -#: part/templates/part/part_base.html:185 templates/js/translated/part.js:1054 +#: part/templates/part/part_base.html:203 templates/js/translated/part.js:1235 msgid "On Order" msgstr "" -#: part/templates/part/part_base.html:192 templates/InvenTree/index.html:178 +#: part/templates/part/part_base.html:210 templates/InvenTree/index.html:178 msgid "Required for Build Orders" msgstr "" -#: part/templates/part/part_base.html:199 +#: part/templates/part/part_base.html:217 msgid "Required for Sales Orders" msgstr "" -#: part/templates/part/part_base.html:206 +#: part/templates/part/part_base.html:224 msgid "Allocated to Orders" msgstr "" -#: part/templates/part/part_base.html:221 templates/js/translated/bom.js:566 +#: part/templates/part/part_base.html:239 templates/js/translated/bom.js:566 msgid "Can Build" msgstr "" -#: part/templates/part/part_base.html:227 templates/js/translated/part.js:885 -#: templates/js/translated/part.js:1058 +#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1066 +#: templates/js/translated/part.js:1239 msgid "Building" msgstr "" -#: part/templates/part/part_base.html:320 part/templates/part/prices.html:144 +#: part/templates/part/part_base.html:295 +msgid "Minimum stock level" +msgstr "" + +#: part/templates/part/part_base.html:324 +msgid "Latest Serial Number" +msgstr "" + +#: part/templates/part/part_base.html:328 +#: stock/templates/stock/item_base.html:159 +msgid "Search for serial number" +msgstr "" + +#: part/templates/part/part_base.html:449 part/templates/part/prices.html:144 msgid "Calculate" msgstr "" -#: part/templates/part/part_base.html:363 +#: part/templates/part/part_base.html:492 msgid "No matching images found" msgstr "" +#: part/templates/part/part_base.html:573 +msgid "Hide Part Details" +msgstr "" + #: part/templates/part/part_pricing.html:22 part/templates/part/prices.html:21 msgid "Supplier Pricing" msgstr "" @@ -4805,20 +4836,15 @@ msgstr "" msgid "No pricing information is available for this part." msgstr "" -#: part/templates/part/part_sidebar.html:8 -#: templates/js/translated/stock.js:1949 -msgid "Details" -msgstr "" - -#: part/templates/part/part_sidebar.html:13 +#: part/templates/part/part_sidebar.html:11 msgid "Variants" msgstr "" -#: part/templates/part/part_sidebar.html:27 +#: part/templates/part/part_sidebar.html:25 msgid "Used In" msgstr "" -#: part/templates/part/part_sidebar.html:43 +#: part/templates/part/part_sidebar.html:41 msgid "Test Templates" msgstr "" @@ -4934,8 +4960,8 @@ msgid "Set category for the following parts" msgstr "" #: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:476 -#: templates/js/translated/part.js:429 templates/js/translated/part.js:875 -#: templates/js/translated/part.js:1062 +#: templates/js/translated/part.js:436 templates/js/translated/part.js:1056 +#: templates/js/translated/part.js:1243 msgid "No Stock" msgstr "" @@ -5037,7 +5063,7 @@ msgstr "" msgid "Delete Part Parameter Template" msgstr "" -#: part/views.py:1489 templates/js/translated/part.js:310 +#: part/views.py:1489 templates/js/translated/part.js:313 msgid "Edit Part Category" msgstr "" @@ -5171,11 +5197,12 @@ msgid "Stock Item Test Report" msgstr "" #: report/templates/report/inventree_test_report_base.html:79 -#: stock/models.py:530 stock/templates/stock/item_base.html:238 +#: stock/models.py:520 stock/templates/stock/item_base.html:149 #: templates/js/translated/build.js:233 templates/js/translated/build.js:637 #: templates/js/translated/build.js:1013 #: templates/js/translated/model_renderers.js:95 -#: templates/js/translated/order.js:1288 templates/js/translated/order.js:1377 +#: templates/js/translated/order.js:1287 templates/js/translated/order.js:1376 +#: templates/js/translated/stock.js:410 msgid "Serial Number" msgstr "" @@ -5184,17 +5211,17 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:93 -#: stock/models.py:1855 +#: stock/models.py:1845 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:94 -#: stock/models.py:1861 +#: stock/models.py:1851 msgid "Result" msgstr "" #: report/templates/report/inventree_test_report_base.html:97 -#: templates/js/translated/order.js:685 templates/js/translated/stock.js:1917 +#: templates/js/translated/order.js:684 templates/js/translated/stock.js:1999 msgid "Date" msgstr "" @@ -5212,7 +5239,7 @@ msgid "Installed Items" msgstr "" #: report/templates/report/inventree_test_report_base.html:137 -#: templates/js/translated/stock.js:2177 +#: templates/js/translated/stock.js:2259 msgid "Serial" msgstr "" @@ -5220,9 +5247,9 @@ msgstr "" msgid "Quantity is required" msgstr "" -#: stock/forms.py:91 stock/forms.py:265 stock/models.py:587 -#: stock/templates/stock/item_base.html:382 -#: templates/js/translated/stock.js:1276 +#: stock/forms.py:91 stock/forms.py:265 stock/models.py:577 +#: stock/templates/stock/item_base.html:186 +#: templates/js/translated/stock.js:1358 msgid "Expiry Date" msgstr "" @@ -5270,241 +5297,241 @@ msgstr "" msgid "Confirm removal of installed stock items" msgstr "" -#: stock/models.py:60 stock/models.py:624 -#: stock/templates/stock/item_base.html:422 +#: stock/models.py:60 stock/models.py:614 +#: stock/templates/stock/item_base.html:417 msgid "Owner" msgstr "" -#: stock/models.py:61 stock/models.py:625 +#: stock/models.py:61 stock/models.py:615 msgid "Select Owner" msgstr "" -#: stock/models.py:352 +#: stock/models.py:342 msgid "StockItem with this serial number already exists" msgstr "" -#: stock/models.py:388 +#: stock/models.py:378 #, python-brace-format msgid "Part type ('{pf}') must be {pe}" msgstr "" -#: stock/models.py:398 stock/models.py:407 +#: stock/models.py:388 stock/models.py:397 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:399 +#: stock/models.py:389 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:421 +#: stock/models.py:411 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:427 +#: stock/models.py:417 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:434 +#: stock/models.py:424 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:476 +#: stock/models.py:466 msgid "Parent Stock Item" msgstr "" -#: stock/models.py:485 +#: stock/models.py:475 msgid "Base part" msgstr "" -#: stock/models.py:493 +#: stock/models.py:483 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:498 stock/templates/stock/location.html:12 +#: stock/models.py:488 stock/templates/stock/location.html:12 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" msgstr "" -#: stock/models.py:501 +#: stock/models.py:491 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:508 +#: stock/models.py:498 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:513 stock/templates/stock/item_base.html:271 +#: stock/models.py:503 stock/templates/stock/item_base.html:299 msgid "Installed In" msgstr "" -#: stock/models.py:516 +#: stock/models.py:506 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:532 +#: stock/models.py:522 msgid "Serial number for this item" msgstr "" -#: stock/models.py:546 +#: stock/models.py:536 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:550 +#: stock/models.py:540 msgid "Stock Quantity" msgstr "" -#: stock/models.py:559 +#: stock/models.py:549 msgid "Source Build" msgstr "" -#: stock/models.py:561 +#: stock/models.py:551 msgid "Build for this stock item" msgstr "" -#: stock/models.py:572 +#: stock/models.py:562 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:575 +#: stock/models.py:565 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:581 +#: stock/models.py:571 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:588 +#: stock/models.py:578 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:601 +#: stock/models.py:591 msgid "Delete on deplete" msgstr "" -#: stock/models.py:601 +#: stock/models.py:591 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:611 stock/templates/stock/item.html:111 +#: stock/models.py:601 stock/templates/stock/item.html:111 msgid "Stock Item Notes" msgstr "" -#: stock/models.py:620 +#: stock/models.py:610 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:630 +#: stock/models.py:620 msgid "Scheduled for deletion" msgstr "" -#: stock/models.py:631 +#: stock/models.py:621 msgid "This StockItem will be deleted by the background worker" msgstr "" -#: stock/models.py:1094 +#: stock/models.py:1084 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1100 +#: stock/models.py:1090 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1106 +#: stock/models.py:1096 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({n})" msgstr "" -#: stock/models.py:1109 +#: stock/models.py:1099 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1112 +#: stock/models.py:1102 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1119 +#: stock/models.py:1109 #, python-brace-format msgid "Serial numbers already exist: {exists}" msgstr "" -#: stock/models.py:1277 +#: stock/models.py:1267 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:1775 +#: stock/models.py:1765 msgid "Entry notes" msgstr "" -#: stock/models.py:1832 +#: stock/models.py:1822 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:1838 +#: stock/models.py:1828 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:1856 +#: stock/models.py:1846 msgid "Test name" msgstr "" -#: stock/models.py:1862 templates/js/translated/table_filters.js:266 +#: stock/models.py:1852 templates/js/translated/table_filters.js:266 msgid "Test result" msgstr "" -#: stock/models.py:1868 +#: stock/models.py:1858 msgid "Test output value" msgstr "" -#: stock/models.py:1875 +#: stock/models.py:1865 msgid "Test result attachment" msgstr "" -#: stock/models.py:1881 +#: stock/models.py:1871 msgid "Test notes" msgstr "" -#: stock/serializers.py:166 +#: stock/serializers.py:171 msgid "Purchase price of this stock item" msgstr "" -#: stock/serializers.py:173 +#: stock/serializers.py:178 msgid "Purchase currency of this stock item" msgstr "" -#: stock/serializers.py:287 +#: stock/serializers.py:292 msgid "Enter number of stock items to serialize" msgstr "" -#: stock/serializers.py:302 +#: stock/serializers.py:307 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "" -#: stock/serializers.py:308 +#: stock/serializers.py:313 msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:319 stock/serializers.py:686 +#: stock/serializers.py:324 stock/serializers.py:691 msgid "Destination stock location" msgstr "" -#: stock/serializers.py:326 +#: stock/serializers.py:331 msgid "Optional note field" msgstr "" -#: stock/serializers.py:339 +#: stock/serializers.py:344 msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:556 +#: stock/serializers.py:561 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:584 +#: stock/serializers.py:589 msgid "Stock transaction notes" msgstr "" -#: stock/serializers.py:594 +#: stock/serializers.py:599 msgid "A list of stock items must be provided" msgstr "" @@ -5629,125 +5656,131 @@ msgstr "" msgid "Install" msgstr "" -#: stock/templates/stock/item_base.html:106 +#: stock/templates/stock/item_base.html:108 msgid "Convert to variant" msgstr "" -#: stock/templates/stock/item_base.html:109 +#: stock/templates/stock/item_base.html:111 msgid "Duplicate stock item" msgstr "" -#: stock/templates/stock/item_base.html:111 +#: stock/templates/stock/item_base.html:113 msgid "Edit stock item" msgstr "" -#: stock/templates/stock/item_base.html:114 +#: stock/templates/stock/item_base.html:116 msgid "Delete stock item" msgstr "" -#: stock/templates/stock/item_base.html:136 -#: stock/templates/stock/item_base.html:386 -#: templates/js/translated/table_filters.js:247 -msgid "Expired" +#: stock/templates/stock/item_base.html:154 +msgid "previous page" msgstr "" -#: stock/templates/stock/item_base.html:146 -#: stock/templates/stock/item_base.html:388 -#: templates/js/translated/table_filters.js:253 -msgid "Stale" +#: stock/templates/stock/item_base.html:154 +msgid "Navigate to previous serial number" msgstr "" -#: stock/templates/stock/item_base.html:161 -msgid "You are not in the list of owners of this item. This stock item cannot be edited." +#: stock/templates/stock/item_base.html:163 +msgid "next page" msgstr "" -#: stock/templates/stock/item_base.html:168 -msgid "This stock item is in production and cannot be edited." -msgstr "" - -#: stock/templates/stock/item_base.html:169 -msgid "Edit the stock item from the build view." -msgstr "" - -#: stock/templates/stock/item_base.html:182 -msgid "This stock item has not passed all required tests" +#: stock/templates/stock/item_base.html:163 +msgid "Navigate to next serial number" msgstr "" #: stock/templates/stock/item_base.html:190 #, python-format -msgid "This stock item is allocated to Sales Order %(link)s (Quantity: %(qty)s)" -msgstr "" - -#: stock/templates/stock/item_base.html:198 -#, python-format -msgid "This stock item is allocated to Build %(link)s (Quantity: %(qty)s)" -msgstr "" - -#: stock/templates/stock/item_base.html:204 -msgid "This stock item is serialized - it has a unique serial number and the quantity cannot be adjusted." -msgstr "" - -#: stock/templates/stock/item_base.html:208 -msgid "This stock item cannot be deleted as it has child items" -msgstr "" - -#: stock/templates/stock/item_base.html:212 -msgid "This stock item will be automatically deleted when all stock is depleted." -msgstr "" - -#: stock/templates/stock/item_base.html:241 -msgid "previous page" -msgstr "" - -#: stock/templates/stock/item_base.html:247 -msgid "next page" -msgstr "" - -#: stock/templates/stock/item_base.html:290 -#: templates/js/translated/build.js:1035 -msgid "No location set" -msgstr "" - -#: stock/templates/stock/item_base.html:297 -msgid "Barcode Identifier" -msgstr "" - -#: stock/templates/stock/item_base.html:339 -msgid "Parent Item" -msgstr "" - -#: stock/templates/stock/item_base.html:357 -msgid "No manufacturer set" -msgstr "" - -#: stock/templates/stock/item_base.html:386 -#, python-format msgid "This StockItem expired on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:388 +#: stock/templates/stock/item_base.html:190 +#: templates/js/translated/table_filters.js:247 +msgid "Expired" +msgstr "" + +#: stock/templates/stock/item_base.html:192 #, python-format msgid "This StockItem expires on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:395 -#: templates/js/translated/stock.js:1289 +#: stock/templates/stock/item_base.html:192 +#: templates/js/translated/table_filters.js:253 +msgid "Stale" +msgstr "" + +#: stock/templates/stock/item_base.html:199 +#: templates/js/translated/stock.js:1371 msgid "Last Updated" msgstr "" -#: stock/templates/stock/item_base.html:400 +#: stock/templates/stock/item_base.html:204 msgid "Last Stocktake" msgstr "" -#: stock/templates/stock/item_base.html:404 +#: stock/templates/stock/item_base.html:208 msgid "No stocktake performed" msgstr "" -#: stock/templates/stock/item_base.html:415 +#: stock/templates/stock/item_base.html:226 +msgid "You are not in the list of owners of this item. This stock item cannot be edited." +msgstr "" + +#: stock/templates/stock/item_base.html:233 +msgid "This stock item is in production and cannot be edited." +msgstr "" + +#: stock/templates/stock/item_base.html:234 +msgid "Edit the stock item from the build view." +msgstr "" + +#: stock/templates/stock/item_base.html:247 +msgid "This stock item has not passed all required tests" +msgstr "" + +#: stock/templates/stock/item_base.html:255 +#, python-format +msgid "This stock item is allocated to Sales Order %(link)s (Quantity: %(qty)s)" +msgstr "" + +#: stock/templates/stock/item_base.html:263 +#, python-format +msgid "This stock item is allocated to Build %(link)s (Quantity: %(qty)s)" +msgstr "" + +#: stock/templates/stock/item_base.html:269 +msgid "This stock item is serialized - it has a unique serial number and the quantity cannot be adjusted." +msgstr "" + +#: stock/templates/stock/item_base.html:273 +msgid "This stock item cannot be deleted as it has child items" +msgstr "" + +#: stock/templates/stock/item_base.html:277 +msgid "This stock item will be automatically deleted when all stock is depleted." +msgstr "" + +#: stock/templates/stock/item_base.html:318 +#: templates/js/translated/build.js:1035 +msgid "No location set" +msgstr "" + +#: stock/templates/stock/item_base.html:325 +msgid "Barcode Identifier" +msgstr "" + +#: stock/templates/stock/item_base.html:367 +msgid "Parent Item" +msgstr "" + +#: stock/templates/stock/item_base.html:385 +msgid "No manufacturer set" +msgstr "" + +#: stock/templates/stock/item_base.html:410 msgid "Tests" msgstr "" -#: stock/templates/stock/item_base.html:505 +#: stock/templates/stock/item_base.html:500 msgid "Edit Stock Status" msgstr "" @@ -5825,30 +5858,35 @@ msgstr "" msgid "New Location" msgstr "" -#: stock/templates/stock/location.html:86 +#: stock/templates/stock/location.html:95 +#: stock/templates/stock/location.html:101 +msgid "Location Path" +msgstr "" + +#: stock/templates/stock/location.html:102 msgid "Top level stock location" msgstr "" -#: stock/templates/stock/location.html:95 +#: stock/templates/stock/location.html:115 msgid "You are not in the list of owners of this location. This stock location cannot be edited." msgstr "" -#: stock/templates/stock/location.html:113 -#: stock/templates/stock/location.html:160 +#: stock/templates/stock/location.html:128 +#: stock/templates/stock/location.html:175 #: stock/templates/stock/location_sidebar.html:5 msgid "Sublocations" msgstr "" -#: stock/templates/stock/location.html:127 templates/InvenTree/search.html:170 +#: stock/templates/stock/location.html:142 templates/InvenTree/search.html:170 #: templates/stats.html:97 users/models.py:42 msgid "Stock Locations" msgstr "" -#: stock/templates/stock/location.html:167 templates/stock_table.html:30 +#: stock/templates/stock/location.html:182 templates/stock_table.html:30 msgid "Printing Actions" msgstr "" -#: stock/templates/stock/location.html:171 templates/stock_table.html:34 +#: stock/templates/stock/location.html:186 templates/stock_table.html:34 msgid "Print labels" msgstr "" @@ -5942,7 +5980,7 @@ msgstr "" msgid "Uninstall Stock Items" msgstr "" -#: stock/views.py:760 templates/js/translated/stock.js:648 +#: stock/views.py:760 templates/js/translated/stock.js:730 msgid "Confirm stock adjustment" msgstr "" @@ -5950,7 +5988,7 @@ msgstr "" msgid "Uninstalled stock items" msgstr "" -#: stock/views.py:793 templates/js/translated/stock.js:318 +#: stock/views.py:793 templates/js/translated/stock.js:319 msgid "Edit Stock Item" msgstr "" @@ -5962,7 +6000,7 @@ msgstr "" msgid "Create new Stock Item" msgstr "" -#: stock/views.py:1186 templates/js/translated/stock.js:298 +#: stock/views.py:1186 templates/js/translated/stock.js:299 msgid "Duplicate Stock Item" msgstr "" @@ -6868,7 +6906,7 @@ msgstr "" msgid "Unlink" msgstr "" -#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:600 +#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:682 msgid "Remove stock item" msgstr "" @@ -6963,7 +7001,7 @@ msgid "View BOM" msgstr "" #: templates/js/translated/bom.js:608 templates/js/translated/build.js:1183 -#: templates/js/translated/order.js:1320 +#: templates/js/translated/order.js:1319 msgid "Actions" msgstr "" @@ -7055,7 +7093,7 @@ msgstr "" msgid "No build order allocations found" msgstr "" -#: templates/js/translated/build.js:424 templates/js/translated/order.js:1194 +#: templates/js/translated/build.js:424 templates/js/translated/order.js:1193 msgid "Location not specified" msgstr "" @@ -7064,12 +7102,12 @@ msgid "No active build outputs found" msgstr "" #: templates/js/translated/build.js:1052 templates/js/translated/build.js:1760 -#: templates/js/translated/order.js:1327 +#: templates/js/translated/order.js:1326 msgid "Edit stock allocation" msgstr "" #: templates/js/translated/build.js:1054 templates/js/translated/build.js:1761 -#: templates/js/translated/order.js:1328 +#: templates/js/translated/order.js:1327 msgid "Delete stock allocation" msgstr "" @@ -7090,11 +7128,11 @@ msgid "Quantity Per" msgstr "" #: templates/js/translated/build.js:1134 templates/js/translated/build.js:1360 -#: templates/js/translated/build.js:1756 templates/js/translated/order.js:1557 +#: templates/js/translated/build.js:1756 templates/js/translated/order.js:1556 msgid "Allocated" msgstr "" -#: templates/js/translated/build.js:1190 templates/js/translated/order.js:1611 +#: templates/js/translated/build.js:1190 templates/js/translated/order.js:1610 msgid "Build stock" msgstr "" @@ -7102,7 +7140,7 @@ msgstr "" msgid "Order stock" msgstr "" -#: templates/js/translated/build.js:1197 templates/js/translated/order.js:1604 +#: templates/js/translated/build.js:1197 templates/js/translated/order.js:1603 msgid "Allocate stock" msgstr "" @@ -7143,9 +7181,9 @@ msgstr "" msgid "No builds matching query" msgstr "" -#: templates/js/translated/build.js:1593 templates/js/translated/part.js:966 -#: templates/js/translated/part.js:1377 templates/js/translated/stock.js:1094 -#: templates/js/translated/stock.js:1871 +#: templates/js/translated/build.js:1593 templates/js/translated/part.js:1147 +#: templates/js/translated/part.js:1558 templates/js/translated/stock.js:1176 +#: templates/js/translated/stock.js:1953 msgid "Select" msgstr "" @@ -7153,7 +7191,7 @@ msgstr "" msgid "Build order is overdue" msgstr "" -#: templates/js/translated/build.js:1674 templates/js/translated/stock.js:2090 +#: templates/js/translated/build.js:1674 templates/js/translated/stock.js:2172 msgid "No user information" msgstr "" @@ -7197,10 +7235,6 @@ msgstr "" msgid "Delete Supplier Part" msgstr "" -#: templates/js/translated/company.js:265 -msgid "Edit Company" -msgstr "" - #: templates/js/translated/company.js:286 msgid "Add new Company" msgstr "" @@ -7230,34 +7264,34 @@ msgid "No manufacturer parts found" msgstr "" #: templates/js/translated/company.js:497 -#: templates/js/translated/company.js:754 templates/js/translated/part.js:449 -#: templates/js/translated/part.js:534 +#: templates/js/translated/company.js:754 templates/js/translated/part.js:456 +#: templates/js/translated/part.js:541 msgid "Template part" msgstr "" #: templates/js/translated/company.js:501 -#: templates/js/translated/company.js:758 templates/js/translated/part.js:453 -#: templates/js/translated/part.js:538 +#: templates/js/translated/company.js:758 templates/js/translated/part.js:460 +#: templates/js/translated/part.js:545 msgid "Assembled part" msgstr "" -#: templates/js/translated/company.js:628 templates/js/translated/part.js:626 +#: templates/js/translated/company.js:628 templates/js/translated/part.js:633 msgid "No parameters found" msgstr "" -#: templates/js/translated/company.js:665 templates/js/translated/part.js:668 +#: templates/js/translated/company.js:665 templates/js/translated/part.js:675 msgid "Edit parameter" msgstr "" -#: templates/js/translated/company.js:666 templates/js/translated/part.js:669 +#: templates/js/translated/company.js:666 templates/js/translated/part.js:676 msgid "Delete parameter" msgstr "" -#: templates/js/translated/company.js:685 templates/js/translated/part.js:686 +#: templates/js/translated/company.js:685 templates/js/translated/part.js:693 msgid "Edit Parameter" msgstr "" -#: templates/js/translated/company.js:696 templates/js/translated/part.js:698 +#: templates/js/translated/company.js:696 templates/js/translated/part.js:705 msgid "Delete Parameter" msgstr "" @@ -7346,7 +7380,7 @@ msgid "NO" msgstr "" #: templates/js/translated/label.js:29 templates/js/translated/report.js:118 -#: templates/js/translated/stock.js:624 +#: templates/js/translated/stock.js:706 msgid "Select Stock Items" msgstr "" @@ -7502,11 +7536,11 @@ msgstr "" msgid "Export Order" msgstr "" -#: templates/js/translated/order.js:211 templates/js/translated/stock.js:423 +#: templates/js/translated/order.js:211 templates/js/translated/stock.js:505 msgid "Format" msgstr "" -#: templates/js/translated/order.js:212 templates/js/translated/stock.js:424 +#: templates/js/translated/order.js:212 templates/js/translated/stock.js:506 msgid "Select file format" msgstr "" @@ -7522,7 +7556,7 @@ msgstr "" msgid "Quantity to receive" msgstr "" -#: templates/js/translated/order.js:360 templates/js/translated/stock.js:1673 +#: templates/js/translated/order.js:360 templates/js/translated/stock.js:1755 msgid "Stock Status" msgstr "" @@ -7546,321 +7580,321 @@ msgstr "" msgid "Receive Purchase Order Items" msgstr "" -#: templates/js/translated/order.js:627 +#: templates/js/translated/order.js:627 templates/js/translated/part.js:746 msgid "No purchase orders found" msgstr "" -#: templates/js/translated/order.js:652 templates/js/translated/order.js:1063 +#: templates/js/translated/order.js:659 templates/js/translated/order.js:1062 msgid "Order is overdue" msgstr "" -#: templates/js/translated/order.js:772 templates/js/translated/order.js:1646 +#: templates/js/translated/order.js:771 templates/js/translated/order.js:1645 msgid "Edit Line Item" msgstr "" -#: templates/js/translated/order.js:784 templates/js/translated/order.js:1657 +#: templates/js/translated/order.js:783 templates/js/translated/order.js:1656 msgid "Delete Line Item" msgstr "" -#: templates/js/translated/order.js:823 +#: templates/js/translated/order.js:822 msgid "No line items found" msgstr "" -#: templates/js/translated/order.js:850 templates/js/translated/order.js:1467 +#: templates/js/translated/order.js:849 templates/js/translated/order.js:1466 msgid "Total" msgstr "" -#: templates/js/translated/order.js:904 templates/js/translated/order.js:1492 -#: templates/js/translated/part.js:1594 templates/js/translated/part.js:1805 +#: templates/js/translated/order.js:903 templates/js/translated/order.js:1491 +#: templates/js/translated/part.js:1775 templates/js/translated/part.js:1986 msgid "Unit Price" msgstr "" -#: templates/js/translated/order.js:919 templates/js/translated/order.js:1508 +#: templates/js/translated/order.js:918 templates/js/translated/order.js:1507 msgid "Total Price" msgstr "" -#: templates/js/translated/order.js:997 templates/js/translated/order.js:1617 +#: templates/js/translated/order.js:996 templates/js/translated/order.js:1616 msgid "Edit line item" msgstr "" -#: templates/js/translated/order.js:998 +#: templates/js/translated/order.js:997 msgid "Delete line item" msgstr "" -#: templates/js/translated/order.js:1002 +#: templates/js/translated/order.js:1001 templates/js/translated/part.js:878 msgid "Receive line item" msgstr "" -#: templates/js/translated/order.js:1039 +#: templates/js/translated/order.js:1038 msgid "No sales orders found" msgstr "" -#: templates/js/translated/order.js:1077 +#: templates/js/translated/order.js:1076 msgid "Invalid Customer" msgstr "" -#: templates/js/translated/order.js:1155 +#: templates/js/translated/order.js:1154 msgid "No sales order allocations found" msgstr "" -#: templates/js/translated/order.js:1248 +#: templates/js/translated/order.js:1247 msgid "Edit Stock Allocation" msgstr "" -#: templates/js/translated/order.js:1265 +#: templates/js/translated/order.js:1264 msgid "Confirm Delete Operation" msgstr "" -#: templates/js/translated/order.js:1266 +#: templates/js/translated/order.js:1265 msgid "Delete Stock Allocation" msgstr "" -#: templates/js/translated/order.js:1308 +#: templates/js/translated/order.js:1307 msgid "Stock location not specified" msgstr "" -#: templates/js/translated/order.js:1557 +#: templates/js/translated/order.js:1556 msgid "Fulfilled" msgstr "" -#: templates/js/translated/order.js:1601 +#: templates/js/translated/order.js:1600 msgid "Allocate serial numbers" msgstr "" -#: templates/js/translated/order.js:1607 +#: templates/js/translated/order.js:1606 msgid "Purchase stock" msgstr "" -#: templates/js/translated/order.js:1614 templates/js/translated/order.js:1793 +#: templates/js/translated/order.js:1613 templates/js/translated/order.js:1792 msgid "Calculate price" msgstr "" -#: templates/js/translated/order.js:1618 +#: templates/js/translated/order.js:1617 msgid "Delete line item " msgstr "" -#: templates/js/translated/order.js:1741 +#: templates/js/translated/order.js:1740 msgid "Allocate Stock Item" msgstr "" -#: templates/js/translated/order.js:1801 +#: templates/js/translated/order.js:1800 msgid "Update Unit Price" msgstr "" -#: templates/js/translated/order.js:1815 +#: templates/js/translated/order.js:1814 msgid "No matching line items" msgstr "" -#: templates/js/translated/part.js:51 +#: templates/js/translated/part.js:52 msgid "Part Attributes" msgstr "" -#: templates/js/translated/part.js:55 +#: templates/js/translated/part.js:56 msgid "Part Creation Options" msgstr "" -#: templates/js/translated/part.js:59 +#: templates/js/translated/part.js:60 msgid "Part Duplication Options" msgstr "" -#: templates/js/translated/part.js:63 +#: templates/js/translated/part.js:64 msgid "Supplier Options" msgstr "" -#: templates/js/translated/part.js:77 +#: templates/js/translated/part.js:78 msgid "Add Part Category" msgstr "" -#: templates/js/translated/part.js:166 +#: templates/js/translated/part.js:162 msgid "Create Initial Stock" msgstr "" -#: templates/js/translated/part.js:167 +#: templates/js/translated/part.js:163 msgid "Create an initial stock item for this part" msgstr "" -#: templates/js/translated/part.js:174 +#: templates/js/translated/part.js:170 msgid "Initial Stock Quantity" msgstr "" -#: templates/js/translated/part.js:175 +#: templates/js/translated/part.js:171 msgid "Specify initial stock quantity for this part" msgstr "" -#: templates/js/translated/part.js:182 +#: templates/js/translated/part.js:178 msgid "Select destination stock location" msgstr "" -#: templates/js/translated/part.js:193 +#: templates/js/translated/part.js:196 msgid "Copy Category Parameters" msgstr "" -#: templates/js/translated/part.js:194 +#: templates/js/translated/part.js:197 msgid "Copy parameter templates from selected part category" msgstr "" -#: templates/js/translated/part.js:202 +#: templates/js/translated/part.js:205 msgid "Add Supplier Data" msgstr "" -#: templates/js/translated/part.js:203 +#: templates/js/translated/part.js:206 msgid "Create initial supplier data for this part" msgstr "" -#: templates/js/translated/part.js:259 +#: templates/js/translated/part.js:262 msgid "Copy Image" msgstr "" -#: templates/js/translated/part.js:260 +#: templates/js/translated/part.js:263 msgid "Copy image from original part" msgstr "" -#: templates/js/translated/part.js:268 +#: templates/js/translated/part.js:271 msgid "Copy bill of materials from original part" msgstr "" -#: templates/js/translated/part.js:275 +#: templates/js/translated/part.js:278 msgid "Copy Parameters" msgstr "" -#: templates/js/translated/part.js:276 +#: templates/js/translated/part.js:279 msgid "Copy parameter data from original part" msgstr "" -#: templates/js/translated/part.js:289 +#: templates/js/translated/part.js:292 msgid "Parent part category" msgstr "" -#: templates/js/translated/part.js:333 +#: templates/js/translated/part.js:336 msgid "Edit Part" msgstr "" -#: templates/js/translated/part.js:335 +#: templates/js/translated/part.js:338 msgid "Part edited" msgstr "" -#: templates/js/translated/part.js:403 +#: templates/js/translated/part.js:410 msgid "You are subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:405 +#: templates/js/translated/part.js:412 msgid "You have subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:410 +#: templates/js/translated/part.js:417 msgid "Subscribe to notifications for this item" msgstr "" -#: templates/js/translated/part.js:412 +#: templates/js/translated/part.js:419 msgid "You have unsubscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:441 templates/js/translated/part.js:526 +#: templates/js/translated/part.js:448 templates/js/translated/part.js:533 msgid "Trackable part" msgstr "" -#: templates/js/translated/part.js:445 templates/js/translated/part.js:530 +#: templates/js/translated/part.js:452 templates/js/translated/part.js:537 msgid "Virtual part" msgstr "" -#: templates/js/translated/part.js:457 +#: templates/js/translated/part.js:464 msgid "Subscribed part" msgstr "" -#: templates/js/translated/part.js:461 +#: templates/js/translated/part.js:468 msgid "Salable part" msgstr "" -#: templates/js/translated/part.js:576 +#: templates/js/translated/part.js:583 msgid "No variants found" msgstr "" -#: templates/js/translated/part.js:765 +#: templates/js/translated/part.js:946 msgid "Delete part relationship" msgstr "" -#: templates/js/translated/part.js:789 +#: templates/js/translated/part.js:970 msgid "Delete Part Relationship" msgstr "" -#: templates/js/translated/part.js:856 templates/js/translated/part.js:1116 +#: templates/js/translated/part.js:1037 templates/js/translated/part.js:1297 msgid "No parts found" msgstr "" -#: templates/js/translated/part.js:1026 +#: templates/js/translated/part.js:1207 msgid "No category" msgstr "" -#: templates/js/translated/part.js:1049 +#: templates/js/translated/part.js:1230 #: templates/js/translated/table_filters.js:381 msgid "Low stock" msgstr "" -#: templates/js/translated/part.js:1140 templates/js/translated/part.js:1312 -#: templates/js/translated/stock.js:1832 +#: templates/js/translated/part.js:1321 templates/js/translated/part.js:1493 +#: templates/js/translated/stock.js:1914 msgid "Display as list" msgstr "" -#: templates/js/translated/part.js:1156 +#: templates/js/translated/part.js:1337 msgid "Display as grid" msgstr "" -#: templates/js/translated/part.js:1331 templates/js/translated/stock.js:1851 +#: templates/js/translated/part.js:1512 templates/js/translated/stock.js:1933 msgid "Display as tree" msgstr "" -#: templates/js/translated/part.js:1395 +#: templates/js/translated/part.js:1576 msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:1409 templates/js/translated/stock.js:1895 +#: templates/js/translated/part.js:1590 templates/js/translated/stock.js:1977 msgid "Path" msgstr "" -#: templates/js/translated/part.js:1453 +#: templates/js/translated/part.js:1634 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:1504 templates/js/translated/stock.js:816 +#: templates/js/translated/part.js:1685 templates/js/translated/stock.js:898 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:1505 templates/js/translated/stock.js:817 +#: templates/js/translated/part.js:1686 templates/js/translated/stock.js:899 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:1511 +#: templates/js/translated/part.js:1692 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:1533 +#: templates/js/translated/part.js:1714 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:1547 +#: templates/js/translated/part.js:1728 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:1572 +#: templates/js/translated/part.js:1753 #, python-brace-format msgid "No ${human_name} information found" msgstr "" -#: templates/js/translated/part.js:1627 +#: templates/js/translated/part.js:1808 #, python-brace-format msgid "Edit ${human_name}" msgstr "" -#: templates/js/translated/part.js:1628 +#: templates/js/translated/part.js:1809 #, python-brace-format msgid "Delete ${human_name}" msgstr "" -#: templates/js/translated/part.js:1729 +#: templates/js/translated/part.js:1910 msgid "Single Price" msgstr "" -#: templates/js/translated/part.js:1748 +#: templates/js/translated/part.js:1929 msgid "Single Price Difference" msgstr "" @@ -7930,276 +7964,300 @@ msgstr "" msgid "Sales Order(s) must be selected before printing report" msgstr "" -#: templates/js/translated/stock.js:70 +#: templates/js/translated/stock.js:71 msgid "Serialize Stock Item" msgstr "" -#: templates/js/translated/stock.js:88 templates/js/translated/stock.js:167 +#: templates/js/translated/stock.js:89 templates/js/translated/stock.js:168 msgid "Next available serial number" msgstr "" -#: templates/js/translated/stock.js:90 templates/js/translated/stock.js:169 +#: templates/js/translated/stock.js:91 templates/js/translated/stock.js:170 msgid "Latest serial number" msgstr "" -#: templates/js/translated/stock.js:104 +#: templates/js/translated/stock.js:105 msgid "Parent stock location" msgstr "" -#: templates/js/translated/stock.js:140 +#: templates/js/translated/stock.js:141 msgid "New Stock Location" msgstr "" -#: templates/js/translated/stock.js:180 +#: templates/js/translated/stock.js:181 msgid "This part cannot be serialized" msgstr "" -#: templates/js/translated/stock.js:219 +#: templates/js/translated/stock.js:220 msgid "Enter initial quantity for this stock item" msgstr "" -#: templates/js/translated/stock.js:225 +#: templates/js/translated/stock.js:226 msgid "Enter serial numbers for new stock (or leave blank)" msgstr "" -#: templates/js/translated/stock.js:368 +#: templates/js/translated/stock.js:369 msgid "Created new stock item" msgstr "" -#: templates/js/translated/stock.js:381 +#: templates/js/translated/stock.js:382 msgid "Created multiple stock items" msgstr "" -#: templates/js/translated/stock.js:420 +#: templates/js/translated/stock.js:407 +msgid "Find Serial Number" +msgstr "" + +#: templates/js/translated/stock.js:411 templates/js/translated/stock.js:412 +msgid "Enter serial number" +msgstr "" + +#: templates/js/translated/stock.js:428 +msgid "Enter a serial number" +msgstr "" + +#: templates/js/translated/stock.js:448 +msgid "No matching serial number" +msgstr "" + +#: templates/js/translated/stock.js:457 +msgid "More than one matching result found" +msgstr "" + +#: templates/js/translated/stock.js:502 msgid "Export Stock" msgstr "" -#: templates/js/translated/stock.js:431 +#: templates/js/translated/stock.js:513 msgid "Include Sublocations" msgstr "" -#: templates/js/translated/stock.js:432 +#: templates/js/translated/stock.js:514 msgid "Include stock items in sublocations" msgstr "" -#: templates/js/translated/stock.js:474 +#: templates/js/translated/stock.js:556 msgid "Transfer Stock" msgstr "" -#: templates/js/translated/stock.js:475 +#: templates/js/translated/stock.js:557 msgid "Move" msgstr "" -#: templates/js/translated/stock.js:481 +#: templates/js/translated/stock.js:563 msgid "Count Stock" msgstr "" -#: templates/js/translated/stock.js:482 +#: templates/js/translated/stock.js:564 msgid "Count" msgstr "" -#: templates/js/translated/stock.js:486 +#: templates/js/translated/stock.js:568 msgid "Remove Stock" msgstr "" -#: templates/js/translated/stock.js:487 +#: templates/js/translated/stock.js:569 msgid "Take" msgstr "" -#: templates/js/translated/stock.js:491 +#: templates/js/translated/stock.js:573 msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:492 users/models.py:200 +#: templates/js/translated/stock.js:574 users/models.py:200 msgid "Add" msgstr "" -#: templates/js/translated/stock.js:496 templates/stock_table.html:56 +#: templates/js/translated/stock.js:578 templates/stock_table.html:56 msgid "Delete Stock" msgstr "" -#: templates/js/translated/stock.js:585 +#: templates/js/translated/stock.js:667 msgid "Quantity cannot be adjusted for serialized stock" msgstr "" -#: templates/js/translated/stock.js:585 +#: templates/js/translated/stock.js:667 msgid "Specify stock quantity" msgstr "" -#: templates/js/translated/stock.js:625 +#: templates/js/translated/stock.js:707 msgid "You must select at least one available stock item" msgstr "" -#: templates/js/translated/stock.js:783 +#: templates/js/translated/stock.js:865 msgid "PASS" msgstr "" -#: templates/js/translated/stock.js:785 +#: templates/js/translated/stock.js:867 msgid "FAIL" msgstr "" -#: templates/js/translated/stock.js:790 +#: templates/js/translated/stock.js:872 msgid "NO RESULT" msgstr "" -#: templates/js/translated/stock.js:812 +#: templates/js/translated/stock.js:894 msgid "Add test result" msgstr "" -#: templates/js/translated/stock.js:838 +#: templates/js/translated/stock.js:920 msgid "No test results found" msgstr "" -#: templates/js/translated/stock.js:895 +#: templates/js/translated/stock.js:977 msgid "Test Date" msgstr "" -#: templates/js/translated/stock.js:1002 +#: templates/js/translated/stock.js:1084 msgid "In production" msgstr "" -#: templates/js/translated/stock.js:1006 +#: templates/js/translated/stock.js:1088 msgid "Installed in Stock Item" msgstr "" -#: templates/js/translated/stock.js:1010 +#: templates/js/translated/stock.js:1092 msgid "Shipped to customer" msgstr "" -#: templates/js/translated/stock.js:1014 +#: templates/js/translated/stock.js:1096 msgid "Assigned to Sales Order" msgstr "" -#: templates/js/translated/stock.js:1020 +#: templates/js/translated/stock.js:1102 msgid "No stock location set" msgstr "" -#: templates/js/translated/stock.js:1178 +#: templates/js/translated/stock.js:1260 msgid "Stock item is in production" msgstr "" -#: templates/js/translated/stock.js:1183 +#: templates/js/translated/stock.js:1265 msgid "Stock item assigned to sales order" msgstr "" -#: templates/js/translated/stock.js:1186 +#: templates/js/translated/stock.js:1268 msgid "Stock item assigned to customer" msgstr "" -#: templates/js/translated/stock.js:1190 +#: templates/js/translated/stock.js:1272 msgid "Stock item has expired" msgstr "" -#: templates/js/translated/stock.js:1192 +#: templates/js/translated/stock.js:1274 msgid "Stock item will expire soon" msgstr "" -#: templates/js/translated/stock.js:1196 +#: templates/js/translated/stock.js:1278 msgid "Stock item has been allocated" msgstr "" -#: templates/js/translated/stock.js:1200 +#: templates/js/translated/stock.js:1282 msgid "Stock item has been installed in another item" msgstr "" -#: templates/js/translated/stock.js:1207 +#: templates/js/translated/stock.js:1289 msgid "Stock item has been rejected" msgstr "" -#: templates/js/translated/stock.js:1209 +#: templates/js/translated/stock.js:1291 msgid "Stock item is lost" msgstr "" -#: templates/js/translated/stock.js:1211 +#: templates/js/translated/stock.js:1293 msgid "Stock item is destroyed" msgstr "" -#: templates/js/translated/stock.js:1215 +#: templates/js/translated/stock.js:1297 #: templates/js/translated/table_filters.js:183 msgid "Depleted" msgstr "" -#: templates/js/translated/stock.js:1265 +#: templates/js/translated/stock.js:1347 msgid "Stocktake" msgstr "" -#: templates/js/translated/stock.js:1338 +#: templates/js/translated/stock.js:1420 msgid "Supplier part not specified" msgstr "" -#: templates/js/translated/stock.js:1376 +#: templates/js/translated/stock.js:1458 msgid "No stock items matching query" msgstr "" -#: templates/js/translated/stock.js:1397 templates/js/translated/stock.js:1445 +#: templates/js/translated/stock.js:1479 templates/js/translated/stock.js:1527 msgid "items" msgstr "" -#: templates/js/translated/stock.js:1485 +#: templates/js/translated/stock.js:1567 msgid "batches" msgstr "" -#: templates/js/translated/stock.js:1512 +#: templates/js/translated/stock.js:1594 msgid "locations" msgstr "" -#: templates/js/translated/stock.js:1514 +#: templates/js/translated/stock.js:1596 msgid "Undefined location" msgstr "" -#: templates/js/translated/stock.js:1688 +#: templates/js/translated/stock.js:1770 msgid "Set Stock Status" msgstr "" -#: templates/js/translated/stock.js:1702 +#: templates/js/translated/stock.js:1784 msgid "Select Status Code" msgstr "" -#: templates/js/translated/stock.js:1703 +#: templates/js/translated/stock.js:1785 msgid "Status code must be selected" msgstr "" -#: templates/js/translated/stock.js:1927 +#: templates/js/translated/stock.js:2009 msgid "Invalid date" msgstr "" -#: templates/js/translated/stock.js:1974 +#: templates/js/translated/stock.js:2031 +msgid "Details" +msgstr "" + +#: templates/js/translated/stock.js:2056 msgid "Location no longer exists" msgstr "" -#: templates/js/translated/stock.js:1993 +#: templates/js/translated/stock.js:2075 msgid "Purchase order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2012 +#: templates/js/translated/stock.js:2094 msgid "Customer no longer exists" msgstr "" -#: templates/js/translated/stock.js:2030 +#: templates/js/translated/stock.js:2112 msgid "Stock item no longer exists" msgstr "" -#: templates/js/translated/stock.js:2053 +#: templates/js/translated/stock.js:2135 msgid "Added" msgstr "" -#: templates/js/translated/stock.js:2061 +#: templates/js/translated/stock.js:2143 msgid "Removed" msgstr "" -#: templates/js/translated/stock.js:2102 +#: templates/js/translated/stock.js:2184 msgid "Edit tracking entry" msgstr "" -#: templates/js/translated/stock.js:2103 +#: templates/js/translated/stock.js:2185 msgid "Delete tracking entry" msgstr "" -#: templates/js/translated/stock.js:2154 +#: templates/js/translated/stock.js:2236 msgid "No installed items" msgstr "" -#: templates/js/translated/stock.js:2205 +#: templates/js/translated/stock.js:2287 msgid "Uninstall Stock Item" msgstr "" diff --git a/InvenTree/locale/it/LC_MESSAGES/django.po b/InvenTree/locale/it/LC_MESSAGES/django.po index 703859ccbe..b478c9da25 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-11-30 21:49+0000\n" -"PO-Revision-Date: 2021-11-30 21:52\n" +"POT-Creation-Date: 2021-12-03 10:37+0000\n" +"PO-Revision-Date: 2021-12-03 11:26\n" "Last-Translator: \n" "Language-Team: Italian\n" "Language: it_IT\n" @@ -114,129 +114,130 @@ msgstr "Nessun numero di serie trovato" msgid "Number of unique serial number ({s}) must match quantity ({q})" msgstr "Il numero dei numeri seriali univoci ({s}) deve essere uguale alla quantità ({q})" -#: InvenTree/models.py:114 +#: InvenTree/models.py:120 msgid "Missing file" msgstr "" -#: InvenTree/models.py:115 +#: InvenTree/models.py:121 msgid "Missing external link" msgstr "" -#: InvenTree/models.py:126 stock/models.py:1874 +#: InvenTree/models.py:132 stock/models.py:1864 #: templates/js/translated/attachment.js:117 msgid "Attachment" msgstr "Allegato" -#: InvenTree/models.py:127 +#: InvenTree/models.py:133 msgid "Select file to attach" msgstr "Seleziona file da allegare" -#: InvenTree/models.py:133 company/models.py:131 company/models.py:348 +#: InvenTree/models.py:139 company/models.py:131 company/models.py:348 #: company/models.py:564 order/models.py:163 part/models.py:797 #: report/templates/report/inventree_build_order_base.html:165 #: templates/js/translated/company.js:537 -#: templates/js/translated/company.js:826 templates/js/translated/part.js:1077 +#: templates/js/translated/company.js:826 templates/js/translated/part.js:1258 msgid "Link" msgstr "Link" -#: InvenTree/models.py:134 build/models.py:330 part/models.py:798 -#: stock/models.py:540 +#: InvenTree/models.py:140 build/models.py:330 part/models.py:798 +#: stock/models.py:530 msgid "Link to external URL" msgstr "Link a URL esterno" -#: InvenTree/models.py:137 templates/js/translated/attachment.js:161 +#: InvenTree/models.py:143 templates/js/translated/attachment.js:161 msgid "Comment" msgstr "Commento" -#: InvenTree/models.py:137 +#: InvenTree/models.py:143 msgid "File comment" msgstr "Commento del file" -#: InvenTree/models.py:143 InvenTree/models.py:144 common/models.py:1185 +#: InvenTree/models.py:149 InvenTree/models.py:150 common/models.py:1185 #: common/models.py:1186 part/models.py:2205 part/models.py:2225 #: report/templates/report/inventree_test_report_base.html:96 -#: templates/js/translated/stock.js:2084 +#: templates/js/translated/stock.js:2166 msgid "User" msgstr "Utente" -#: InvenTree/models.py:147 +#: InvenTree/models.py:153 msgid "upload date" msgstr "data caricamento" -#: InvenTree/models.py:170 +#: InvenTree/models.py:176 msgid "Filename must not be empty" msgstr "Il nome del file non deve essere vuoto" -#: InvenTree/models.py:193 +#: InvenTree/models.py:199 msgid "Invalid attachment directory" msgstr "Directory allegati non valida" -#: InvenTree/models.py:203 +#: InvenTree/models.py:209 #, python-brace-format msgid "Filename contains illegal character '{c}'" msgstr "Il nome del file contiene caratteri non validi '{c}'" -#: InvenTree/models.py:206 +#: InvenTree/models.py:212 msgid "Filename missing extension" msgstr "Nome file estensione mancante" -#: InvenTree/models.py:213 +#: InvenTree/models.py:219 msgid "Attachment with this filename already exists" msgstr "Esiste già un allegato con questo nome di file" -#: InvenTree/models.py:220 +#: InvenTree/models.py:226 msgid "Error renaming file" msgstr "Errore nella rinominazione del file" -#: InvenTree/models.py:255 +#: InvenTree/models.py:261 msgid "Invalid choice" msgstr "Scelta non valida" -#: InvenTree/models.py:271 InvenTree/models.py:272 company/models.py:415 +#: InvenTree/models.py:277 InvenTree/models.py:278 company/models.py:415 #: label/models.py:112 part/models.py:741 part/models.py:2389 -#: part/templates/part/detail.html:25 report/models.py:181 -#: templates/InvenTree/settings/settings.html:259 -#: templates/js/translated/company.js:638 templates/js/translated/part.js:499 -#: templates/js/translated/part.js:636 templates/js/translated/part.js:1384 -#: templates/js/translated/stock.js:1877 +#: report/models.py:181 templates/InvenTree/settings/settings.html:259 +#: templates/js/translated/company.js:638 templates/js/translated/part.js:506 +#: templates/js/translated/part.js:643 templates/js/translated/part.js:1565 +#: templates/js/translated/stock.js:1959 msgid "Name" msgstr "Nome" -#: InvenTree/models.py:278 build/models.py:207 +#: InvenTree/models.py:284 build/models.py:207 #: build/templates/build/detail.html:25 company/models.py:354 -#: company/models.py:570 company/templates/company/manufacturer_part.html:80 -#: company/templates/company/supplier_part.html:81 label/models.py:119 -#: order/models.py:161 part/models.py:764 part/templates/part/detail.html:30 +#: company/models.py:570 company/templates/company/company_base.html:68 +#: company/templates/company/manufacturer_part.html:76 +#: company/templates/company/supplier_part.html:73 label/models.py:119 +#: order/models.py:161 part/models.py:764 part/templates/part/category.html:70 +#: part/templates/part/part_base.html:163 #: part/templates/part/set_category.html:14 report/models.py:194 #: report/models.py:553 report/models.py:592 #: report/templates/report/inventree_build_order_base.html:118 -#: stock/templates/stock/location.html:108 templates/js/translated/bom.js:215 +#: stock/templates/stock/location.html:89 templates/js/translated/bom.js:215 #: templates/js/translated/bom.js:428 templates/js/translated/build.js:1621 #: templates/js/translated/company.js:345 #: templates/js/translated/company.js:548 -#: templates/js/translated/company.js:837 templates/js/translated/order.js:673 -#: templates/js/translated/order.js:855 templates/js/translated/order.js:1091 -#: templates/js/translated/part.js:558 templates/js/translated/part.js:752 -#: templates/js/translated/part.js:837 templates/js/translated/part.js:1007 -#: templates/js/translated/part.js:1403 templates/js/translated/part.js:1472 -#: templates/js/translated/stock.js:1151 templates/js/translated/stock.js:1889 -#: templates/js/translated/stock.js:1934 +#: templates/js/translated/company.js:837 templates/js/translated/order.js:680 +#: templates/js/translated/order.js:854 templates/js/translated/order.js:1090 +#: templates/js/translated/part.js:565 templates/js/translated/part.js:933 +#: templates/js/translated/part.js:1018 templates/js/translated/part.js:1188 +#: templates/js/translated/part.js:1584 templates/js/translated/part.js:1653 +#: templates/js/translated/stock.js:1233 templates/js/translated/stock.js:1971 +#: templates/js/translated/stock.js:2016 msgid "Description" msgstr "Descrizione" -#: InvenTree/models.py:279 +#: InvenTree/models.py:285 msgid "Description (optional)" msgstr "Descrizione (opzionale)" -#: InvenTree/models.py:287 +#: InvenTree/models.py:293 msgid "parent" msgstr "genitore" -#: InvenTree/serializers.py:62 part/models.py:2674 +#: InvenTree/serializers.py:65 part/models.py:2674 msgid "Must be a valid number" msgstr "Deve essere un numero valido" -#: InvenTree/serializers.py:285 +#: InvenTree/serializers.py:299 msgid "Filename" msgstr "Nome del file" @@ -361,7 +362,7 @@ msgid "Returned" msgstr "Reso" #: InvenTree/status_codes.py:143 -#: order/templates/order/sales_order_base.html:147 +#: order/templates/order/sales_order_base.html:148 msgid "Shipped" msgstr "Spedito" @@ -566,7 +567,7 @@ msgid "Barcode associated with StockItem" msgstr "Codice a barre associato all'articolo in giacenza" #: build/forms.py:36 build/models.py:1283 -#: build/templates/build/build_base.html:124 +#: build/templates/build/build_base.html:132 #: build/templates/build/detail.html:35 common/models.py:1225 #: company/forms.py:42 company/templates/company/supplier_part.html:251 #: order/forms.py:102 order/models.py:729 order/models.py:991 @@ -574,26 +575,27 @@ msgstr "Codice a barre associato all'articolo in giacenza" #: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:223 #: part/forms.py:239 part/forms.py:255 part/models.py:2576 #: part/templates/part/bom_upload/match_parts.html:31 -#: part/templates/part/detail.html:1076 part/templates/part/detail.html:1162 +#: part/templates/part/detail.html:967 part/templates/part/detail.html:1053 #: part/templates/part/part_pricing.html:16 #: report/templates/report/inventree_build_order_base.html:114 #: report/templates/report/inventree_po_report.html:91 #: report/templates/report/inventree_so_report.html:91 #: report/templates/report/inventree_test_report_base.html:81 #: report/templates/report/inventree_test_report_base.html:139 -#: stock/forms.py:156 stock/serializers.py:286 -#: stock/templates/stock/item_base.html:256 +#: stock/forms.py:156 stock/serializers.py:291 +#: stock/templates/stock/item_base.html:174 #: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:443 #: templates/js/translated/build.js:235 templates/js/translated/build.js:435 #: templates/js/translated/build.js:629 templates/js/translated/build.js:639 #: templates/js/translated/build.js:1015 templates/js/translated/build.js:1362 #: templates/js/translated/model_renderers.js:99 -#: templates/js/translated/order.js:892 templates/js/translated/order.js:1205 -#: templates/js/translated/order.js:1283 templates/js/translated/order.js:1290 -#: templates/js/translated/order.js:1379 templates/js/translated/order.js:1479 -#: templates/js/translated/part.js:1615 templates/js/translated/part.js:1738 -#: templates/js/translated/part.js:1816 templates/js/translated/stock.js:377 -#: templates/js/translated/stock.js:2069 templates/js/translated/stock.js:2171 +#: templates/js/translated/order.js:891 templates/js/translated/order.js:1204 +#: templates/js/translated/order.js:1282 templates/js/translated/order.js:1289 +#: templates/js/translated/order.js:1378 templates/js/translated/order.js:1478 +#: templates/js/translated/part.js:843 templates/js/translated/part.js:1796 +#: templates/js/translated/part.js:1919 templates/js/translated/part.js:1997 +#: templates/js/translated/stock.js:378 templates/js/translated/stock.js:2151 +#: templates/js/translated/stock.js:2253 msgid "Quantity" msgstr "Quantità" @@ -602,8 +604,8 @@ msgid "Enter quantity for build output" msgstr "Inserisci la quantità per l'output di compilazione" #: build/forms.py:41 order/forms.py:96 stock/forms.py:95 -#: stock/serializers.py:307 templates/js/translated/stock.js:224 -#: templates/js/translated/stock.js:378 +#: stock/serializers.py:312 templates/js/translated/stock.js:225 +#: templates/js/translated/stock.js:379 msgid "Serial Numbers" msgstr "Codice Seriale" @@ -646,7 +648,7 @@ msgstr "" #: build/templates/build/index.html:8 build/templates/build/index.html:12 #: order/templates/order/sales_order_detail.html:42 #: order/templates/order/so_sidebar.html:7 -#: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:221 +#: part/templates/part/part_sidebar.html:20 templates/InvenTree/index.html:221 #: templates/InvenTree/search.html:145 #: templates/InvenTree/settings/sidebar.html:42 users/models.py:44 msgid "Build Orders" @@ -662,7 +664,7 @@ msgstr "" #: report/templates/report/inventree_po_report.html:92 #: report/templates/report/inventree_so_report.html:92 #: templates/js/translated/bom.js:435 templates/js/translated/build.js:1119 -#: templates/js/translated/order.js:886 templates/js/translated/order.js:1473 +#: templates/js/translated/order.js:885 templates/js/translated/order.js:1472 msgid "Reference" msgstr "Riferimento" @@ -670,7 +672,7 @@ msgstr "Riferimento" msgid "Brief description of the build" msgstr "" -#: build/models.py:219 build/templates/build/build_base.html:156 +#: build/models.py:219 build/templates/build/build_base.html:164 #: build/templates/build/detail.html:88 msgid "Parent Build" msgstr "" @@ -679,7 +681,7 @@ msgstr "" msgid "BuildOrder to which this build is allocated" msgstr "" -#: build/models.py:225 build/templates/build/build_base.html:119 +#: build/models.py:225 build/templates/build/build_base.html:77 #: build/templates/build/detail.html:30 company/models.py:705 #: order/models.py:789 order/models.py:860 #: order/templates/order/order_wizard/select_parts.html:32 part/models.py:357 @@ -700,10 +702,10 @@ msgstr "" #: templates/js/translated/build.js:988 templates/js/translated/build.js:1359 #: templates/js/translated/build.js:1626 templates/js/translated/company.js:489 #: templates/js/translated/company.js:746 templates/js/translated/order.js:426 -#: templates/js/translated/order.js:840 templates/js/translated/order.js:1457 -#: templates/js/translated/part.js:737 templates/js/translated/part.js:818 -#: templates/js/translated/part.js:985 templates/js/translated/stock.js:508 -#: templates/js/translated/stock.js:1108 templates/js/translated/stock.js:2159 +#: templates/js/translated/order.js:839 templates/js/translated/order.js:1456 +#: templates/js/translated/part.js:918 templates/js/translated/part.js:999 +#: templates/js/translated/part.js:1166 templates/js/translated/stock.js:590 +#: templates/js/translated/stock.js:1190 templates/js/translated/stock.js:2241 msgid "Part" msgstr "Articolo" @@ -751,7 +753,7 @@ msgstr "Articoli completati" msgid "Number of stock items which have been completed" msgstr "" -#: build/models.py:277 part/templates/part/part_base.html:216 +#: build/models.py:277 part/templates/part/part_base.html:234 msgid "Build Status" msgstr "" @@ -759,7 +761,7 @@ msgstr "" msgid "Build status code" msgstr "" -#: build/models.py:285 stock/models.py:544 +#: build/models.py:285 stock/models.py:534 msgid "Batch Code" msgstr "" @@ -768,7 +770,7 @@ msgid "Batch code for this build output" msgstr "" #: build/models.py:292 order/models.py:165 part/models.py:936 -#: part/templates/part/detail.html:86 templates/js/translated/order.js:1104 +#: part/templates/part/part_base.html:313 templates/js/translated/order.js:1103 msgid "Creation Date" msgstr "Data di creazione" @@ -797,12 +799,12 @@ msgstr "Rilasciato da" msgid "User who issued this build order" msgstr "" -#: build/models.py:323 build/templates/build/build_base.html:177 +#: build/models.py:323 build/templates/build/build_base.html:185 #: build/templates/build/detail.html:116 order/models.py:179 -#: order/templates/order/order_base.html:154 -#: order/templates/order/sales_order_base.html:161 part/models.py:940 +#: order/templates/order/order_base.html:158 +#: order/templates/order/sales_order_base.html:162 part/models.py:940 #: report/templates/report/inventree_build_order_base.html:159 -#: templates/js/translated/build.js:1680 templates/js/translated/order.js:700 +#: templates/js/translated/build.js:1680 templates/js/translated/order.js:699 msgid "Responsible" msgstr "Responsabile" @@ -811,10 +813,10 @@ msgid "User responsible for this build order" msgstr "" #: build/models.py:329 build/templates/build/detail.html:102 -#: company/templates/company/manufacturer_part.html:87 -#: company/templates/company/supplier_part.html:88 -#: part/templates/part/detail.html:80 stock/models.py:538 -#: stock/templates/stock/item_base.html:346 +#: company/templates/company/manufacturer_part.html:102 +#: company/templates/company/supplier_part.html:126 +#: part/templates/part/part_base.html:354 stock/models.py:528 +#: stock/templates/stock/item_base.html:374 msgid "External Link" msgstr "Collegamento esterno" @@ -824,15 +826,15 @@ msgstr "Collegamento esterno" #: order/models.py:183 order/models.py:738 #: order/templates/order/po_sidebar.html:11 #: order/templates/order/so_sidebar.html:11 part/models.py:925 -#: part/templates/part/detail.html:223 part/templates/part/part_sidebar.html:52 +#: part/templates/part/detail.html:116 part/templates/part/part_sidebar.html:50 #: report/templates/report/inventree_build_order_base.html:173 -#: stock/forms.py:154 stock/forms.py:204 stock/forms.py:238 stock/models.py:610 -#: stock/models.py:1774 stock/models.py:1880 stock/serializers.py:325 -#: stock/serializers.py:583 stock/templates/stock/stock_sidebar.html:21 +#: stock/forms.py:154 stock/forms.py:204 stock/forms.py:238 stock/models.py:600 +#: stock/models.py:1764 stock/models.py:1870 stock/serializers.py:330 +#: stock/serializers.py:588 stock/templates/stock/stock_sidebar.html:21 #: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:599 -#: templates/js/translated/company.js:842 templates/js/translated/order.js:985 -#: templates/js/translated/order.js:1583 templates/js/translated/stock.js:891 -#: templates/js/translated/stock.js:1370 +#: templates/js/translated/company.js:842 templates/js/translated/order.js:984 +#: templates/js/translated/order.js:1582 templates/js/translated/stock.js:973 +#: templates/js/translated/stock.js:1452 msgid "Notes" msgstr "Note" @@ -877,7 +879,7 @@ msgstr "La quantità deve essere 1 per lo stock serializzato" msgid "Selected stock item not found in BOM" msgstr "Articolo in giacenza selezionato non trovato nel BOM" -#: build/models.py:1253 stock/templates/stock/item_base.html:318 +#: build/models.py:1253 stock/templates/stock/item_base.html:346 #: templates/InvenTree/search.html:143 templates/js/translated/build.js:1599 #: templates/navbar.html:33 msgid "Build" @@ -890,11 +892,11 @@ msgstr "" #: build/models.py:1270 build/serializers.py:328 #: stock/templates/stock/item_base.html:8 #: stock/templates/stock/item_base.html:16 -#: stock/templates/stock/item_base.html:340 +#: stock/templates/stock/item_base.html:368 #: templates/js/translated/build.js:408 templates/js/translated/build.js:413 #: templates/js/translated/build.js:1361 templates/js/translated/build.js:1742 -#: templates/js/translated/order.js:1178 templates/js/translated/order.js:1183 -#: templates/js/translated/stock.js:2020 +#: templates/js/translated/order.js:1177 templates/js/translated/order.js:1182 +#: templates/js/translated/stock.js:2102 msgid "Stock Item" msgstr "Articoli in magazzino" @@ -934,16 +936,16 @@ msgstr "" msgid "This build output is not fully allocated" msgstr "" -#: build/serializers.py:190 order/serializers.py:219 order/serializers.py:287 -#: stock/forms.py:236 stock/serializers.py:318 stock/serializers.py:685 -#: stock/templates/stock/item_base.html:286 +#: build/serializers.py:190 order/serializers.py:228 order/serializers.py:296 +#: stock/forms.py:236 stock/serializers.py:323 stock/serializers.py:690 +#: stock/templates/stock/item_base.html:314 #: templates/js/translated/barcode.js:384 #: templates/js/translated/barcode.js:557 templates/js/translated/build.js:420 #: templates/js/translated/build.js:1027 templates/js/translated/order.js:348 -#: templates/js/translated/order.js:1190 templates/js/translated/order.js:1298 -#: templates/js/translated/order.js:1304 templates/js/translated/part.js:181 -#: templates/js/translated/stock.js:510 templates/js/translated/stock.js:1251 -#: templates/js/translated/stock.js:1961 +#: templates/js/translated/order.js:1189 templates/js/translated/order.js:1297 +#: templates/js/translated/order.js:1303 templates/js/translated/part.js:177 +#: templates/js/translated/stock.js:592 templates/js/translated/stock.js:1333 +#: templates/js/translated/stock.js:2043 msgid "Location" msgstr "Posizione" @@ -951,13 +953,13 @@ msgstr "Posizione" msgid "Location for completed build outputs" msgstr "Posizione per gli output di build completati" -#: build/serializers.py:197 build/templates/build/build_base.html:129 +#: build/serializers.py:197 build/templates/build/build_base.html:137 #: build/templates/build/detail.html:63 order/models.py:572 -#: order/serializers.py:240 stock/templates/stock/item_base.html:409 +#: order/serializers.py:249 stock/templates/stock/item_base.html:180 #: templates/js/translated/barcode.js:140 templates/js/translated/build.js:1655 -#: templates/js/translated/order.js:431 templates/js/translated/order.js:677 -#: templates/js/translated/order.js:1096 templates/js/translated/stock.js:1226 -#: templates/js/translated/stock.js:2038 templates/js/translated/stock.js:2187 +#: templates/js/translated/order.js:431 templates/js/translated/order.js:1095 +#: templates/js/translated/stock.js:1308 templates/js/translated/stock.js:2120 +#: templates/js/translated/stock.js:2269 msgid "Status" msgstr "Stato" @@ -986,8 +988,8 @@ msgstr "" msgid "Item must be in stock" msgstr "L'articolo deve essere disponibile" -#: build/serializers.py:348 order/models.py:316 order/serializers.py:233 -#: stock/models.py:381 stock/models.py:1103 stock/serializers.py:298 +#: build/serializers.py:348 order/models.py:316 order/serializers.py:242 +#: stock/models.py:371 stock/models.py:1093 stock/serializers.py:303 msgid "Quantity must be greater than zero" msgstr "La quantità deve essere maggiore di zero" @@ -1031,7 +1033,7 @@ msgid "Edit Build" msgstr "" #: build/templates/build/build_base.html:56 -#: build/templates/build/build_base.html:207 build/views.py:56 +#: build/templates/build/build_base.html:215 build/views.py:56 msgid "Cancel Build" msgstr "" @@ -1041,93 +1043,95 @@ msgstr "" #: build/templates/build/build_base.html:64 #: build/templates/build/build_base.html:65 -#: build/templates/build/build_base.html:223 +#: build/templates/build/build_base.html:231 msgid "Complete Build" msgstr "" -#: build/templates/build/build_base.html:79 +#: build/templates/build/build_base.html:82 +msgid "Build Description" +msgstr "" + +#: build/templates/build/build_base.html:91 #, python-format msgid "This Build Order is allocated to Sales Order %(link)s" msgstr "" -#: build/templates/build/build_base.html:86 +#: build/templates/build/build_base.html:98 #, python-format msgid "This Build Order is a child of Build Order %(link)s" msgstr "" -#: build/templates/build/build_base.html:93 +#: build/templates/build/build_base.html:105 msgid "Build Order is ready to mark as completed" msgstr "" -#: build/templates/build/build_base.html:98 +#: build/templates/build/build_base.html:110 msgid "Build Order cannot be completed as outstanding outputs remain" msgstr "" -#: build/templates/build/build_base.html:103 +#: build/templates/build/build_base.html:115 msgid "Required build quantity has not yet been completed" msgstr "" -#: build/templates/build/build_base.html:108 +#: build/templates/build/build_base.html:120 msgid "Stock has not been fully allocated to this Build Order" msgstr "" -#: build/templates/build/build_base.html:138 +#: build/templates/build/build_base.html:146 #: build/templates/build/detail.html:132 -#: order/templates/order/order_base.html:140 -#: order/templates/order/sales_order_base.html:140 +#: order/templates/order/order_base.html:144 +#: order/templates/order/sales_order_base.html:141 #: report/templates/report/inventree_build_order_base.html:126 -#: templates/js/translated/build.js:1692 templates/js/translated/order.js:690 -#: templates/js/translated/order.js:1109 +#: templates/js/translated/build.js:1692 templates/js/translated/order.js:689 +#: templates/js/translated/order.js:1108 msgid "Target Date" msgstr "Data scadenza" -#: build/templates/build/build_base.html:143 +#: build/templates/build/build_base.html:151 #, python-format msgid "This build was due on %(target)s" msgstr "" -#: build/templates/build/build_base.html:143 -#: build/templates/build/build_base.html:188 -#: order/templates/order/order_base.html:81 -#: order/templates/order/order_base.html:102 -#: order/templates/order/sales_order_base.html:78 -#: order/templates/order/sales_order_base.html:107 +#: build/templates/build/build_base.html:151 +#: build/templates/build/build_base.html:196 +#: order/templates/order/order_base.html:98 +#: order/templates/order/sales_order_base.html:93 #: templates/js/translated/table_filters.js:294 #: templates/js/translated/table_filters.js:322 #: templates/js/translated/table_filters.js:339 msgid "Overdue" msgstr "In ritardo" -#: build/templates/build/build_base.html:150 +#: build/templates/build/build_base.html:158 #: build/templates/build/detail.html:68 build/templates/build/detail.html:143 #: templates/js/translated/build.js:1641 #: templates/js/translated/table_filters.js:304 msgid "Completed" msgstr "Completato" -#: build/templates/build/build_base.html:163 +#: build/templates/build/build_base.html:171 #: build/templates/build/detail.html:95 order/models.py:857 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: order/templates/order/sales_order_ship.html:25 #: report/templates/report/inventree_build_order_base.html:136 #: report/templates/report/inventree_so_report.html:77 -#: stock/templates/stock/item_base.html:280 -#: templates/js/translated/order.js:1051 +#: stock/templates/stock/item_base.html:308 +#: templates/js/translated/order.js:1050 msgid "Sales Order" msgstr "Ordini di Vendita" -#: build/templates/build/build_base.html:170 +#: build/templates/build/build_base.html:178 #: build/templates/build/detail.html:109 #: report/templates/report/inventree_build_order_base.html:153 msgid "Issued By" msgstr "Inviato da" -#: build/templates/build/build_base.html:215 +#: build/templates/build/build_base.html:223 msgid "Incomplete Outputs" msgstr "Output Incompleti" -#: build/templates/build/build_base.html:216 +#: build/templates/build/build_base.html:224 msgid "Build Order cannot be completed as incomplete build outputs remain" msgstr "" @@ -1188,7 +1192,7 @@ msgid "Stock can be taken from any available location." msgstr "Lo stock può essere prelevato da qualsiasi posizione disponibile." #: build/templates/build/detail.html:50 order/models.py:811 stock/forms.py:150 -#: templates/js/translated/order.js:432 templates/js/translated/order.js:974 +#: templates/js/translated/order.js:432 templates/js/translated/order.js:973 msgid "Destination" msgstr "Destinazione" @@ -1201,16 +1205,16 @@ msgid "Allocated Parts" msgstr "" #: build/templates/build/detail.html:81 -#: stock/templates/stock/item_base.html:304 -#: templates/js/translated/stock.js:1240 templates/js/translated/stock.js:2194 +#: stock/templates/stock/item_base.html:332 +#: templates/js/translated/stock.js:1322 templates/js/translated/stock.js:2276 #: templates/js/translated/table_filters.js:151 #: templates/js/translated/table_filters.js:233 msgid "Batch" msgstr "Lotto" #: build/templates/build/detail.html:127 -#: order/templates/order/order_base.html:127 -#: order/templates/order/sales_order_base.html:134 +#: order/templates/order/order_base.html:131 +#: order/templates/order/sales_order_base.html:135 #: templates/js/translated/build.js:1663 msgid "Created" msgstr "Creato" @@ -1254,7 +1258,7 @@ msgstr "Ordina articoli richiesti" #: build/templates/build/detail.html:185 #: company/templates/company/detail.html:38 #: company/templates/company/detail.html:85 order/views.py:509 -#: part/templates/part/category.html:166 +#: part/templates/part/category.html:173 msgid "Order Parts" msgstr "Ordine Articoli" @@ -1306,8 +1310,8 @@ msgstr "" #: order/templates/order/po_sidebar.html:9 #: order/templates/order/purchase_order_detail.html:60 #: order/templates/order/sales_order_detail.html:52 -#: order/templates/order/so_sidebar.html:9 part/templates/part/detail.html:300 -#: part/templates/part/part_sidebar.html:50 stock/templates/stock/item.html:95 +#: order/templates/order/so_sidebar.html:9 part/templates/part/detail.html:193 +#: part/templates/part/part_sidebar.html:48 stock/templates/stock/item.html:95 #: stock/templates/stock/stock_sidebar.html:19 msgid "Attachments" msgstr "Allegati" @@ -1323,7 +1327,7 @@ msgstr "Genera Note" #: order/templates/order/purchase_order_detail.html:108 #: order/templates/order/sales_order_detail.html:72 #: order/templates/order/sales_order_detail.html:99 -#: part/templates/part/detail.html:227 stock/templates/stock/item.html:115 +#: part/templates/part/detail.html:120 stock/templates/stock/item.html:115 #: stock/templates/stock/item.html:205 msgid "Edit Notes" msgstr "Modifica Note" @@ -1336,7 +1340,7 @@ msgstr "Assegnazione Completa" msgid "All untracked stock items have been allocated" msgstr "Tutte le giacenze non tracciate sono state assegnate" -#: build/templates/build/index.html:18 part/templates/part/detail.html:407 +#: build/templates/build/index.html:18 part/templates/part/detail.html:300 msgid "New Build Order" msgstr "" @@ -1380,7 +1384,7 @@ msgstr "" msgid "Maximum output quantity is " msgstr "" -#: build/views.py:122 stock/serializers.py:356 stock/views.py:1290 +#: build/views.py:122 stock/serializers.py:361 stock/views.py:1290 msgid "Serial numbers already exist" msgstr "Numeri di serie già esistenti" @@ -1675,7 +1679,7 @@ msgid "Parts are trackable by default" msgstr "Gli articoli sono tracciabili per impostazione predefinita" #: common/models.py:745 part/models.py:920 -#: part/templates/part/part_base.html:144 +#: part/templates/part/part_base.html:147 #: templates/js/translated/table_filters.js:42 msgid "Virtual" msgstr "Virtuale" @@ -2142,7 +2146,7 @@ msgstr "" #: common/models.py:1233 company/serializers.py:264 #: company/templates/company/supplier_part.html:256 -#: templates/js/translated/part.js:1620 +#: templates/js/translated/part.js:852 templates/js/translated/part.js:1801 msgid "Price" msgstr "Prezzo" @@ -2206,7 +2210,7 @@ msgstr "Descrizione azienda" msgid "Description of the company" msgstr "Descrizione dell'azienda" -#: company/models.py:112 company/templates/company/company_base.html:70 +#: company/models.py:112 company/templates/company/company_base.html:97 #: templates/js/translated/company.js:349 msgid "Website" msgstr "Sito Web" @@ -2215,7 +2219,7 @@ msgstr "Sito Web" msgid "Company website URL" msgstr "Sito web aziendale" -#: company/models.py:117 company/templates/company/company_base.html:88 +#: company/models.py:117 company/templates/company/company_base.html:115 msgid "Address" msgstr "Indirizzo" @@ -2231,7 +2235,7 @@ msgstr "Telefono" msgid "Contact phone number" msgstr "Numero di telefono di contatto" -#: company/models.py:125 company/templates/company/company_base.html:102 +#: company/models.py:125 company/templates/company/company_base.html:129 #: templates/InvenTree/settings/user.html:47 msgid "Email" msgstr "Email" @@ -2240,7 +2244,7 @@ msgstr "Email" msgid "Contact email address" msgstr "Indirizzo email" -#: company/models.py:128 company/templates/company/company_base.html:109 +#: company/models.py:128 company/templates/company/company_base.html:136 msgid "Contact" msgstr "Contatto" @@ -2281,7 +2285,7 @@ msgid "Does this company manufacture parts?" msgstr "" #: company/models.py:152 company/serializers.py:270 -#: company/templates/company/company_base.html:76 stock/serializers.py:172 +#: company/templates/company/company_base.html:103 stock/serializers.py:177 msgid "Currency" msgstr "Valuta" @@ -2289,8 +2293,8 @@ msgstr "Valuta" msgid "Default currency used for this company" msgstr "" -#: company/models.py:320 company/models.py:535 stock/models.py:484 -#: stock/templates/stock/item_base.html:224 +#: company/models.py:320 company/models.py:535 stock/models.py:474 +#: stock/templates/stock/item_base.html:135 msgid "Base Part" msgstr "Articolo di base" @@ -2298,29 +2302,29 @@ msgstr "Articolo di base" msgid "Select part" msgstr "Seleziona articolo" -#: company/models.py:335 company/templates/company/company_base.html:116 -#: company/templates/company/manufacturer_part.html:93 -#: company/templates/company/supplier_part.html:104 -#: stock/templates/stock/item_base.html:353 +#: company/models.py:335 company/templates/company/company_base.html:73 +#: company/templates/company/manufacturer_part.html:91 +#: company/templates/company/supplier_part.html:97 +#: stock/templates/stock/item_base.html:381 #: templates/js/translated/company.js:333 #: templates/js/translated/company.js:514 -#: templates/js/translated/company.js:797 templates/js/translated/part.js:229 +#: templates/js/translated/company.js:797 templates/js/translated/part.js:232 msgid "Manufacturer" msgstr "Produttore" -#: company/models.py:336 templates/js/translated/part.js:230 +#: company/models.py:336 templates/js/translated/part.js:233 msgid "Select manufacturer" msgstr "Seleziona Produttore" -#: company/models.py:342 company/templates/company/manufacturer_part.html:97 -#: company/templates/company/supplier_part.html:112 +#: company/models.py:342 company/templates/company/manufacturer_part.html:96 +#: company/templates/company/supplier_part.html:105 #: templates/js/translated/company.js:530 -#: templates/js/translated/company.js:815 templates/js/translated/order.js:874 -#: templates/js/translated/part.js:240 +#: templates/js/translated/company.js:815 templates/js/translated/order.js:873 +#: templates/js/translated/part.js:243 templates/js/translated/part.js:832 msgid "MPN" msgstr "Codice articolo produttore (MPN)" -#: company/models.py:343 templates/js/translated/part.js:241 +#: company/models.py:343 templates/js/translated/part.js:244 msgid "Manufacturer Part Number" msgstr "Codice articolo produttore" @@ -2335,7 +2339,7 @@ msgstr "Descrizione articolo costruttore" #: company/models.py:409 company/models.py:558 #: company/templates/company/manufacturer_part.html:6 #: company/templates/company/manufacturer_part.html:23 -#: stock/templates/stock/item_base.html:363 +#: stock/templates/stock/item_base.html:391 msgid "Manufacturer Part" msgstr "Codice articolo produttore" @@ -2345,8 +2349,8 @@ msgstr "Nome parametro" #: company/models.py:422 #: report/templates/report/inventree_test_report_base.html:95 -#: stock/models.py:1867 templates/js/translated/company.js:644 -#: templates/js/translated/part.js:645 templates/js/translated/stock.js:878 +#: stock/models.py:1857 templates/js/translated/company.js:644 +#: templates/js/translated/part.js:652 templates/js/translated/stock.js:960 msgid "Value" msgstr "Valore" @@ -2355,9 +2359,9 @@ msgid "Parameter value" msgstr "Valore del parametro" #: company/models.py:429 part/models.py:882 part/models.py:2397 -#: part/templates/part/detail.html:59 +#: part/templates/part/part_base.html:288 #: templates/InvenTree/settings/settings.html:264 -#: templates/js/translated/company.js:650 templates/js/translated/part.js:651 +#: templates/js/translated/company.js:650 templates/js/translated/part.js:658 msgid "Units" msgstr "Unità" @@ -2369,28 +2373,28 @@ msgstr "Unità parametri" msgid "Linked manufacturer part must reference the same base part" msgstr "L'articolo del costruttore collegato deve riferirsi alla stesso articolo" -#: company/models.py:545 company/templates/company/company_base.html:121 -#: company/templates/company/supplier_part.html:94 order/models.py:263 -#: order/templates/order/order_base.html:108 +#: company/models.py:545 company/templates/company/company_base.html:78 +#: company/templates/company/supplier_part.html:87 order/models.py:263 +#: order/templates/order/order_base.html:112 #: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:219 -#: part/bom.py:247 stock/templates/stock/item_base.html:370 +#: part/bom.py:247 stock/templates/stock/item_base.html:398 #: templates/js/translated/company.js:337 -#: templates/js/translated/company.js:771 templates/js/translated/order.js:660 -#: templates/js/translated/part.js:210 +#: templates/js/translated/company.js:771 templates/js/translated/order.js:667 +#: templates/js/translated/part.js:213 templates/js/translated/part.js:800 msgid "Supplier" msgstr "Fornitore" -#: company/models.py:546 templates/js/translated/part.js:211 +#: company/models.py:546 templates/js/translated/part.js:214 msgid "Select supplier" msgstr "Seleziona fornitore" -#: company/models.py:551 company/templates/company/supplier_part.html:98 -#: part/bom.py:220 part/bom.py:248 templates/js/translated/order.js:861 -#: templates/js/translated/part.js:221 +#: company/models.py:551 company/templates/company/supplier_part.html:91 +#: part/bom.py:220 part/bom.py:248 templates/js/translated/order.js:860 +#: templates/js/translated/part.js:224 templates/js/translated/part.js:818 msgid "SKU" msgstr "SKU" -#: company/models.py:552 templates/js/translated/part.js:222 +#: company/models.py:552 templates/js/translated/part.js:225 msgid "Supplier stock keeping unit" msgstr "" @@ -2406,7 +2410,7 @@ msgstr "URL dell'articolo del fornitore" msgid "Supplier part description" msgstr "Descrizione articolo fornitore" -#: company/models.py:576 company/templates/company/supplier_part.html:126 +#: company/models.py:576 company/templates/company/supplier_part.html:119 #: part/models.py:2588 report/templates/report/inventree_po_report.html:93 #: report/templates/report/inventree_so_report.html:93 msgid "Note" @@ -2420,9 +2424,9 @@ msgstr "costo base" msgid "Minimum charge (e.g. stocking fee)" msgstr "Onere minimo (ad esempio tassa di stoccaggio)" -#: company/models.py:582 company/templates/company/supplier_part.html:119 -#: stock/models.py:507 stock/templates/stock/item_base.html:311 -#: templates/js/translated/company.js:847 templates/js/translated/stock.js:1366 +#: company/models.py:582 company/templates/company/supplier_part.html:112 +#: stock/models.py:497 stock/templates/stock/item_base.html:339 +#: templates/js/translated/company.js:847 templates/js/translated/stock.js:1448 msgid "Packaging" msgstr "Confezionamento" @@ -2457,43 +2461,56 @@ msgstr "Azienda" msgid "Create Purchase Order" msgstr "Crea ordine d'acquisto" -#: company/templates/company/company_base.html:27 +#: company/templates/company/company_base.html:26 +msgid "Company actions" +msgstr "" + +#: company/templates/company/company_base.html:31 msgid "Edit company information" msgstr "Modifica le informazioni dell'azienda" #: company/templates/company/company_base.html:32 -#: company/templates/company/company_base.html:148 +#: templates/js/translated/company.js:265 +msgid "Edit Company" +msgstr "Modifica azienda" + +#: company/templates/company/company_base.html:36 +msgid "Delete company" +msgstr "" + +#: company/templates/company/company_base.html:37 +#: company/templates/company/company_base.html:159 msgid "Delete Company" msgstr "Elimina Azienda" -#: company/templates/company/company_base.html:48 +#: company/templates/company/company_base.html:53 #: part/templates/part/part_thumb.html:12 msgid "Upload new image" msgstr "Carica nuova immagine" -#: company/templates/company/company_base.html:51 +#: company/templates/company/company_base.html:56 #: part/templates/part/part_thumb.html:14 msgid "Download image from URL" msgstr "Scarica immagine dall'URL" -#: company/templates/company/company_base.html:81 -msgid "Uses default currency" -msgstr "Valuta predefinita" - -#: company/templates/company/company_base.html:95 -msgid "Phone" -msgstr "Telefono" - -#: company/templates/company/company_base.html:126 order/models.py:567 -#: order/templates/order/sales_order_base.html:114 stock/models.py:525 -#: stock/models.py:526 stock/templates/stock/item_base.html:263 -#: templates/js/translated/company.js:329 templates/js/translated/order.js:1073 -#: templates/js/translated/stock.js:2002 +#: company/templates/company/company_base.html:83 order/models.py:567 +#: order/templates/order/sales_order_base.html:115 stock/models.py:515 +#: stock/models.py:516 stock/templates/stock/item_base.html:291 +#: templates/js/translated/company.js:329 templates/js/translated/order.js:1072 +#: templates/js/translated/stock.js:2084 msgid "Customer" msgstr "Cliente" -#: company/templates/company/company_base.html:194 -#: part/templates/part/part_base.html:342 +#: company/templates/company/company_base.html:108 +msgid "Uses default currency" +msgstr "Valuta predefinita" + +#: company/templates/company/company_base.html:122 +msgid "Phone" +msgstr "Telefono" + +#: company/templates/company/company_base.html:205 +#: part/templates/part/part_base.html:471 msgid "Upload Image" msgstr "Carica immagine" @@ -2509,23 +2526,23 @@ msgid "Create new supplier part" msgstr "Crea nuovo fornitore" #: company/templates/company/detail.html:20 -#: company/templates/company/manufacturer_part.html:112 -#: part/templates/part/detail.html:440 +#: company/templates/company/manufacturer_part.html:118 +#: part/templates/part/detail.html:333 msgid "New Supplier Part" msgstr "Nuovo fornitore articolo" #: company/templates/company/detail.html:32 #: company/templates/company/detail.html:79 -#: company/templates/company/manufacturer_part.html:121 -#: company/templates/company/manufacturer_part.html:150 -#: part/templates/part/category.html:160 part/templates/part/detail.html:449 -#: part/templates/part/detail.html:477 +#: company/templates/company/manufacturer_part.html:127 +#: company/templates/company/manufacturer_part.html:156 +#: part/templates/part/category.html:167 part/templates/part/detail.html:342 +#: part/templates/part/detail.html:370 msgid "Options" msgstr "Opzioni" #: company/templates/company/detail.html:37 #: company/templates/company/detail.html:84 -#: part/templates/part/category.html:166 +#: part/templates/part/category.html:173 msgid "Order parts" msgstr "Articoli ordinati" @@ -2547,7 +2564,7 @@ msgstr "" msgid "Create new manufacturer part" msgstr "" -#: company/templates/company/detail.html:67 part/templates/part/detail.html:467 +#: company/templates/company/detail.html:67 part/templates/part/detail.html:360 msgid "New Manufacturer Part" msgstr "" @@ -2561,7 +2578,7 @@ msgstr "Giacenza Fornitore" #: order/templates/order/order_base.html:13 #: order/templates/order/purchase_orders.html:8 #: order/templates/order/purchase_orders.html:12 -#: part/templates/part/detail.html:171 part/templates/part/part_sidebar.html:35 +#: part/templates/part/detail.html:64 part/templates/part/part_sidebar.html:33 #: templates/InvenTree/index.html:252 templates/InvenTree/search.html:203 #: templates/InvenTree/settings/sidebar.html:44 templates/navbar.html:45 #: users/models.py:45 @@ -2583,7 +2600,7 @@ msgstr "" #: order/templates/order/sales_order_base.html:13 #: order/templates/order/sales_orders.html:8 #: order/templates/order/sales_orders.html:15 -#: part/templates/part/detail.html:194 part/templates/part/part_sidebar.html:39 +#: part/templates/part/detail.html:87 part/templates/part/part_sidebar.html:37 #: templates/InvenTree/index.html:283 templates/InvenTree/search.html:223 #: templates/InvenTree/settings/sidebar.html:46 templates/navbar.html:56 #: users/models.py:46 @@ -2610,14 +2627,14 @@ msgid "Company Notes" msgstr "" #: company/templates/company/detail.html:383 -#: company/templates/company/manufacturer_part.html:209 -#: part/templates/part/detail.html:520 +#: company/templates/company/manufacturer_part.html:215 +#: part/templates/part/detail.html:413 msgid "Delete Supplier Parts?" msgstr "Elimina articoli fornitore?" #: company/templates/company/detail.html:384 -#: company/templates/company/manufacturer_part.html:210 -#: part/templates/part/detail.html:521 +#: company/templates/company/manufacturer_part.html:216 +#: part/templates/part/detail.html:414 msgid "All selected supplier parts will be deleted" msgstr "Tutte gli articoli del fornitore selezionati saranno eliminati" @@ -2634,7 +2651,7 @@ msgstr "Produttori" #: company/templates/company/manufacturer_part.html:35 #: company/templates/company/supplier_part.html:34 #: company/templates/company/supplier_part.html:159 -#: part/templates/part/detail.html:174 part/templates/part/part_base.html:76 +#: part/templates/part/detail.html:67 part/templates/part/part_base.html:76 msgid "Order part" msgstr "Articoli ordinati" @@ -2648,60 +2665,60 @@ msgstr "" msgid "Delete manufacturer part" msgstr "" -#: company/templates/company/manufacturer_part.html:70 -#: company/templates/company/supplier_part.html:71 +#: company/templates/company/manufacturer_part.html:66 +#: company/templates/company/supplier_part.html:63 msgid "Internal Part" msgstr "Articolo interno" -#: company/templates/company/manufacturer_part.html:108 +#: company/templates/company/manufacturer_part.html:114 #: company/templates/company/supplier_part.html:15 company/views.py:49 -#: part/templates/part/part_sidebar.html:33 part/templates/part/prices.html:163 +#: part/templates/part/part_sidebar.html:31 part/templates/part/prices.html:163 #: templates/InvenTree/search.html:194 templates/navbar.html:43 msgid "Suppliers" msgstr "Fornitori" -#: company/templates/company/manufacturer_part.html:123 -#: part/templates/part/detail.html:451 +#: company/templates/company/manufacturer_part.html:129 +#: part/templates/part/detail.html:344 msgid "Delete supplier parts" msgstr "Elimina articolo fornitore" -#: company/templates/company/manufacturer_part.html:123 -#: company/templates/company/manufacturer_part.html:152 -#: company/templates/company/manufacturer_part.html:248 -#: part/templates/part/detail.html:451 part/templates/part/detail.html:479 +#: company/templates/company/manufacturer_part.html:129 +#: company/templates/company/manufacturer_part.html:158 +#: company/templates/company/manufacturer_part.html:254 +#: part/templates/part/detail.html:344 part/templates/part/detail.html:372 #: templates/js/translated/company.js:425 templates/js/translated/helpers.js:31 #: users/models.py:204 msgid "Delete" msgstr "Elimina" -#: company/templates/company/manufacturer_part.html:137 +#: company/templates/company/manufacturer_part.html:143 #: company/templates/company/manufacturer_part_sidebar.html:5 #: part/templates/part/category_sidebar.html:17 -#: part/templates/part/detail.html:277 part/templates/part/part_sidebar.html:10 +#: part/templates/part/detail.html:170 part/templates/part/part_sidebar.html:8 msgid "Parameters" msgstr "Parametri" -#: company/templates/company/manufacturer_part.html:141 -#: part/templates/part/detail.html:282 +#: company/templates/company/manufacturer_part.html:147 +#: part/templates/part/detail.html:175 #: templates/InvenTree/settings/category.html:12 #: templates/InvenTree/settings/part.html:65 msgid "New Parameter" msgstr "Nuovo Parametro" -#: company/templates/company/manufacturer_part.html:152 +#: company/templates/company/manufacturer_part.html:158 msgid "Delete parameters" msgstr "Elimina il parametro" -#: company/templates/company/manufacturer_part.html:185 -#: part/templates/part/detail.html:976 +#: company/templates/company/manufacturer_part.html:191 +#: part/templates/part/detail.html:867 msgid "Add Parameter" msgstr "Aggiungi parametro" -#: company/templates/company/manufacturer_part.html:233 +#: company/templates/company/manufacturer_part.html:239 msgid "Selected parameters will be deleted" msgstr "Gli eventi selezionati verranno eliminati" -#: company/templates/company/manufacturer_part.html:245 +#: company/templates/company/manufacturer_part.html:251 msgid "Delete Parameters" msgstr "Elimina Parametri" @@ -2722,9 +2739,9 @@ msgid "Assigned Stock Items" msgstr "" #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 stock/models.py:492 -#: stock/templates/stock/item_base.html:375 -#: templates/js/translated/company.js:787 templates/js/translated/stock.js:1323 +#: company/templates/company/supplier_part.html:24 stock/models.py:482 +#: stock/templates/stock/item_base.html:403 +#: templates/js/translated/company.js:787 templates/js/translated/stock.js:1405 msgid "Supplier Part" msgstr "Articolo Fornitore" @@ -2744,13 +2761,13 @@ msgid "Supplier Part Stock" msgstr "Fornitore articolo in giacenza" #: company/templates/company/supplier_part.html:141 -#: part/templates/part/detail.html:127 stock/templates/stock/location.html:147 +#: part/templates/part/detail.html:20 stock/templates/stock/location.html:162 msgid "Create new stock item" msgstr "Crea nuova allocazione magazzino" #: company/templates/company/supplier_part.html:142 -#: part/templates/part/detail.html:128 stock/templates/stock/location.html:148 -#: templates/js/translated/stock.js:354 +#: part/templates/part/detail.html:21 stock/templates/stock/location.html:163 +#: templates/js/translated/stock.js:355 msgid "New Stock Item" msgstr "Nuovo Elemento in giacenza" @@ -2760,7 +2777,7 @@ msgid "Supplier Part Orders" msgstr "Ordini articoli fornitore" #: company/templates/company/supplier_part.html:160 -#: part/templates/part/detail.html:175 +#: part/templates/part/detail.html:68 msgid "Order Part" msgstr "Ordine Articolo" @@ -2796,15 +2813,15 @@ msgid "Delete price break" msgstr "Cancella riduzione di prezzo" #: company/templates/company/supplier_part_navbar.html:15 -#: part/templates/part/part_sidebar.html:16 +#: part/templates/part/part_sidebar.html:14 #: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:14 #: stock/templates/stock/stock_app_base.html:10 #: templates/InvenTree/search.html:156 #: templates/InvenTree/settings/sidebar.html:40 -#: templates/js/translated/bom.js:216 templates/js/translated/part.js:427 -#: templates/js/translated/part.js:562 templates/js/translated/part.js:878 -#: templates/js/translated/part.js:1039 templates/js/translated/stock.js:509 -#: templates/js/translated/stock.js:1162 templates/navbar.html:26 +#: templates/js/translated/bom.js:216 templates/js/translated/part.js:434 +#: templates/js/translated/part.js:569 templates/js/translated/part.js:1059 +#: templates/js/translated/part.js:1220 templates/js/translated/stock.js:591 +#: templates/js/translated/stock.js:1244 templates/navbar.html:26 msgid "Stock" msgstr "Magazzino" @@ -2818,16 +2835,16 @@ msgid "Supplier Part Pricing" msgstr "Prezzo articolo del fornitore" #: company/templates/company/supplier_part_navbar.html:29 -#: part/templates/part/part_sidebar.html:30 +#: part/templates/part/part_sidebar.html:28 msgid "Pricing" msgstr "Prezzi" #: company/templates/company/supplier_part_sidebar.html:5 -#: stock/templates/stock/location.html:118 -#: stock/templates/stock/location.html:132 -#: stock/templates/stock/location.html:144 +#: stock/templates/stock/location.html:133 +#: stock/templates/stock/location.html:147 +#: stock/templates/stock/location.html:159 #: stock/templates/stock/location_sidebar.html:7 -#: templates/InvenTree/search.html:158 templates/js/translated/stock.js:1901 +#: templates/InvenTree/search.html:158 templates/js/translated/stock.js:1983 #: templates/stats.html:93 templates/stats.html:102 users/models.py:43 msgid "Stock Items" msgstr "Articoli in magazzino" @@ -2947,7 +2964,7 @@ msgstr "" msgid "Place order" msgstr "Invia l'ordine" -#: order/forms.py:37 order/templates/order/order_base.html:59 +#: order/forms.py:37 order/templates/order/order_base.html:60 msgid "Mark order as complete" msgstr "Contrassegna ordine come completato" @@ -3000,8 +3017,8 @@ msgstr "Stato ordine d'acquisto" msgid "Company from which the items are being ordered" msgstr "Azienda da cui sono stati ordinati gli articoli" -#: order/models.py:267 order/templates/order/order_base.html:114 -#: templates/js/translated/order.js:669 +#: order/models.py:267 order/templates/order/order_base.html:118 +#: templates/js/translated/order.js:676 msgid "Supplier Reference" msgstr "Riferimento fornitore" @@ -3061,7 +3078,7 @@ msgstr "" msgid "Target date for order completion. Order will be overdue after this date." msgstr "" -#: order/models.py:582 templates/js/translated/order.js:1114 +#: order/models.py:582 templates/js/translated/order.js:1113 msgid "Shipment Date" msgstr "" @@ -3086,16 +3103,16 @@ msgid "Line item notes" msgstr "" #: order/models.py:768 order/models.py:856 -#: templates/js/translated/order.js:1166 +#: templates/js/translated/order.js:1165 msgid "Order" msgstr "" #: order/models.py:769 order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_po_report.html:77 -#: stock/templates/stock/item_base.html:325 -#: templates/js/translated/order.js:638 templates/js/translated/stock.js:1300 -#: templates/js/translated/stock.js:1983 +#: stock/templates/stock/item_base.html:353 +#: templates/js/translated/order.js:638 templates/js/translated/part.js:775 +#: templates/js/translated/stock.js:1382 templates/js/translated/stock.js:2065 msgid "Purchase Order" msgstr "" @@ -3103,9 +3120,10 @@ msgstr "" msgid "Supplier part" msgstr "Articolo Fornitore" -#: order/models.py:797 order/templates/order/order_base.html:147 -#: order/templates/order/sales_order_base.html:154 -#: templates/js/translated/order.js:429 templates/js/translated/order.js:954 +#: order/models.py:797 order/templates/order/order_base.html:151 +#: order/templates/order/sales_order_base.html:155 +#: templates/js/translated/order.js:429 templates/js/translated/order.js:953 +#: templates/js/translated/part.js:847 templates/js/translated/part.js:873 msgid "Received" msgstr "" @@ -3113,9 +3131,9 @@ msgstr "" msgid "Number of items received" msgstr "" -#: order/models.py:805 part/templates/part/prices.html:176 stock/models.py:619 -#: stock/serializers.py:163 stock/templates/stock/item_base.html:332 -#: templates/js/translated/stock.js:1354 +#: order/models.py:805 part/templates/part/prices.html:176 stock/models.py:609 +#: stock/serializers.py:168 stock/templates/stock/item_base.html:360 +#: templates/js/translated/stock.js:1436 msgid "Purchase Price" msgstr "" @@ -3176,47 +3194,47 @@ msgstr "" msgid "Enter stock allocation quantity" msgstr "Inserisci la quantità assegnata alla giacenza" -#: order/serializers.py:169 +#: order/serializers.py:175 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:204 +#: order/serializers.py:213 msgid "Line Item" msgstr "" -#: order/serializers.py:210 +#: order/serializers.py:219 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:220 order/serializers.py:288 +#: order/serializers.py:229 order/serializers.py:297 msgid "Select destination location for received items" msgstr "Seleziona la posizione di destinazione per gli elementi ricevuti" -#: order/serializers.py:244 +#: order/serializers.py:253 msgid "Barcode Hash" msgstr "" -#: order/serializers.py:245 +#: order/serializers.py:254 msgid "Unique identifier field" msgstr "" -#: order/serializers.py:262 +#: order/serializers.py:271 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:300 +#: order/serializers.py:309 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:317 +#: order/serializers.py:326 msgid "Destination location must be specified" msgstr "La destinazione deve essere specificata" -#: order/serializers.py:328 +#: order/serializers.py:337 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:569 +#: order/serializers.py:578 msgid "Sale price currency" msgstr "" @@ -3248,22 +3266,36 @@ msgstr "" msgid "Receive items" msgstr "Ricevere articoli" -#: order/templates/order/order_base.html:93 -#: order/templates/order/sales_order_base.html:98 +#: order/templates/order/order_base.html:58 +#: order/templates/order/purchase_order_detail.html:31 +msgid "Receive Items" +msgstr "" + +#: order/templates/order/order_base.html:62 order/views.py:185 +msgid "Complete Order" +msgstr "" + +#: order/templates/order/order_base.html:84 +#: order/templates/order/sales_order_base.html:79 msgid "Order Reference" msgstr "Riferimento ordine" -#: order/templates/order/order_base.html:98 -#: order/templates/order/sales_order_base.html:103 +#: order/templates/order/order_base.html:89 +#: order/templates/order/sales_order_base.html:84 +msgid "Order Description" +msgstr "" + +#: order/templates/order/order_base.html:94 +#: order/templates/order/sales_order_base.html:89 msgid "Order Status" msgstr "Stato dell'ordine" -#: order/templates/order/order_base.html:133 +#: order/templates/order/order_base.html:137 #: report/templates/report/inventree_build_order_base.html:122 msgid "Issued" msgstr "Emesso" -#: order/templates/order/order_base.html:203 +#: order/templates/order/order_base.html:207 msgid "Edit Purchase Order" msgstr "Modifica ordine d'acquisto" @@ -3421,7 +3453,7 @@ msgid "Select existing purchase orders, or create new orders." msgstr "" #: order/templates/order/order_wizard/select_pos.html:31 -#: templates/js/translated/order.js:695 templates/js/translated/order.js:1119 +#: templates/js/translated/order.js:694 templates/js/translated/order.js:1118 msgid "Items" msgstr "" @@ -3465,10 +3497,6 @@ msgstr "" msgid "Receive selected items" msgstr "" -#: order/templates/order/purchase_order_detail.html:31 -msgid "Receive Items" -msgstr "" - #: order/templates/order/purchase_order_detail.html:50 msgid "Received Items" msgstr "" @@ -3496,16 +3524,16 @@ msgstr "" msgid "Ship Order" msgstr "" -#: order/templates/order/sales_order_base.html:86 +#: order/templates/order/sales_order_base.html:102 msgid "This Sales Order has not been fully allocated" msgstr "" -#: order/templates/order/sales_order_base.html:121 -#: templates/js/translated/order.js:1086 +#: order/templates/order/sales_order_base.html:122 +#: templates/js/translated/order.js:1085 msgid "Customer Reference" msgstr "" -#: order/templates/order/sales_order_base.html:194 +#: order/templates/order/sales_order_base.html:195 msgid "Edit Sales Order" msgstr "" @@ -3576,10 +3604,6 @@ msgstr "" msgid "Purchase order issued" msgstr "" -#: order/views.py:185 -msgid "Complete Order" -msgstr "" - #: order/views.py:201 msgid "Confirm order completion" msgstr "" @@ -3672,11 +3696,11 @@ msgid "This field is required" msgstr "" #: part/bom.py:125 part/models.py:81 part/models.py:816 -#: part/templates/part/category.html:90 part/templates/part/detail.html:104 +#: part/templates/part/category.html:104 part/templates/part/part_base.html:338 msgid "Default Location" msgstr "Posizione Predefinita" -#: part/bom.py:126 part/templates/part/part_base.html:167 +#: part/bom.py:126 part/templates/part/part_base.html:185 msgid "Available Stock" msgstr "Disponibilità in magazzino" @@ -3793,19 +3817,19 @@ msgstr "Parole chiave predefinite per gli articoli in questa categoria" msgid "Part Category" msgstr "Categoria Articoli" -#: part/models.py:96 part/templates/part/category.html:117 +#: part/models.py:96 part/templates/part/category.html:124 #: templates/InvenTree/search.html:101 templates/stats.html:84 #: users/models.py:40 msgid "Part Categories" msgstr "Categorie Articolo" #: part/models.py:358 part/templates/part/cat_link.html:3 -#: part/templates/part/category.html:13 part/templates/part/category.html:122 -#: part/templates/part/category.html:142 +#: part/templates/part/category.html:13 part/templates/part/category.html:129 +#: part/templates/part/category.html:149 #: part/templates/part/category_sidebar.html:9 #: templates/InvenTree/index.html:85 templates/InvenTree/search.html:88 #: templates/InvenTree/settings/sidebar.html:36 -#: templates/js/translated/part.js:1416 templates/navbar.html:19 +#: templates/js/translated/part.js:1597 templates/navbar.html:19 #: templates/stats.html:80 templates/stats.html:89 users/models.py:41 msgid "Parts" msgstr "Articoli" @@ -3859,8 +3883,8 @@ msgstr "Variante Di" msgid "Part description" msgstr "Descrizione articolo" -#: part/models.py:770 part/templates/part/category.html:97 -#: part/templates/part/detail.html:73 +#: part/models.py:770 part/templates/part/category.html:82 +#: part/templates/part/part_base.html:302 msgid "Keywords" msgstr "Parole Chiave" @@ -3869,9 +3893,10 @@ msgid "Part keywords to improve visibility in search results" msgstr "Parole chiave per migliorare la visibilità nei risultati di ricerca" #: part/models.py:778 part/models.py:2223 part/models.py:2472 -#: part/templates/part/detail.html:36 part/templates/part/set_category.html:15 +#: part/templates/part/part_base.html:265 +#: part/templates/part/set_category.html:15 #: templates/InvenTree/settings/settings.html:163 -#: templates/js/translated/part.js:1021 +#: templates/js/translated/part.js:1202 msgid "Category" msgstr "Categoria" @@ -3879,9 +3904,9 @@ msgstr "Categoria" msgid "Part category" msgstr "Categoria articolo" -#: part/models.py:784 part/templates/part/detail.html:45 -#: templates/js/translated/part.js:550 templates/js/translated/part.js:974 -#: templates/js/translated/stock.js:1134 +#: part/models.py:784 part/templates/part/part_base.html:274 +#: templates/js/translated/part.js:557 templates/js/translated/part.js:1155 +#: templates/js/translated/stock.js:1216 msgid "IPN" msgstr "IPN - Numero di riferimento interno" @@ -3893,8 +3918,8 @@ msgstr "Numero Dell'articolo Interno" msgid "Part revision or version number" msgstr "Numero di revisione o di versione" -#: part/models.py:792 part/templates/part/detail.html:52 report/models.py:200 -#: templates/js/translated/part.js:554 +#: part/models.py:792 part/templates/part/part_base.html:281 +#: report/models.py:200 templates/js/translated/part.js:561 msgid "Revision" msgstr "Revisione" @@ -3902,7 +3927,7 @@ msgstr "Revisione" msgid "Where is this item normally stored?" msgstr "Dove viene normalmente immagazzinato questo articolo?" -#: part/models.py:861 part/templates/part/detail.html:113 +#: part/models.py:861 part/templates/part/part_base.html:347 msgid "Default Supplier" msgstr "Fornitore predefinito" @@ -3918,7 +3943,7 @@ msgstr "Scadenza Predefinita" msgid "Expiry time (in days) for stock items of this part" msgstr "Scadenza (in giorni) per gli articoli in giacenza di questo pezzo" -#: part/models.py:875 part/templates/part/part_base.html:178 +#: part/models.py:875 part/templates/part/part_base.html:196 msgid "Minimum Stock" msgstr "Scorta Minima" @@ -4001,8 +4026,8 @@ msgstr "" msgid "Test with this name already exists for this part" msgstr "" -#: part/models.py:2310 templates/js/translated/part.js:1467 -#: templates/js/translated/stock.js:858 +#: part/models.py:2310 templates/js/translated/part.js:1648 +#: templates/js/translated/stock.js:940 msgid "Test Name" msgstr "" @@ -4018,7 +4043,7 @@ msgstr "Descrizione Di Prova" msgid "Enter description for this test" msgstr "" -#: part/models.py:2322 templates/js/translated/part.js:1476 +#: part/models.py:2322 templates/js/translated/part.js:1657 #: templates/js/translated/table_filters.js:276 msgid "Required" msgstr "" @@ -4027,7 +4052,7 @@ msgstr "" msgid "Is this test required to pass?" msgstr "" -#: part/models.py:2328 templates/js/translated/part.js:1484 +#: part/models.py:2328 templates/js/translated/part.js:1665 msgid "Requires Value" msgstr "" @@ -4035,7 +4060,7 @@ msgstr "" msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:2334 templates/js/translated/part.js:1491 +#: part/models.py:2334 templates/js/translated/part.js:1672 msgid "Requires Attachment" msgstr "" @@ -4150,7 +4175,7 @@ msgstr "Consenti Le Varianti" msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:2686 stock/models.py:371 +#: part/models.py:2686 stock/models.py:361 msgid "Quantity must be integer value for trackable parts" msgstr "" @@ -4213,7 +4238,7 @@ msgstr "" msgid "The BOM for %(part)s has not been validated." msgstr "" -#: part/templates/part/bom.html:30 part/templates/part/detail.html:357 +#: part/templates/part/bom.html:30 part/templates/part/detail.html:250 msgid "BOM actions" msgstr "" @@ -4298,68 +4323,64 @@ msgstr "Crea nuova categoria articoli" msgid "New Category" msgstr "Nuova categoria" -#: part/templates/part/category.html:67 -msgid "Top level part category" -msgstr "Categoria articolo di livello superiore" - -#: part/templates/part/category.html:79 +#: part/templates/part/category.html:76 part/templates/part/category.html:89 msgid "Category Path" msgstr "Percorso Categoria" -#: part/templates/part/category.html:84 -msgid "Category Description" -msgstr "Descrizione Categoria" +#: part/templates/part/category.html:90 +msgid "Top level part category" +msgstr "Categoria articolo di livello superiore" -#: part/templates/part/category.html:103 part/templates/part/category.html:194 +#: part/templates/part/category.html:110 part/templates/part/category.html:201 #: part/templates/part/category_sidebar.html:7 msgid "Subcategories" msgstr "Sottocategorie" -#: part/templates/part/category.html:108 +#: part/templates/part/category.html:115 msgid "Parts (Including subcategories)" msgstr "Articoli (incluse le sottocategorie)" -#: part/templates/part/category.html:145 +#: part/templates/part/category.html:152 msgid "Export Part Data" msgstr "Esporta dati articolo" -#: part/templates/part/category.html:146 part/templates/part/category.html:170 +#: part/templates/part/category.html:153 part/templates/part/category.html:177 msgid "Export" msgstr "Esporta" -#: part/templates/part/category.html:149 +#: part/templates/part/category.html:156 msgid "Create new part" msgstr "Crea nuovo articolo" -#: part/templates/part/category.html:150 templates/js/translated/bom.js:40 +#: part/templates/part/category.html:157 templates/js/translated/bom.js:40 msgid "New Part" msgstr "Nuovo articolo" -#: part/templates/part/category.html:164 +#: part/templates/part/category.html:171 msgid "Set category" msgstr "Imposta categoria" -#: part/templates/part/category.html:164 +#: part/templates/part/category.html:171 msgid "Set Category" msgstr "Imposta Categoria" -#: part/templates/part/category.html:168 +#: part/templates/part/category.html:175 msgid "Print Labels" msgstr "Stampa Etichette" -#: part/templates/part/category.html:170 +#: part/templates/part/category.html:177 msgid "Export Data" msgstr "Esporta Dati" -#: part/templates/part/category.html:184 +#: part/templates/part/category.html:191 msgid "Part Parameters" msgstr "Parametri articolo" -#: part/templates/part/category.html:261 +#: part/templates/part/category.html:268 msgid "Create Part Category" msgstr "Crea Categoria Articolo" -#: part/templates/part/category.html:288 +#: part/templates/part/category.html:295 msgid "Create Part" msgstr "Crea Articolo" @@ -4402,7 +4423,7 @@ msgstr "" msgid "Import Parts" msgstr "" -#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:366 +#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:373 msgid "Duplicate Part" msgstr "" @@ -4426,167 +4447,155 @@ msgstr "" msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)" msgstr "" -#: part/templates/part/detail.html:16 -msgid "Part Details" -msgstr "" - -#: part/templates/part/detail.html:66 -msgid "Minimum stock level" -msgstr "" - -#: part/templates/part/detail.html:97 -msgid "Latest Serial Number" -msgstr "" - -#: part/templates/part/detail.html:124 +#: part/templates/part/detail.html:17 msgid "Part Stock" msgstr "" -#: part/templates/part/detail.html:136 +#: part/templates/part/detail.html:29 #, python-format msgid "Showing stock for all variants of %(full_name)s" msgstr "" -#: part/templates/part/detail.html:146 +#: part/templates/part/detail.html:39 msgid "Part Test Templates" msgstr "" -#: part/templates/part/detail.html:151 +#: part/templates/part/detail.html:44 msgid "Add Test Template" msgstr "" -#: part/templates/part/detail.html:208 +#: part/templates/part/detail.html:101 msgid "Sales Order Allocations" msgstr "Assegnazione Ordine Di Vendita" -#: part/templates/part/detail.html:249 +#: part/templates/part/detail.html:142 msgid "Part Variants" msgstr "" -#: part/templates/part/detail.html:253 +#: part/templates/part/detail.html:146 msgid "Create new variant" msgstr "" -#: part/templates/part/detail.html:254 +#: part/templates/part/detail.html:147 msgid "New Variant" msgstr "" -#: part/templates/part/detail.html:281 +#: part/templates/part/detail.html:174 msgid "Add new parameter" msgstr "" -#: part/templates/part/detail.html:315 part/templates/part/part_sidebar.html:47 +#: part/templates/part/detail.html:208 part/templates/part/part_sidebar.html:45 msgid "Related Parts" msgstr "Articoli correlati" -#: part/templates/part/detail.html:319 part/templates/part/detail.html:320 +#: part/templates/part/detail.html:212 part/templates/part/detail.html:213 msgid "Add Related" msgstr "" -#: part/templates/part/detail.html:340 part/templates/part/part_sidebar.html:19 +#: part/templates/part/detail.html:233 part/templates/part/part_sidebar.html:17 msgid "Bill of Materials" msgstr "Distinta base" -#: part/templates/part/detail.html:345 +#: part/templates/part/detail.html:238 msgid "Export actions" msgstr "" -#: part/templates/part/detail.html:349 +#: part/templates/part/detail.html:242 msgid "Export BOM" msgstr "" -#: part/templates/part/detail.html:351 +#: part/templates/part/detail.html:244 msgid "Print BOM Report" msgstr "" -#: part/templates/part/detail.html:361 +#: part/templates/part/detail.html:254 msgid "Upload BOM" msgstr "" -#: part/templates/part/detail.html:363 templates/js/translated/part.js:267 +#: part/templates/part/detail.html:256 templates/js/translated/part.js:270 msgid "Copy BOM" msgstr "" -#: part/templates/part/detail.html:365 part/views.py:755 +#: part/templates/part/detail.html:258 part/views.py:755 msgid "Validate BOM" msgstr "" -#: part/templates/part/detail.html:370 +#: part/templates/part/detail.html:263 msgid "New BOM Item" msgstr "" -#: part/templates/part/detail.html:371 +#: part/templates/part/detail.html:264 msgid "Add BOM Item" msgstr "" -#: part/templates/part/detail.html:384 +#: part/templates/part/detail.html:277 msgid "Assemblies" msgstr "" -#: part/templates/part/detail.html:401 +#: part/templates/part/detail.html:294 msgid "Part Builds" msgstr "" -#: part/templates/part/detail.html:426 +#: part/templates/part/detail.html:319 msgid "Build Order Allocations" msgstr "" -#: part/templates/part/detail.html:436 +#: part/templates/part/detail.html:329 msgid "Part Suppliers" msgstr "Fornitori articoli" -#: part/templates/part/detail.html:463 +#: part/templates/part/detail.html:356 msgid "Part Manufacturers" msgstr "Componenti Produttori" -#: part/templates/part/detail.html:479 +#: part/templates/part/detail.html:372 msgid "Delete manufacturer parts" msgstr "" -#: part/templates/part/detail.html:660 +#: part/templates/part/detail.html:553 msgid "Delete selected BOM items?" msgstr "" -#: part/templates/part/detail.html:661 +#: part/templates/part/detail.html:554 msgid "All selected BOM items will be deleted" msgstr "" -#: part/templates/part/detail.html:712 +#: part/templates/part/detail.html:605 msgid "Create BOM Item" msgstr "" -#: part/templates/part/detail.html:764 +#: part/templates/part/detail.html:657 msgid "Related Part" msgstr "Articoli correlati" -#: part/templates/part/detail.html:772 +#: part/templates/part/detail.html:665 msgid "Add Related Part" msgstr "" -#: part/templates/part/detail.html:869 +#: part/templates/part/detail.html:760 msgid "Add Test Result Template" msgstr "" -#: part/templates/part/detail.html:926 +#: part/templates/part/detail.html:817 msgid "Edit Part Notes" msgstr "" -#: part/templates/part/detail.html:1039 +#: part/templates/part/detail.html:930 #, python-format msgid "Purchase Unit Price - %(currency)s" msgstr "" -#: part/templates/part/detail.html:1051 +#: part/templates/part/detail.html:942 #, python-format msgid "Unit Price-Cost Difference - %(currency)s" msgstr "" -#: part/templates/part/detail.html:1063 +#: part/templates/part/detail.html:954 #, python-format msgid "Supplier Unit Cost - %(currency)s" msgstr "" -#: part/templates/part/detail.html:1152 +#: part/templates/part/detail.html:1043 #, python-format msgid "Unit Price - %(currency)s" msgstr "" @@ -4668,86 +4677,108 @@ msgstr "Modifica articolo" msgid "Delete part" msgstr "Cancella articolo" -#: part/templates/part/part_base.html:109 +#: part/templates/part/part_base.html:112 msgid "Part is a template part (variants can be made from this part)" msgstr "" -#: part/templates/part/part_base.html:113 +#: part/templates/part/part_base.html:116 msgid "Part can be assembled from other parts" msgstr "" -#: part/templates/part/part_base.html:117 +#: part/templates/part/part_base.html:120 msgid "Part can be used in assemblies" msgstr "" -#: part/templates/part/part_base.html:121 +#: part/templates/part/part_base.html:124 msgid "Part stock is tracked by serial number" msgstr "" -#: part/templates/part/part_base.html:125 +#: part/templates/part/part_base.html:128 msgid "Part can be purchased from external suppliers" msgstr "L'articolo può essere acquistato da fornitori esterni" -#: part/templates/part/part_base.html:129 +#: part/templates/part/part_base.html:132 msgid "Part can be sold to customers" msgstr "La parte può essere venduta ai clienti" -#: part/templates/part/part_base.html:135 -#: part/templates/part/part_base.html:143 +#: part/templates/part/part_base.html:138 +#: part/templates/part/part_base.html:146 msgid "Part is virtual (not a physical part)" msgstr "" -#: part/templates/part/part_base.html:136 +#: part/templates/part/part_base.html:139 #: templates/js/translated/company.js:505 #: templates/js/translated/company.js:762 #: templates/js/translated/model_renderers.js:175 -#: templates/js/translated/part.js:465 templates/js/translated/part.js:542 +#: templates/js/translated/part.js:472 templates/js/translated/part.js:549 msgid "Inactive" msgstr "Inattivo" -#: part/templates/part/part_base.html:155 +#: part/templates/part/part_base.html:156 +#: part/templates/part/part_base.html:579 +msgid "Show Part Details" +msgstr "" + +#: part/templates/part/part_base.html:173 #, python-format msgid "This part is a variant of %(link)s" msgstr "" -#: part/templates/part/part_base.html:172 templates/js/translated/order.js:1546 +#: part/templates/part/part_base.html:190 templates/js/translated/order.js:1545 #: templates/js/translated/table_filters.js:188 msgid "In Stock" msgstr "In magazzino" -#: part/templates/part/part_base.html:185 templates/js/translated/part.js:1054 +#: part/templates/part/part_base.html:203 templates/js/translated/part.js:1235 msgid "On Order" msgstr "Ordinato" -#: part/templates/part/part_base.html:192 templates/InvenTree/index.html:178 +#: part/templates/part/part_base.html:210 templates/InvenTree/index.html:178 msgid "Required for Build Orders" msgstr "" -#: part/templates/part/part_base.html:199 +#: part/templates/part/part_base.html:217 msgid "Required for Sales Orders" msgstr "" -#: part/templates/part/part_base.html:206 +#: part/templates/part/part_base.html:224 msgid "Allocated to Orders" msgstr "" -#: part/templates/part/part_base.html:221 templates/js/translated/bom.js:566 +#: part/templates/part/part_base.html:239 templates/js/translated/bom.js:566 msgid "Can Build" msgstr "" -#: part/templates/part/part_base.html:227 templates/js/translated/part.js:885 -#: templates/js/translated/part.js:1058 +#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1066 +#: templates/js/translated/part.js:1239 msgid "Building" msgstr "" -#: part/templates/part/part_base.html:320 part/templates/part/prices.html:144 +#: part/templates/part/part_base.html:295 +msgid "Minimum stock level" +msgstr "" + +#: part/templates/part/part_base.html:324 +msgid "Latest Serial Number" +msgstr "" + +#: part/templates/part/part_base.html:328 +#: stock/templates/stock/item_base.html:159 +msgid "Search for serial number" +msgstr "" + +#: part/templates/part/part_base.html:449 part/templates/part/prices.html:144 msgid "Calculate" msgstr "" -#: part/templates/part/part_base.html:363 +#: part/templates/part/part_base.html:492 msgid "No matching images found" msgstr "" +#: part/templates/part/part_base.html:573 +msgid "Hide Part Details" +msgstr "" + #: part/templates/part/part_pricing.html:22 part/templates/part/prices.html:21 msgid "Supplier Pricing" msgstr "" @@ -4805,20 +4836,15 @@ msgstr "" msgid "No pricing information is available for this part." msgstr "" -#: part/templates/part/part_sidebar.html:8 -#: templates/js/translated/stock.js:1949 -msgid "Details" -msgstr "" - -#: part/templates/part/part_sidebar.html:13 +#: part/templates/part/part_sidebar.html:11 msgid "Variants" msgstr "" -#: part/templates/part/part_sidebar.html:27 +#: part/templates/part/part_sidebar.html:25 msgid "Used In" msgstr "" -#: part/templates/part/part_sidebar.html:43 +#: part/templates/part/part_sidebar.html:41 msgid "Test Templates" msgstr "" @@ -4934,8 +4960,8 @@ msgid "Set category for the following parts" msgstr "Imposta categoria per i seguenti articoli" #: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:476 -#: templates/js/translated/part.js:429 templates/js/translated/part.js:875 -#: templates/js/translated/part.js:1062 +#: templates/js/translated/part.js:436 templates/js/translated/part.js:1056 +#: templates/js/translated/part.js:1243 msgid "No Stock" msgstr "Nessuna giacenza" @@ -5037,7 +5063,7 @@ msgstr "" msgid "Delete Part Parameter Template" msgstr "" -#: part/views.py:1489 templates/js/translated/part.js:310 +#: part/views.py:1489 templates/js/translated/part.js:313 msgid "Edit Part Category" msgstr "Modifica Categoria Articoli" @@ -5171,11 +5197,12 @@ msgid "Stock Item Test Report" msgstr "" #: report/templates/report/inventree_test_report_base.html:79 -#: stock/models.py:530 stock/templates/stock/item_base.html:238 +#: stock/models.py:520 stock/templates/stock/item_base.html:149 #: templates/js/translated/build.js:233 templates/js/translated/build.js:637 #: templates/js/translated/build.js:1013 #: templates/js/translated/model_renderers.js:95 -#: templates/js/translated/order.js:1288 templates/js/translated/order.js:1377 +#: templates/js/translated/order.js:1287 templates/js/translated/order.js:1376 +#: templates/js/translated/stock.js:410 msgid "Serial Number" msgstr "" @@ -5184,17 +5211,17 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:93 -#: stock/models.py:1855 +#: stock/models.py:1845 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:94 -#: stock/models.py:1861 +#: stock/models.py:1851 msgid "Result" msgstr "" #: report/templates/report/inventree_test_report_base.html:97 -#: templates/js/translated/order.js:685 templates/js/translated/stock.js:1917 +#: templates/js/translated/order.js:684 templates/js/translated/stock.js:1999 msgid "Date" msgstr "Data" @@ -5212,7 +5239,7 @@ msgid "Installed Items" msgstr "" #: report/templates/report/inventree_test_report_base.html:137 -#: templates/js/translated/stock.js:2177 +#: templates/js/translated/stock.js:2259 msgid "Serial" msgstr "Seriale" @@ -5220,9 +5247,9 @@ msgstr "Seriale" msgid "Quantity is required" msgstr "La quantità è richiesta" -#: stock/forms.py:91 stock/forms.py:265 stock/models.py:587 -#: stock/templates/stock/item_base.html:382 -#: templates/js/translated/stock.js:1276 +#: stock/forms.py:91 stock/forms.py:265 stock/models.py:577 +#: stock/templates/stock/item_base.html:186 +#: templates/js/translated/stock.js:1358 msgid "Expiry Date" msgstr "Data di Scadenza" @@ -5270,241 +5297,241 @@ msgstr "Conferma la disinstallazione" msgid "Confirm removal of installed stock items" msgstr "" -#: stock/models.py:60 stock/models.py:624 -#: stock/templates/stock/item_base.html:422 +#: stock/models.py:60 stock/models.py:614 +#: stock/templates/stock/item_base.html:417 msgid "Owner" msgstr "" -#: stock/models.py:61 stock/models.py:625 +#: stock/models.py:61 stock/models.py:615 msgid "Select Owner" msgstr "Seleziona Owner" -#: stock/models.py:352 +#: stock/models.py:342 msgid "StockItem with this serial number already exists" msgstr "" -#: stock/models.py:388 +#: stock/models.py:378 #, python-brace-format msgid "Part type ('{pf}') must be {pe}" msgstr "" -#: stock/models.py:398 stock/models.py:407 +#: stock/models.py:388 stock/models.py:397 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:399 +#: stock/models.py:389 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:421 +#: stock/models.py:411 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:427 +#: stock/models.py:417 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:434 +#: stock/models.py:424 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:476 +#: stock/models.py:466 msgid "Parent Stock Item" msgstr "" -#: stock/models.py:485 +#: stock/models.py:475 msgid "Base part" msgstr "Articolo base" -#: stock/models.py:493 +#: stock/models.py:483 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:498 stock/templates/stock/location.html:12 +#: stock/models.py:488 stock/templates/stock/location.html:12 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" msgstr "Ubicazione magazzino" -#: stock/models.py:501 +#: stock/models.py:491 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:508 +#: stock/models.py:498 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:513 stock/templates/stock/item_base.html:271 +#: stock/models.py:503 stock/templates/stock/item_base.html:299 msgid "Installed In" msgstr "Installato In" -#: stock/models.py:516 +#: stock/models.py:506 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:532 +#: stock/models.py:522 msgid "Serial number for this item" msgstr "" -#: stock/models.py:546 +#: stock/models.py:536 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:550 +#: stock/models.py:540 msgid "Stock Quantity" msgstr "Quantità disponibile" -#: stock/models.py:559 +#: stock/models.py:549 msgid "Source Build" msgstr "" -#: stock/models.py:561 +#: stock/models.py:551 msgid "Build for this stock item" msgstr "" -#: stock/models.py:572 +#: stock/models.py:562 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:575 +#: stock/models.py:565 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:581 +#: stock/models.py:571 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:588 +#: stock/models.py:578 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:601 +#: stock/models.py:591 msgid "Delete on deplete" msgstr "Elimina al esaurimento" -#: stock/models.py:601 +#: stock/models.py:591 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:611 stock/templates/stock/item.html:111 +#: stock/models.py:601 stock/templates/stock/item.html:111 msgid "Stock Item Notes" msgstr "" -#: stock/models.py:620 +#: stock/models.py:610 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:630 +#: stock/models.py:620 msgid "Scheduled for deletion" msgstr "" -#: stock/models.py:631 +#: stock/models.py:621 msgid "This StockItem will be deleted by the background worker" msgstr "" -#: stock/models.py:1094 +#: stock/models.py:1084 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1100 +#: stock/models.py:1090 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1106 +#: stock/models.py:1096 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({n})" msgstr "" -#: stock/models.py:1109 +#: stock/models.py:1099 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1112 +#: stock/models.py:1102 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1119 +#: stock/models.py:1109 #, python-brace-format msgid "Serial numbers already exist: {exists}" msgstr "" -#: stock/models.py:1277 +#: stock/models.py:1267 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:1775 +#: stock/models.py:1765 msgid "Entry notes" msgstr "" -#: stock/models.py:1832 +#: stock/models.py:1822 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:1838 +#: stock/models.py:1828 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:1856 +#: stock/models.py:1846 msgid "Test name" msgstr "" -#: stock/models.py:1862 templates/js/translated/table_filters.js:266 +#: stock/models.py:1852 templates/js/translated/table_filters.js:266 msgid "Test result" msgstr "" -#: stock/models.py:1868 +#: stock/models.py:1858 msgid "Test output value" msgstr "" -#: stock/models.py:1875 +#: stock/models.py:1865 msgid "Test result attachment" msgstr "" -#: stock/models.py:1881 +#: stock/models.py:1871 msgid "Test notes" msgstr "" -#: stock/serializers.py:166 +#: stock/serializers.py:171 msgid "Purchase price of this stock item" msgstr "" -#: stock/serializers.py:173 +#: stock/serializers.py:178 msgid "Purchase currency of this stock item" msgstr "" -#: stock/serializers.py:287 +#: stock/serializers.py:292 msgid "Enter number of stock items to serialize" msgstr "" -#: stock/serializers.py:302 +#: stock/serializers.py:307 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "" -#: stock/serializers.py:308 +#: stock/serializers.py:313 msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:319 stock/serializers.py:686 +#: stock/serializers.py:324 stock/serializers.py:691 msgid "Destination stock location" msgstr "Posizione magazzino di destinazione" -#: stock/serializers.py:326 +#: stock/serializers.py:331 msgid "Optional note field" msgstr "" -#: stock/serializers.py:339 +#: stock/serializers.py:344 msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:556 +#: stock/serializers.py:561 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:584 +#: stock/serializers.py:589 msgid "Stock transaction notes" msgstr "" -#: stock/serializers.py:594 +#: stock/serializers.py:599 msgid "A list of stock items must be provided" msgstr "" @@ -5629,125 +5656,131 @@ msgstr "" msgid "Install" msgstr "" -#: stock/templates/stock/item_base.html:106 +#: stock/templates/stock/item_base.html:108 msgid "Convert to variant" msgstr "" -#: stock/templates/stock/item_base.html:109 +#: stock/templates/stock/item_base.html:111 msgid "Duplicate stock item" msgstr "" -#: stock/templates/stock/item_base.html:111 +#: stock/templates/stock/item_base.html:113 msgid "Edit stock item" msgstr "" -#: stock/templates/stock/item_base.html:114 +#: stock/templates/stock/item_base.html:116 msgid "Delete stock item" msgstr "" -#: stock/templates/stock/item_base.html:136 -#: stock/templates/stock/item_base.html:386 -#: templates/js/translated/table_filters.js:247 -msgid "Expired" +#: stock/templates/stock/item_base.html:154 +msgid "previous page" +msgstr "pagina precedente" + +#: stock/templates/stock/item_base.html:154 +msgid "Navigate to previous serial number" msgstr "" -#: stock/templates/stock/item_base.html:146 -#: stock/templates/stock/item_base.html:388 -#: templates/js/translated/table_filters.js:253 -msgid "Stale" -msgstr "" +#: stock/templates/stock/item_base.html:163 +msgid "next page" +msgstr "pagina successiva" -#: stock/templates/stock/item_base.html:161 -msgid "You are not in the list of owners of this item. This stock item cannot be edited." -msgstr "" - -#: stock/templates/stock/item_base.html:168 -msgid "This stock item is in production and cannot be edited." -msgstr "" - -#: stock/templates/stock/item_base.html:169 -msgid "Edit the stock item from the build view." -msgstr "" - -#: stock/templates/stock/item_base.html:182 -msgid "This stock item has not passed all required tests" +#: stock/templates/stock/item_base.html:163 +msgid "Navigate to next serial number" msgstr "" #: stock/templates/stock/item_base.html:190 #, python-format -msgid "This stock item is allocated to Sales Order %(link)s (Quantity: %(qty)s)" -msgstr "" - -#: stock/templates/stock/item_base.html:198 -#, python-format -msgid "This stock item is allocated to Build %(link)s (Quantity: %(qty)s)" -msgstr "" - -#: stock/templates/stock/item_base.html:204 -msgid "This stock item is serialized - it has a unique serial number and the quantity cannot be adjusted." -msgstr "" - -#: stock/templates/stock/item_base.html:208 -msgid "This stock item cannot be deleted as it has child items" -msgstr "" - -#: stock/templates/stock/item_base.html:212 -msgid "This stock item will be automatically deleted when all stock is depleted." -msgstr "" - -#: stock/templates/stock/item_base.html:241 -msgid "previous page" -msgstr "pagina precedente" - -#: stock/templates/stock/item_base.html:247 -msgid "next page" -msgstr "pagina successiva" - -#: stock/templates/stock/item_base.html:290 -#: templates/js/translated/build.js:1035 -msgid "No location set" -msgstr "Nessuna posizione impostata" - -#: stock/templates/stock/item_base.html:297 -msgid "Barcode Identifier" -msgstr "" - -#: stock/templates/stock/item_base.html:339 -msgid "Parent Item" -msgstr "" - -#: stock/templates/stock/item_base.html:357 -msgid "No manufacturer set" -msgstr "" - -#: stock/templates/stock/item_base.html:386 -#, python-format msgid "This StockItem expired on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:388 +#: stock/templates/stock/item_base.html:190 +#: templates/js/translated/table_filters.js:247 +msgid "Expired" +msgstr "" + +#: stock/templates/stock/item_base.html:192 #, python-format msgid "This StockItem expires on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:395 -#: templates/js/translated/stock.js:1289 +#: stock/templates/stock/item_base.html:192 +#: templates/js/translated/table_filters.js:253 +msgid "Stale" +msgstr "" + +#: stock/templates/stock/item_base.html:199 +#: templates/js/translated/stock.js:1371 msgid "Last Updated" msgstr "Ultimo aggiornamento" -#: stock/templates/stock/item_base.html:400 +#: stock/templates/stock/item_base.html:204 msgid "Last Stocktake" msgstr "Ultimo Inventario" -#: stock/templates/stock/item_base.html:404 +#: stock/templates/stock/item_base.html:208 msgid "No stocktake performed" msgstr "Nessun inventario eseguito" -#: stock/templates/stock/item_base.html:415 +#: stock/templates/stock/item_base.html:226 +msgid "You are not in the list of owners of this item. This stock item cannot be edited." +msgstr "" + +#: stock/templates/stock/item_base.html:233 +msgid "This stock item is in production and cannot be edited." +msgstr "" + +#: stock/templates/stock/item_base.html:234 +msgid "Edit the stock item from the build view." +msgstr "" + +#: stock/templates/stock/item_base.html:247 +msgid "This stock item has not passed all required tests" +msgstr "" + +#: stock/templates/stock/item_base.html:255 +#, python-format +msgid "This stock item is allocated to Sales Order %(link)s (Quantity: %(qty)s)" +msgstr "" + +#: stock/templates/stock/item_base.html:263 +#, python-format +msgid "This stock item is allocated to Build %(link)s (Quantity: %(qty)s)" +msgstr "" + +#: stock/templates/stock/item_base.html:269 +msgid "This stock item is serialized - it has a unique serial number and the quantity cannot be adjusted." +msgstr "" + +#: stock/templates/stock/item_base.html:273 +msgid "This stock item cannot be deleted as it has child items" +msgstr "" + +#: stock/templates/stock/item_base.html:277 +msgid "This stock item will be automatically deleted when all stock is depleted." +msgstr "" + +#: stock/templates/stock/item_base.html:318 +#: templates/js/translated/build.js:1035 +msgid "No location set" +msgstr "Nessuna posizione impostata" + +#: stock/templates/stock/item_base.html:325 +msgid "Barcode Identifier" +msgstr "" + +#: stock/templates/stock/item_base.html:367 +msgid "Parent Item" +msgstr "" + +#: stock/templates/stock/item_base.html:385 +msgid "No manufacturer set" +msgstr "" + +#: stock/templates/stock/item_base.html:410 msgid "Tests" msgstr "" -#: stock/templates/stock/item_base.html:505 +#: stock/templates/stock/item_base.html:500 msgid "Edit Stock Status" msgstr "" @@ -5825,30 +5858,35 @@ msgstr "Crea nuova posizione di magazzino" msgid "New Location" msgstr "Nuova Posizione" -#: stock/templates/stock/location.html:86 +#: stock/templates/stock/location.html:95 +#: stock/templates/stock/location.html:101 +msgid "Location Path" +msgstr "" + +#: stock/templates/stock/location.html:102 msgid "Top level stock location" msgstr "Posizione stock di livello superiore" -#: stock/templates/stock/location.html:95 +#: stock/templates/stock/location.html:115 msgid "You are not in the list of owners of this location. This stock location cannot be edited." msgstr "Non sei nell'elenco dei proprietari di questa posizione. Questa posizione di giacenza non può essere modificata." -#: stock/templates/stock/location.html:113 -#: stock/templates/stock/location.html:160 +#: stock/templates/stock/location.html:128 +#: stock/templates/stock/location.html:175 #: stock/templates/stock/location_sidebar.html:5 msgid "Sublocations" msgstr "Sottoallocazioni" -#: stock/templates/stock/location.html:127 templates/InvenTree/search.html:170 +#: stock/templates/stock/location.html:142 templates/InvenTree/search.html:170 #: templates/stats.html:97 users/models.py:42 msgid "Stock Locations" msgstr "Posizioni magazzino" -#: stock/templates/stock/location.html:167 templates/stock_table.html:30 +#: stock/templates/stock/location.html:182 templates/stock_table.html:30 msgid "Printing Actions" msgstr "Azioni di stampa" -#: stock/templates/stock/location.html:171 templates/stock_table.html:34 +#: stock/templates/stock/location.html:186 templates/stock_table.html:34 msgid "Print labels" msgstr "Stampa etichette" @@ -5942,7 +5980,7 @@ msgstr "" msgid "Uninstall Stock Items" msgstr "" -#: stock/views.py:760 templates/js/translated/stock.js:648 +#: stock/views.py:760 templates/js/translated/stock.js:730 msgid "Confirm stock adjustment" msgstr "" @@ -5950,7 +5988,7 @@ msgstr "" msgid "Uninstalled stock items" msgstr "" -#: stock/views.py:793 templates/js/translated/stock.js:318 +#: stock/views.py:793 templates/js/translated/stock.js:319 msgid "Edit Stock Item" msgstr "" @@ -5962,7 +6000,7 @@ msgstr "Crea una nuova Posizione di Giacenza" msgid "Create new Stock Item" msgstr "" -#: stock/views.py:1186 templates/js/translated/stock.js:298 +#: stock/views.py:1186 templates/js/translated/stock.js:299 msgid "Duplicate Stock Item" msgstr "" @@ -6869,7 +6907,7 @@ msgstr "" msgid "Unlink" msgstr "" -#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:600 +#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:682 msgid "Remove stock item" msgstr "" @@ -6964,7 +7002,7 @@ msgid "View BOM" msgstr "" #: templates/js/translated/bom.js:608 templates/js/translated/build.js:1183 -#: templates/js/translated/order.js:1320 +#: templates/js/translated/order.js:1319 msgid "Actions" msgstr "" @@ -7056,7 +7094,7 @@ msgstr "" msgid "No build order allocations found" msgstr "" -#: templates/js/translated/build.js:424 templates/js/translated/order.js:1194 +#: templates/js/translated/build.js:424 templates/js/translated/order.js:1193 msgid "Location not specified" msgstr "Posizione non specificata" @@ -7065,12 +7103,12 @@ msgid "No active build outputs found" msgstr "" #: templates/js/translated/build.js:1052 templates/js/translated/build.js:1760 -#: templates/js/translated/order.js:1327 +#: templates/js/translated/order.js:1326 msgid "Edit stock allocation" msgstr "Modifica allocazione magazzino" #: templates/js/translated/build.js:1054 templates/js/translated/build.js:1761 -#: templates/js/translated/order.js:1328 +#: templates/js/translated/order.js:1327 msgid "Delete stock allocation" msgstr "Elimina posizione giacenza" @@ -7091,11 +7129,11 @@ msgid "Quantity Per" msgstr "" #: templates/js/translated/build.js:1134 templates/js/translated/build.js:1360 -#: templates/js/translated/build.js:1756 templates/js/translated/order.js:1557 +#: templates/js/translated/build.js:1756 templates/js/translated/order.js:1556 msgid "Allocated" msgstr "" -#: templates/js/translated/build.js:1190 templates/js/translated/order.js:1611 +#: templates/js/translated/build.js:1190 templates/js/translated/order.js:1610 msgid "Build stock" msgstr "" @@ -7103,7 +7141,7 @@ msgstr "" msgid "Order stock" msgstr "" -#: templates/js/translated/build.js:1197 templates/js/translated/order.js:1604 +#: templates/js/translated/build.js:1197 templates/js/translated/order.js:1603 msgid "Allocate stock" msgstr "" @@ -7144,9 +7182,9 @@ msgstr "" msgid "No builds matching query" msgstr "" -#: templates/js/translated/build.js:1593 templates/js/translated/part.js:966 -#: templates/js/translated/part.js:1377 templates/js/translated/stock.js:1094 -#: templates/js/translated/stock.js:1871 +#: templates/js/translated/build.js:1593 templates/js/translated/part.js:1147 +#: templates/js/translated/part.js:1558 templates/js/translated/stock.js:1176 +#: templates/js/translated/stock.js:1953 msgid "Select" msgstr "" @@ -7154,7 +7192,7 @@ msgstr "" msgid "Build order is overdue" msgstr "" -#: templates/js/translated/build.js:1674 templates/js/translated/stock.js:2090 +#: templates/js/translated/build.js:1674 templates/js/translated/stock.js:2172 msgid "No user information" msgstr "" @@ -7198,10 +7236,6 @@ msgstr "Modifica fornitore articolo" msgid "Delete Supplier Part" msgstr "" -#: templates/js/translated/company.js:265 -msgid "Edit Company" -msgstr "Modifica azienda" - #: templates/js/translated/company.js:286 msgid "Add new Company" msgstr "" @@ -7231,34 +7265,34 @@ msgid "No manufacturer parts found" msgstr "" #: templates/js/translated/company.js:497 -#: templates/js/translated/company.js:754 templates/js/translated/part.js:449 -#: templates/js/translated/part.js:534 +#: templates/js/translated/company.js:754 templates/js/translated/part.js:456 +#: templates/js/translated/part.js:541 msgid "Template part" msgstr "" #: templates/js/translated/company.js:501 -#: templates/js/translated/company.js:758 templates/js/translated/part.js:453 -#: templates/js/translated/part.js:538 +#: templates/js/translated/company.js:758 templates/js/translated/part.js:460 +#: templates/js/translated/part.js:545 msgid "Assembled part" msgstr "" -#: templates/js/translated/company.js:628 templates/js/translated/part.js:626 +#: templates/js/translated/company.js:628 templates/js/translated/part.js:633 msgid "No parameters found" msgstr "" -#: templates/js/translated/company.js:665 templates/js/translated/part.js:668 +#: templates/js/translated/company.js:665 templates/js/translated/part.js:675 msgid "Edit parameter" msgstr "Modifica parametro" -#: templates/js/translated/company.js:666 templates/js/translated/part.js:669 +#: templates/js/translated/company.js:666 templates/js/translated/part.js:676 msgid "Delete parameter" msgstr "Elimina il parametro" -#: templates/js/translated/company.js:685 templates/js/translated/part.js:686 +#: templates/js/translated/company.js:685 templates/js/translated/part.js:693 msgid "Edit Parameter" msgstr "Modifica parametro" -#: templates/js/translated/company.js:696 templates/js/translated/part.js:698 +#: templates/js/translated/company.js:696 templates/js/translated/part.js:705 msgid "Delete Parameter" msgstr "Elimina Parametri" @@ -7347,7 +7381,7 @@ msgid "NO" msgstr "NO" #: templates/js/translated/label.js:29 templates/js/translated/report.js:118 -#: templates/js/translated/stock.js:624 +#: templates/js/translated/stock.js:706 msgid "Select Stock Items" msgstr "" @@ -7503,11 +7537,11 @@ msgstr "" msgid "Export Order" msgstr "" -#: templates/js/translated/order.js:211 templates/js/translated/stock.js:423 +#: templates/js/translated/order.js:211 templates/js/translated/stock.js:505 msgid "Format" msgstr "Formato" -#: templates/js/translated/order.js:212 templates/js/translated/stock.js:424 +#: templates/js/translated/order.js:212 templates/js/translated/stock.js:506 msgid "Select file format" msgstr "" @@ -7523,7 +7557,7 @@ msgstr "" msgid "Quantity to receive" msgstr "Quantità da ricevere" -#: templates/js/translated/order.js:360 templates/js/translated/stock.js:1673 +#: templates/js/translated/order.js:360 templates/js/translated/stock.js:1755 msgid "Stock Status" msgstr "Stato giacenza" @@ -7547,321 +7581,321 @@ msgstr "" msgid "Receive Purchase Order Items" msgstr "" -#: templates/js/translated/order.js:627 +#: templates/js/translated/order.js:627 templates/js/translated/part.js:746 msgid "No purchase orders found" msgstr "" -#: templates/js/translated/order.js:652 templates/js/translated/order.js:1063 +#: templates/js/translated/order.js:659 templates/js/translated/order.js:1062 msgid "Order is overdue" msgstr "" -#: templates/js/translated/order.js:772 templates/js/translated/order.js:1646 +#: templates/js/translated/order.js:771 templates/js/translated/order.js:1645 msgid "Edit Line Item" msgstr "" -#: templates/js/translated/order.js:784 templates/js/translated/order.js:1657 +#: templates/js/translated/order.js:783 templates/js/translated/order.js:1656 msgid "Delete Line Item" msgstr "" -#: templates/js/translated/order.js:823 +#: templates/js/translated/order.js:822 msgid "No line items found" msgstr "" -#: templates/js/translated/order.js:850 templates/js/translated/order.js:1467 +#: templates/js/translated/order.js:849 templates/js/translated/order.js:1466 msgid "Total" msgstr "Totale" -#: templates/js/translated/order.js:904 templates/js/translated/order.js:1492 -#: templates/js/translated/part.js:1594 templates/js/translated/part.js:1805 +#: templates/js/translated/order.js:903 templates/js/translated/order.js:1491 +#: templates/js/translated/part.js:1775 templates/js/translated/part.js:1986 msgid "Unit Price" msgstr "Prezzo Unitario" -#: templates/js/translated/order.js:919 templates/js/translated/order.js:1508 +#: templates/js/translated/order.js:918 templates/js/translated/order.js:1507 msgid "Total Price" msgstr "Prezzo Totale" -#: templates/js/translated/order.js:997 templates/js/translated/order.js:1617 +#: templates/js/translated/order.js:996 templates/js/translated/order.js:1616 msgid "Edit line item" msgstr "" -#: templates/js/translated/order.js:998 +#: templates/js/translated/order.js:997 msgid "Delete line item" msgstr "" -#: templates/js/translated/order.js:1002 +#: templates/js/translated/order.js:1001 templates/js/translated/part.js:878 msgid "Receive line item" msgstr "" -#: templates/js/translated/order.js:1039 +#: templates/js/translated/order.js:1038 msgid "No sales orders found" msgstr "" -#: templates/js/translated/order.js:1077 +#: templates/js/translated/order.js:1076 msgid "Invalid Customer" msgstr "Cliente non valido" -#: templates/js/translated/order.js:1155 +#: templates/js/translated/order.js:1154 msgid "No sales order allocations found" msgstr "Nessun ordine di vendita trovato" -#: templates/js/translated/order.js:1248 +#: templates/js/translated/order.js:1247 msgid "Edit Stock Allocation" msgstr "Modifica posizione giacenza" -#: templates/js/translated/order.js:1265 +#: templates/js/translated/order.js:1264 msgid "Confirm Delete Operation" msgstr "Conferma Operazione Eliminazione" -#: templates/js/translated/order.js:1266 +#: templates/js/translated/order.js:1265 msgid "Delete Stock Allocation" msgstr "Elimina posizione giacenza" -#: templates/js/translated/order.js:1308 +#: templates/js/translated/order.js:1307 msgid "Stock location not specified" msgstr "Nessun posizione specificata" -#: templates/js/translated/order.js:1557 +#: templates/js/translated/order.js:1556 msgid "Fulfilled" msgstr "Soddisfatto" -#: templates/js/translated/order.js:1601 +#: templates/js/translated/order.js:1600 msgid "Allocate serial numbers" msgstr "" -#: templates/js/translated/order.js:1607 +#: templates/js/translated/order.js:1606 msgid "Purchase stock" msgstr "Prezzo d'acquisto" -#: templates/js/translated/order.js:1614 templates/js/translated/order.js:1793 +#: templates/js/translated/order.js:1613 templates/js/translated/order.js:1792 msgid "Calculate price" msgstr "Calcola il prezzo" -#: templates/js/translated/order.js:1618 +#: templates/js/translated/order.js:1617 msgid "Delete line item " msgstr "" -#: templates/js/translated/order.js:1741 +#: templates/js/translated/order.js:1740 msgid "Allocate Stock Item" msgstr "" -#: templates/js/translated/order.js:1801 +#: templates/js/translated/order.js:1800 msgid "Update Unit Price" msgstr "" -#: templates/js/translated/order.js:1815 +#: templates/js/translated/order.js:1814 msgid "No matching line items" msgstr "" -#: templates/js/translated/part.js:51 +#: templates/js/translated/part.js:52 msgid "Part Attributes" msgstr "Attributi Articolo" -#: templates/js/translated/part.js:55 +#: templates/js/translated/part.js:56 msgid "Part Creation Options" msgstr "" -#: templates/js/translated/part.js:59 +#: templates/js/translated/part.js:60 msgid "Part Duplication Options" msgstr "" -#: templates/js/translated/part.js:63 +#: templates/js/translated/part.js:64 msgid "Supplier Options" msgstr "Opzioni Fornitore" -#: templates/js/translated/part.js:77 +#: templates/js/translated/part.js:78 msgid "Add Part Category" msgstr "Aggiungi Categoria Articolo" -#: templates/js/translated/part.js:166 +#: templates/js/translated/part.js:162 msgid "Create Initial Stock" msgstr "Crea giacenza iniziale" -#: templates/js/translated/part.js:167 +#: templates/js/translated/part.js:163 msgid "Create an initial stock item for this part" msgstr "Crea una giacenza iniziale per quest'articolo" -#: templates/js/translated/part.js:174 +#: templates/js/translated/part.js:170 msgid "Initial Stock Quantity" msgstr "Quantità iniziale" -#: templates/js/translated/part.js:175 +#: templates/js/translated/part.js:171 msgid "Specify initial stock quantity for this part" msgstr "" -#: templates/js/translated/part.js:182 +#: templates/js/translated/part.js:178 msgid "Select destination stock location" msgstr "Selezione la posizione di destinazione della giacenza" -#: templates/js/translated/part.js:193 +#: templates/js/translated/part.js:196 msgid "Copy Category Parameters" msgstr "Copia Parametri Categoria" -#: templates/js/translated/part.js:194 +#: templates/js/translated/part.js:197 msgid "Copy parameter templates from selected part category" msgstr "" -#: templates/js/translated/part.js:202 +#: templates/js/translated/part.js:205 msgid "Add Supplier Data" msgstr "Aggiungi Dati Fornitore" -#: templates/js/translated/part.js:203 +#: templates/js/translated/part.js:206 msgid "Create initial supplier data for this part" msgstr "" -#: templates/js/translated/part.js:259 +#: templates/js/translated/part.js:262 msgid "Copy Image" msgstr "Copia immagine" -#: templates/js/translated/part.js:260 +#: templates/js/translated/part.js:263 msgid "Copy image from original part" msgstr "Copia immagine dall'articolo originale" -#: templates/js/translated/part.js:268 +#: templates/js/translated/part.js:271 msgid "Copy bill of materials from original part" msgstr "" -#: templates/js/translated/part.js:275 +#: templates/js/translated/part.js:278 msgid "Copy Parameters" msgstr "Copia parametri" -#: templates/js/translated/part.js:276 +#: templates/js/translated/part.js:279 msgid "Copy parameter data from original part" msgstr "" -#: templates/js/translated/part.js:289 +#: templates/js/translated/part.js:292 msgid "Parent part category" msgstr "Categoria articolo principale" -#: templates/js/translated/part.js:333 +#: templates/js/translated/part.js:336 msgid "Edit Part" msgstr "Modifica l'articolo" -#: templates/js/translated/part.js:335 +#: templates/js/translated/part.js:338 msgid "Part edited" msgstr "Articolo modificato" -#: templates/js/translated/part.js:403 +#: templates/js/translated/part.js:410 msgid "You are subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:405 +#: templates/js/translated/part.js:412 msgid "You have subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:410 +#: templates/js/translated/part.js:417 msgid "Subscribe to notifications for this item" msgstr "" -#: templates/js/translated/part.js:412 +#: templates/js/translated/part.js:419 msgid "You have unsubscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:441 templates/js/translated/part.js:526 +#: templates/js/translated/part.js:448 templates/js/translated/part.js:533 msgid "Trackable part" msgstr "" -#: templates/js/translated/part.js:445 templates/js/translated/part.js:530 +#: templates/js/translated/part.js:452 templates/js/translated/part.js:537 msgid "Virtual part" msgstr "Parte virtuale" -#: templates/js/translated/part.js:457 +#: templates/js/translated/part.js:464 msgid "Subscribed part" msgstr "Parte sottoscritta" -#: templates/js/translated/part.js:461 +#: templates/js/translated/part.js:468 msgid "Salable part" msgstr "Parte vendibile" -#: templates/js/translated/part.js:576 +#: templates/js/translated/part.js:583 msgid "No variants found" msgstr "Nessuna variante trovata" -#: templates/js/translated/part.js:765 +#: templates/js/translated/part.js:946 msgid "Delete part relationship" msgstr "" -#: templates/js/translated/part.js:789 +#: templates/js/translated/part.js:970 msgid "Delete Part Relationship" msgstr "" -#: templates/js/translated/part.js:856 templates/js/translated/part.js:1116 +#: templates/js/translated/part.js:1037 templates/js/translated/part.js:1297 msgid "No parts found" msgstr "Nessun articolo trovato" -#: templates/js/translated/part.js:1026 +#: templates/js/translated/part.js:1207 msgid "No category" msgstr "Nessuna categoria" -#: templates/js/translated/part.js:1049 +#: templates/js/translated/part.js:1230 #: templates/js/translated/table_filters.js:381 msgid "Low stock" msgstr "In esaurimento" -#: templates/js/translated/part.js:1140 templates/js/translated/part.js:1312 -#: templates/js/translated/stock.js:1832 +#: templates/js/translated/part.js:1321 templates/js/translated/part.js:1493 +#: templates/js/translated/stock.js:1914 msgid "Display as list" msgstr "Visualizza come elenco" -#: templates/js/translated/part.js:1156 +#: templates/js/translated/part.js:1337 msgid "Display as grid" msgstr "Visualizza come griglia" -#: templates/js/translated/part.js:1331 templates/js/translated/stock.js:1851 +#: templates/js/translated/part.js:1512 templates/js/translated/stock.js:1933 msgid "Display as tree" msgstr "Visualizza come struttura ad albero" -#: templates/js/translated/part.js:1395 +#: templates/js/translated/part.js:1576 msgid "Subscribed category" msgstr "Categoria sottoscritta" -#: templates/js/translated/part.js:1409 templates/js/translated/stock.js:1895 +#: templates/js/translated/part.js:1590 templates/js/translated/stock.js:1977 msgid "Path" msgstr "Percorso" -#: templates/js/translated/part.js:1453 +#: templates/js/translated/part.js:1634 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:1504 templates/js/translated/stock.js:816 +#: templates/js/translated/part.js:1685 templates/js/translated/stock.js:898 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:1505 templates/js/translated/stock.js:817 +#: templates/js/translated/part.js:1686 templates/js/translated/stock.js:899 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:1511 +#: templates/js/translated/part.js:1692 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:1533 +#: templates/js/translated/part.js:1714 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:1547 +#: templates/js/translated/part.js:1728 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:1572 +#: templates/js/translated/part.js:1753 #, python-brace-format msgid "No ${human_name} information found" msgstr "" -#: templates/js/translated/part.js:1627 +#: templates/js/translated/part.js:1808 #, python-brace-format msgid "Edit ${human_name}" msgstr "Modifica ${human_name}" -#: templates/js/translated/part.js:1628 +#: templates/js/translated/part.js:1809 #, python-brace-format msgid "Delete ${human_name}" msgstr "Elimina ${human_name}" -#: templates/js/translated/part.js:1729 +#: templates/js/translated/part.js:1910 msgid "Single Price" msgstr "Prezzo Singolo" -#: templates/js/translated/part.js:1748 +#: templates/js/translated/part.js:1929 msgid "Single Price Difference" msgstr "" @@ -7931,276 +7965,300 @@ msgstr "" msgid "Sales Order(s) must be selected before printing report" msgstr "" -#: templates/js/translated/stock.js:70 +#: templates/js/translated/stock.js:71 msgid "Serialize Stock Item" msgstr "" -#: templates/js/translated/stock.js:88 templates/js/translated/stock.js:167 +#: templates/js/translated/stock.js:89 templates/js/translated/stock.js:168 msgid "Next available serial number" msgstr "" -#: templates/js/translated/stock.js:90 templates/js/translated/stock.js:169 +#: templates/js/translated/stock.js:91 templates/js/translated/stock.js:170 msgid "Latest serial number" msgstr "" -#: templates/js/translated/stock.js:104 +#: templates/js/translated/stock.js:105 msgid "Parent stock location" msgstr "Posizione giacenza principale" -#: templates/js/translated/stock.js:140 +#: templates/js/translated/stock.js:141 msgid "New Stock Location" msgstr "Nuova posizione giacenza" -#: templates/js/translated/stock.js:180 +#: templates/js/translated/stock.js:181 msgid "This part cannot be serialized" msgstr "" -#: templates/js/translated/stock.js:219 +#: templates/js/translated/stock.js:220 msgid "Enter initial quantity for this stock item" msgstr "Inserisci quantità iniziale per questo articolo in giacenza" -#: templates/js/translated/stock.js:225 +#: templates/js/translated/stock.js:226 msgid "Enter serial numbers for new stock (or leave blank)" msgstr "Inserire i numeri di serie per la nuova giacenza (o lasciare vuoto)" -#: templates/js/translated/stock.js:368 +#: templates/js/translated/stock.js:369 msgid "Created new stock item" msgstr "Crea nuova allocazione magazzino" -#: templates/js/translated/stock.js:381 +#: templates/js/translated/stock.js:382 msgid "Created multiple stock items" msgstr "Creato più elementi stock" -#: templates/js/translated/stock.js:420 +#: templates/js/translated/stock.js:407 +msgid "Find Serial Number" +msgstr "" + +#: templates/js/translated/stock.js:411 templates/js/translated/stock.js:412 +msgid "Enter serial number" +msgstr "" + +#: templates/js/translated/stock.js:428 +msgid "Enter a serial number" +msgstr "" + +#: templates/js/translated/stock.js:448 +msgid "No matching serial number" +msgstr "" + +#: templates/js/translated/stock.js:457 +msgid "More than one matching result found" +msgstr "" + +#: templates/js/translated/stock.js:502 msgid "Export Stock" msgstr "Esporta giacenza" -#: templates/js/translated/stock.js:431 +#: templates/js/translated/stock.js:513 msgid "Include Sublocations" msgstr "Includi sotto allocazioni" -#: templates/js/translated/stock.js:432 +#: templates/js/translated/stock.js:514 msgid "Include stock items in sublocations" msgstr "Includi elementi in giacenza nelle sottoallocazioni" -#: templates/js/translated/stock.js:474 +#: templates/js/translated/stock.js:556 msgid "Transfer Stock" msgstr "Trasferisci giacenza" -#: templates/js/translated/stock.js:475 +#: templates/js/translated/stock.js:557 msgid "Move" msgstr "Sposta" -#: templates/js/translated/stock.js:481 +#: templates/js/translated/stock.js:563 msgid "Count Stock" msgstr "Conta giacenza" -#: templates/js/translated/stock.js:482 +#: templates/js/translated/stock.js:564 msgid "Count" msgstr "Conta" -#: templates/js/translated/stock.js:486 +#: templates/js/translated/stock.js:568 msgid "Remove Stock" msgstr "Rimuovi giacenza" -#: templates/js/translated/stock.js:487 +#: templates/js/translated/stock.js:569 msgid "Take" msgstr "Prendi" -#: templates/js/translated/stock.js:491 +#: templates/js/translated/stock.js:573 msgid "Add Stock" msgstr "Aggiungi giacenza" -#: templates/js/translated/stock.js:492 users/models.py:200 +#: templates/js/translated/stock.js:574 users/models.py:200 msgid "Add" msgstr "Aggiungi" -#: templates/js/translated/stock.js:496 templates/stock_table.html:56 +#: templates/js/translated/stock.js:578 templates/stock_table.html:56 msgid "Delete Stock" msgstr "Elimina Stock" -#: templates/js/translated/stock.js:585 +#: templates/js/translated/stock.js:667 msgid "Quantity cannot be adjusted for serialized stock" msgstr "" -#: templates/js/translated/stock.js:585 +#: templates/js/translated/stock.js:667 msgid "Specify stock quantity" msgstr "Specificare la quantità di magazzino" -#: templates/js/translated/stock.js:625 +#: templates/js/translated/stock.js:707 msgid "You must select at least one available stock item" msgstr "Devi selezionare almeno un articolo disponibile" -#: templates/js/translated/stock.js:783 +#: templates/js/translated/stock.js:865 msgid "PASS" msgstr "PASS" -#: templates/js/translated/stock.js:785 +#: templates/js/translated/stock.js:867 msgid "FAIL" msgstr "FAIL" -#: templates/js/translated/stock.js:790 +#: templates/js/translated/stock.js:872 msgid "NO RESULT" msgstr "NESSUN RISULTATO" -#: templates/js/translated/stock.js:812 +#: templates/js/translated/stock.js:894 msgid "Add test result" msgstr "Aggiungi risultato test" -#: templates/js/translated/stock.js:838 +#: templates/js/translated/stock.js:920 msgid "No test results found" msgstr "Nessun risultato di prova trovato" -#: templates/js/translated/stock.js:895 +#: templates/js/translated/stock.js:977 msgid "Test Date" msgstr "" -#: templates/js/translated/stock.js:1002 +#: templates/js/translated/stock.js:1084 msgid "In production" msgstr "In produzione" -#: templates/js/translated/stock.js:1006 +#: templates/js/translated/stock.js:1088 msgid "Installed in Stock Item" msgstr "Installato nell'elemento stock" -#: templates/js/translated/stock.js:1010 +#: templates/js/translated/stock.js:1092 msgid "Shipped to customer" msgstr "Spedito al cliente" -#: templates/js/translated/stock.js:1014 +#: templates/js/translated/stock.js:1096 msgid "Assigned to Sales Order" msgstr "Assegnato all'ordine di vendita" -#: templates/js/translated/stock.js:1020 +#: templates/js/translated/stock.js:1102 msgid "No stock location set" msgstr "Nessuna giacenza impostata" -#: templates/js/translated/stock.js:1178 +#: templates/js/translated/stock.js:1260 msgid "Stock item is in production" msgstr "L'articolo di magazzino è in produzione" -#: templates/js/translated/stock.js:1183 +#: templates/js/translated/stock.js:1265 msgid "Stock item assigned to sales order" msgstr "" -#: templates/js/translated/stock.js:1186 +#: templates/js/translated/stock.js:1268 msgid "Stock item assigned to customer" msgstr "Articolo stock assegnato al cliente" -#: templates/js/translated/stock.js:1190 +#: templates/js/translated/stock.js:1272 msgid "Stock item has expired" msgstr "L'articolo stock è scaduto" -#: templates/js/translated/stock.js:1192 +#: templates/js/translated/stock.js:1274 msgid "Stock item will expire soon" msgstr "Articolo in giacenza prossimo alla scadenza" -#: templates/js/translated/stock.js:1196 +#: templates/js/translated/stock.js:1278 msgid "Stock item has been allocated" msgstr "L'articolo stock è stato allocato" -#: templates/js/translated/stock.js:1200 +#: templates/js/translated/stock.js:1282 msgid "Stock item has been installed in another item" msgstr "L'elemento stock è stato installato in un altro articolo" -#: templates/js/translated/stock.js:1207 +#: templates/js/translated/stock.js:1289 msgid "Stock item has been rejected" msgstr "L'articolo stock è stato rifiutato" -#: templates/js/translated/stock.js:1209 +#: templates/js/translated/stock.js:1291 msgid "Stock item is lost" msgstr "" -#: templates/js/translated/stock.js:1211 +#: templates/js/translated/stock.js:1293 msgid "Stock item is destroyed" msgstr "" -#: templates/js/translated/stock.js:1215 +#: templates/js/translated/stock.js:1297 #: templates/js/translated/table_filters.js:183 msgid "Depleted" msgstr "Esaurito" -#: templates/js/translated/stock.js:1265 +#: templates/js/translated/stock.js:1347 msgid "Stocktake" msgstr "Inventario" -#: templates/js/translated/stock.js:1338 +#: templates/js/translated/stock.js:1420 msgid "Supplier part not specified" msgstr "" -#: templates/js/translated/stock.js:1376 +#: templates/js/translated/stock.js:1458 msgid "No stock items matching query" msgstr "" -#: templates/js/translated/stock.js:1397 templates/js/translated/stock.js:1445 +#: templates/js/translated/stock.js:1479 templates/js/translated/stock.js:1527 msgid "items" msgstr "elementi" -#: templates/js/translated/stock.js:1485 +#: templates/js/translated/stock.js:1567 msgid "batches" msgstr "" -#: templates/js/translated/stock.js:1512 +#: templates/js/translated/stock.js:1594 msgid "locations" msgstr "posizione" -#: templates/js/translated/stock.js:1514 +#: templates/js/translated/stock.js:1596 msgid "Undefined location" msgstr "Posizione non definita" -#: templates/js/translated/stock.js:1688 +#: templates/js/translated/stock.js:1770 msgid "Set Stock Status" msgstr "" -#: templates/js/translated/stock.js:1702 +#: templates/js/translated/stock.js:1784 msgid "Select Status Code" msgstr "" -#: templates/js/translated/stock.js:1703 +#: templates/js/translated/stock.js:1785 msgid "Status code must be selected" msgstr "" -#: templates/js/translated/stock.js:1927 +#: templates/js/translated/stock.js:2009 msgid "Invalid date" msgstr "Data non valida" -#: templates/js/translated/stock.js:1974 +#: templates/js/translated/stock.js:2031 +msgid "Details" +msgstr "" + +#: templates/js/translated/stock.js:2056 msgid "Location no longer exists" msgstr "La posizione non esiste più" -#: templates/js/translated/stock.js:1993 +#: templates/js/translated/stock.js:2075 msgid "Purchase order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2012 +#: templates/js/translated/stock.js:2094 msgid "Customer no longer exists" msgstr "" -#: templates/js/translated/stock.js:2030 +#: templates/js/translated/stock.js:2112 msgid "Stock item no longer exists" msgstr "" -#: templates/js/translated/stock.js:2053 +#: templates/js/translated/stock.js:2135 msgid "Added" msgstr "Aggiunto" -#: templates/js/translated/stock.js:2061 +#: templates/js/translated/stock.js:2143 msgid "Removed" msgstr "Rimosso" -#: templates/js/translated/stock.js:2102 +#: templates/js/translated/stock.js:2184 msgid "Edit tracking entry" msgstr "" -#: templates/js/translated/stock.js:2103 +#: templates/js/translated/stock.js:2185 msgid "Delete tracking entry" msgstr "" -#: templates/js/translated/stock.js:2154 +#: templates/js/translated/stock.js:2236 msgid "No installed items" msgstr "" -#: templates/js/translated/stock.js:2205 +#: templates/js/translated/stock.js:2287 msgid "Uninstall Stock Item" msgstr "" diff --git a/InvenTree/locale/ja/LC_MESSAGES/django.po b/InvenTree/locale/ja/LC_MESSAGES/django.po index ac1c826905..dbc37a257c 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-11-30 21:49+0000\n" -"PO-Revision-Date: 2021-11-30 21:52\n" +"POT-Creation-Date: 2021-12-03 10:37+0000\n" +"PO-Revision-Date: 2021-12-03 11:26\n" "Last-Translator: \n" "Language-Team: Japanese\n" "Language: ja_JP\n" @@ -114,129 +114,130 @@ msgstr "シリアル番号が見つかりません" msgid "Number of unique serial number ({s}) must match quantity ({q})" msgstr "" -#: InvenTree/models.py:114 +#: InvenTree/models.py:120 msgid "Missing file" msgstr "" -#: InvenTree/models.py:115 +#: InvenTree/models.py:121 msgid "Missing external link" msgstr "" -#: InvenTree/models.py:126 stock/models.py:1874 +#: InvenTree/models.py:132 stock/models.py:1864 #: templates/js/translated/attachment.js:117 msgid "Attachment" msgstr "添付ファイル" -#: InvenTree/models.py:127 +#: InvenTree/models.py:133 msgid "Select file to attach" msgstr "添付ファイルを選択" -#: InvenTree/models.py:133 company/models.py:131 company/models.py:348 +#: InvenTree/models.py:139 company/models.py:131 company/models.py:348 #: company/models.py:564 order/models.py:163 part/models.py:797 #: report/templates/report/inventree_build_order_base.html:165 #: templates/js/translated/company.js:537 -#: templates/js/translated/company.js:826 templates/js/translated/part.js:1077 +#: templates/js/translated/company.js:826 templates/js/translated/part.js:1258 msgid "Link" msgstr "" -#: InvenTree/models.py:134 build/models.py:330 part/models.py:798 -#: stock/models.py:540 +#: InvenTree/models.py:140 build/models.py:330 part/models.py:798 +#: stock/models.py:530 msgid "Link to external URL" msgstr "" -#: InvenTree/models.py:137 templates/js/translated/attachment.js:161 +#: InvenTree/models.py:143 templates/js/translated/attachment.js:161 msgid "Comment" msgstr "コメント:" -#: InvenTree/models.py:137 +#: InvenTree/models.py:143 msgid "File comment" msgstr "ファイルコメント" -#: InvenTree/models.py:143 InvenTree/models.py:144 common/models.py:1185 +#: InvenTree/models.py:149 InvenTree/models.py:150 common/models.py:1185 #: common/models.py:1186 part/models.py:2205 part/models.py:2225 #: report/templates/report/inventree_test_report_base.html:96 -#: templates/js/translated/stock.js:2084 +#: templates/js/translated/stock.js:2166 msgid "User" msgstr "ユーザー" -#: InvenTree/models.py:147 +#: InvenTree/models.py:153 msgid "upload date" msgstr "アップロード日時" -#: InvenTree/models.py:170 +#: InvenTree/models.py:176 msgid "Filename must not be empty" msgstr "" -#: InvenTree/models.py:193 +#: InvenTree/models.py:199 msgid "Invalid attachment directory" msgstr "" -#: InvenTree/models.py:203 +#: InvenTree/models.py:209 #, python-brace-format msgid "Filename contains illegal character '{c}'" msgstr "" -#: InvenTree/models.py:206 +#: InvenTree/models.py:212 msgid "Filename missing extension" msgstr "" -#: InvenTree/models.py:213 +#: InvenTree/models.py:219 msgid "Attachment with this filename already exists" msgstr "" -#: InvenTree/models.py:220 +#: InvenTree/models.py:226 msgid "Error renaming file" msgstr "" -#: InvenTree/models.py:255 +#: InvenTree/models.py:261 msgid "Invalid choice" msgstr "無効な選択です" -#: InvenTree/models.py:271 InvenTree/models.py:272 company/models.py:415 +#: InvenTree/models.py:277 InvenTree/models.py:278 company/models.py:415 #: label/models.py:112 part/models.py:741 part/models.py:2389 -#: part/templates/part/detail.html:25 report/models.py:181 -#: templates/InvenTree/settings/settings.html:259 -#: templates/js/translated/company.js:638 templates/js/translated/part.js:499 -#: templates/js/translated/part.js:636 templates/js/translated/part.js:1384 -#: templates/js/translated/stock.js:1877 +#: report/models.py:181 templates/InvenTree/settings/settings.html:259 +#: templates/js/translated/company.js:638 templates/js/translated/part.js:506 +#: templates/js/translated/part.js:643 templates/js/translated/part.js:1565 +#: templates/js/translated/stock.js:1959 msgid "Name" msgstr "お名前" -#: InvenTree/models.py:278 build/models.py:207 +#: InvenTree/models.py:284 build/models.py:207 #: build/templates/build/detail.html:25 company/models.py:354 -#: company/models.py:570 company/templates/company/manufacturer_part.html:80 -#: company/templates/company/supplier_part.html:81 label/models.py:119 -#: order/models.py:161 part/models.py:764 part/templates/part/detail.html:30 +#: company/models.py:570 company/templates/company/company_base.html:68 +#: company/templates/company/manufacturer_part.html:76 +#: company/templates/company/supplier_part.html:73 label/models.py:119 +#: order/models.py:161 part/models.py:764 part/templates/part/category.html:70 +#: part/templates/part/part_base.html:163 #: part/templates/part/set_category.html:14 report/models.py:194 #: report/models.py:553 report/models.py:592 #: report/templates/report/inventree_build_order_base.html:118 -#: stock/templates/stock/location.html:108 templates/js/translated/bom.js:215 +#: stock/templates/stock/location.html:89 templates/js/translated/bom.js:215 #: templates/js/translated/bom.js:428 templates/js/translated/build.js:1621 #: templates/js/translated/company.js:345 #: templates/js/translated/company.js:548 -#: templates/js/translated/company.js:837 templates/js/translated/order.js:673 -#: templates/js/translated/order.js:855 templates/js/translated/order.js:1091 -#: templates/js/translated/part.js:558 templates/js/translated/part.js:752 -#: templates/js/translated/part.js:837 templates/js/translated/part.js:1007 -#: templates/js/translated/part.js:1403 templates/js/translated/part.js:1472 -#: templates/js/translated/stock.js:1151 templates/js/translated/stock.js:1889 -#: templates/js/translated/stock.js:1934 +#: templates/js/translated/company.js:837 templates/js/translated/order.js:680 +#: templates/js/translated/order.js:854 templates/js/translated/order.js:1090 +#: templates/js/translated/part.js:565 templates/js/translated/part.js:933 +#: templates/js/translated/part.js:1018 templates/js/translated/part.js:1188 +#: templates/js/translated/part.js:1584 templates/js/translated/part.js:1653 +#: templates/js/translated/stock.js:1233 templates/js/translated/stock.js:1971 +#: templates/js/translated/stock.js:2016 msgid "Description" msgstr "説明" -#: InvenTree/models.py:279 +#: InvenTree/models.py:285 msgid "Description (optional)" msgstr "説明 (オプション)" -#: InvenTree/models.py:287 +#: InvenTree/models.py:293 msgid "parent" msgstr "親" -#: InvenTree/serializers.py:62 part/models.py:2674 +#: InvenTree/serializers.py:65 part/models.py:2674 msgid "Must be a valid number" msgstr "有効な数字でなければなりません" -#: InvenTree/serializers.py:285 +#: InvenTree/serializers.py:299 msgid "Filename" msgstr "" @@ -361,7 +362,7 @@ msgid "Returned" msgstr "返品済" #: InvenTree/status_codes.py:143 -#: order/templates/order/sales_order_base.html:147 +#: order/templates/order/sales_order_base.html:148 msgid "Shipped" msgstr "発送済み" @@ -566,7 +567,7 @@ msgid "Barcode associated with StockItem" msgstr "" #: build/forms.py:36 build/models.py:1283 -#: build/templates/build/build_base.html:124 +#: build/templates/build/build_base.html:132 #: build/templates/build/detail.html:35 common/models.py:1225 #: company/forms.py:42 company/templates/company/supplier_part.html:251 #: order/forms.py:102 order/models.py:729 order/models.py:991 @@ -574,26 +575,27 @@ msgstr "" #: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:223 #: part/forms.py:239 part/forms.py:255 part/models.py:2576 #: part/templates/part/bom_upload/match_parts.html:31 -#: part/templates/part/detail.html:1076 part/templates/part/detail.html:1162 +#: part/templates/part/detail.html:967 part/templates/part/detail.html:1053 #: part/templates/part/part_pricing.html:16 #: report/templates/report/inventree_build_order_base.html:114 #: report/templates/report/inventree_po_report.html:91 #: report/templates/report/inventree_so_report.html:91 #: report/templates/report/inventree_test_report_base.html:81 #: report/templates/report/inventree_test_report_base.html:139 -#: stock/forms.py:156 stock/serializers.py:286 -#: stock/templates/stock/item_base.html:256 +#: stock/forms.py:156 stock/serializers.py:291 +#: stock/templates/stock/item_base.html:174 #: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:443 #: templates/js/translated/build.js:235 templates/js/translated/build.js:435 #: templates/js/translated/build.js:629 templates/js/translated/build.js:639 #: templates/js/translated/build.js:1015 templates/js/translated/build.js:1362 #: templates/js/translated/model_renderers.js:99 -#: templates/js/translated/order.js:892 templates/js/translated/order.js:1205 -#: templates/js/translated/order.js:1283 templates/js/translated/order.js:1290 -#: templates/js/translated/order.js:1379 templates/js/translated/order.js:1479 -#: templates/js/translated/part.js:1615 templates/js/translated/part.js:1738 -#: templates/js/translated/part.js:1816 templates/js/translated/stock.js:377 -#: templates/js/translated/stock.js:2069 templates/js/translated/stock.js:2171 +#: templates/js/translated/order.js:891 templates/js/translated/order.js:1204 +#: templates/js/translated/order.js:1282 templates/js/translated/order.js:1289 +#: templates/js/translated/order.js:1378 templates/js/translated/order.js:1478 +#: templates/js/translated/part.js:843 templates/js/translated/part.js:1796 +#: templates/js/translated/part.js:1919 templates/js/translated/part.js:1997 +#: templates/js/translated/stock.js:378 templates/js/translated/stock.js:2151 +#: templates/js/translated/stock.js:2253 msgid "Quantity" msgstr "" @@ -602,8 +604,8 @@ msgid "Enter quantity for build output" msgstr "" #: build/forms.py:41 order/forms.py:96 stock/forms.py:95 -#: stock/serializers.py:307 templates/js/translated/stock.js:224 -#: templates/js/translated/stock.js:378 +#: stock/serializers.py:312 templates/js/translated/stock.js:225 +#: templates/js/translated/stock.js:379 msgid "Serial Numbers" msgstr "" @@ -646,7 +648,7 @@ msgstr "" #: build/templates/build/index.html:8 build/templates/build/index.html:12 #: order/templates/order/sales_order_detail.html:42 #: order/templates/order/so_sidebar.html:7 -#: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:221 +#: part/templates/part/part_sidebar.html:20 templates/InvenTree/index.html:221 #: templates/InvenTree/search.html:145 #: templates/InvenTree/settings/sidebar.html:42 users/models.py:44 msgid "Build Orders" @@ -662,7 +664,7 @@ msgstr "" #: report/templates/report/inventree_po_report.html:92 #: report/templates/report/inventree_so_report.html:92 #: templates/js/translated/bom.js:435 templates/js/translated/build.js:1119 -#: templates/js/translated/order.js:886 templates/js/translated/order.js:1473 +#: templates/js/translated/order.js:885 templates/js/translated/order.js:1472 msgid "Reference" msgstr "" @@ -670,7 +672,7 @@ msgstr "" msgid "Brief description of the build" msgstr "" -#: build/models.py:219 build/templates/build/build_base.html:156 +#: build/models.py:219 build/templates/build/build_base.html:164 #: build/templates/build/detail.html:88 msgid "Parent Build" msgstr "" @@ -679,7 +681,7 @@ msgstr "" msgid "BuildOrder to which this build is allocated" msgstr "" -#: build/models.py:225 build/templates/build/build_base.html:119 +#: build/models.py:225 build/templates/build/build_base.html:77 #: build/templates/build/detail.html:30 company/models.py:705 #: order/models.py:789 order/models.py:860 #: order/templates/order/order_wizard/select_parts.html:32 part/models.py:357 @@ -700,10 +702,10 @@ msgstr "" #: templates/js/translated/build.js:988 templates/js/translated/build.js:1359 #: templates/js/translated/build.js:1626 templates/js/translated/company.js:489 #: templates/js/translated/company.js:746 templates/js/translated/order.js:426 -#: templates/js/translated/order.js:840 templates/js/translated/order.js:1457 -#: templates/js/translated/part.js:737 templates/js/translated/part.js:818 -#: templates/js/translated/part.js:985 templates/js/translated/stock.js:508 -#: templates/js/translated/stock.js:1108 templates/js/translated/stock.js:2159 +#: templates/js/translated/order.js:839 templates/js/translated/order.js:1456 +#: templates/js/translated/part.js:918 templates/js/translated/part.js:999 +#: templates/js/translated/part.js:1166 templates/js/translated/stock.js:590 +#: templates/js/translated/stock.js:1190 templates/js/translated/stock.js:2241 msgid "Part" msgstr "パーツ" @@ -751,7 +753,7 @@ msgstr "" msgid "Number of stock items which have been completed" msgstr "" -#: build/models.py:277 part/templates/part/part_base.html:216 +#: build/models.py:277 part/templates/part/part_base.html:234 msgid "Build Status" msgstr "" @@ -759,7 +761,7 @@ msgstr "" msgid "Build status code" msgstr "" -#: build/models.py:285 stock/models.py:544 +#: build/models.py:285 stock/models.py:534 msgid "Batch Code" msgstr "" @@ -768,7 +770,7 @@ msgid "Batch code for this build output" msgstr "" #: build/models.py:292 order/models.py:165 part/models.py:936 -#: part/templates/part/detail.html:86 templates/js/translated/order.js:1104 +#: part/templates/part/part_base.html:313 templates/js/translated/order.js:1103 msgid "Creation Date" msgstr "" @@ -797,12 +799,12 @@ msgstr "" msgid "User who issued this build order" msgstr "" -#: build/models.py:323 build/templates/build/build_base.html:177 +#: build/models.py:323 build/templates/build/build_base.html:185 #: build/templates/build/detail.html:116 order/models.py:179 -#: order/templates/order/order_base.html:154 -#: order/templates/order/sales_order_base.html:161 part/models.py:940 +#: order/templates/order/order_base.html:158 +#: order/templates/order/sales_order_base.html:162 part/models.py:940 #: report/templates/report/inventree_build_order_base.html:159 -#: templates/js/translated/build.js:1680 templates/js/translated/order.js:700 +#: templates/js/translated/build.js:1680 templates/js/translated/order.js:699 msgid "Responsible" msgstr "" @@ -811,10 +813,10 @@ msgid "User responsible for this build order" msgstr "" #: build/models.py:329 build/templates/build/detail.html:102 -#: company/templates/company/manufacturer_part.html:87 -#: company/templates/company/supplier_part.html:88 -#: part/templates/part/detail.html:80 stock/models.py:538 -#: stock/templates/stock/item_base.html:346 +#: company/templates/company/manufacturer_part.html:102 +#: company/templates/company/supplier_part.html:126 +#: part/templates/part/part_base.html:354 stock/models.py:528 +#: stock/templates/stock/item_base.html:374 msgid "External Link" msgstr "" @@ -824,15 +826,15 @@ msgstr "" #: order/models.py:183 order/models.py:738 #: order/templates/order/po_sidebar.html:11 #: order/templates/order/so_sidebar.html:11 part/models.py:925 -#: part/templates/part/detail.html:223 part/templates/part/part_sidebar.html:52 +#: part/templates/part/detail.html:116 part/templates/part/part_sidebar.html:50 #: report/templates/report/inventree_build_order_base.html:173 -#: stock/forms.py:154 stock/forms.py:204 stock/forms.py:238 stock/models.py:610 -#: stock/models.py:1774 stock/models.py:1880 stock/serializers.py:325 -#: stock/serializers.py:583 stock/templates/stock/stock_sidebar.html:21 +#: stock/forms.py:154 stock/forms.py:204 stock/forms.py:238 stock/models.py:600 +#: stock/models.py:1764 stock/models.py:1870 stock/serializers.py:330 +#: stock/serializers.py:588 stock/templates/stock/stock_sidebar.html:21 #: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:599 -#: templates/js/translated/company.js:842 templates/js/translated/order.js:985 -#: templates/js/translated/order.js:1583 templates/js/translated/stock.js:891 -#: templates/js/translated/stock.js:1370 +#: templates/js/translated/company.js:842 templates/js/translated/order.js:984 +#: templates/js/translated/order.js:1582 templates/js/translated/stock.js:973 +#: templates/js/translated/stock.js:1452 msgid "Notes" msgstr "" @@ -877,7 +879,7 @@ msgstr "" msgid "Selected stock item not found in BOM" msgstr "" -#: build/models.py:1253 stock/templates/stock/item_base.html:318 +#: build/models.py:1253 stock/templates/stock/item_base.html:346 #: templates/InvenTree/search.html:143 templates/js/translated/build.js:1599 #: templates/navbar.html:33 msgid "Build" @@ -890,11 +892,11 @@ msgstr "パーツを割り当てるためにビルドする" #: build/models.py:1270 build/serializers.py:328 #: stock/templates/stock/item_base.html:8 #: stock/templates/stock/item_base.html:16 -#: stock/templates/stock/item_base.html:340 +#: stock/templates/stock/item_base.html:368 #: templates/js/translated/build.js:408 templates/js/translated/build.js:413 #: templates/js/translated/build.js:1361 templates/js/translated/build.js:1742 -#: templates/js/translated/order.js:1178 templates/js/translated/order.js:1183 -#: templates/js/translated/stock.js:2020 +#: templates/js/translated/order.js:1177 templates/js/translated/order.js:1182 +#: templates/js/translated/stock.js:2102 msgid "Stock Item" msgstr "" @@ -934,16 +936,16 @@ msgstr "" msgid "This build output is not fully allocated" msgstr "" -#: build/serializers.py:190 order/serializers.py:219 order/serializers.py:287 -#: stock/forms.py:236 stock/serializers.py:318 stock/serializers.py:685 -#: stock/templates/stock/item_base.html:286 +#: build/serializers.py:190 order/serializers.py:228 order/serializers.py:296 +#: stock/forms.py:236 stock/serializers.py:323 stock/serializers.py:690 +#: stock/templates/stock/item_base.html:314 #: templates/js/translated/barcode.js:384 #: templates/js/translated/barcode.js:557 templates/js/translated/build.js:420 #: templates/js/translated/build.js:1027 templates/js/translated/order.js:348 -#: templates/js/translated/order.js:1190 templates/js/translated/order.js:1298 -#: templates/js/translated/order.js:1304 templates/js/translated/part.js:181 -#: templates/js/translated/stock.js:510 templates/js/translated/stock.js:1251 -#: templates/js/translated/stock.js:1961 +#: templates/js/translated/order.js:1189 templates/js/translated/order.js:1297 +#: templates/js/translated/order.js:1303 templates/js/translated/part.js:177 +#: templates/js/translated/stock.js:592 templates/js/translated/stock.js:1333 +#: templates/js/translated/stock.js:2043 msgid "Location" msgstr "" @@ -951,13 +953,13 @@ msgstr "" msgid "Location for completed build outputs" msgstr "" -#: build/serializers.py:197 build/templates/build/build_base.html:129 +#: build/serializers.py:197 build/templates/build/build_base.html:137 #: build/templates/build/detail.html:63 order/models.py:572 -#: order/serializers.py:240 stock/templates/stock/item_base.html:409 +#: order/serializers.py:249 stock/templates/stock/item_base.html:180 #: templates/js/translated/barcode.js:140 templates/js/translated/build.js:1655 -#: templates/js/translated/order.js:431 templates/js/translated/order.js:677 -#: templates/js/translated/order.js:1096 templates/js/translated/stock.js:1226 -#: templates/js/translated/stock.js:2038 templates/js/translated/stock.js:2187 +#: templates/js/translated/order.js:431 templates/js/translated/order.js:1095 +#: templates/js/translated/stock.js:1308 templates/js/translated/stock.js:2120 +#: templates/js/translated/stock.js:2269 msgid "Status" msgstr "" @@ -986,8 +988,8 @@ msgstr "" msgid "Item must be in stock" msgstr "" -#: build/serializers.py:348 order/models.py:316 order/serializers.py:233 -#: stock/models.py:381 stock/models.py:1103 stock/serializers.py:298 +#: build/serializers.py:348 order/models.py:316 order/serializers.py:242 +#: stock/models.py:371 stock/models.py:1093 stock/serializers.py:303 msgid "Quantity must be greater than zero" msgstr "" @@ -1031,7 +1033,7 @@ msgid "Edit Build" msgstr "" #: build/templates/build/build_base.html:56 -#: build/templates/build/build_base.html:207 build/views.py:56 +#: build/templates/build/build_base.html:215 build/views.py:56 msgid "Cancel Build" msgstr "" @@ -1041,93 +1043,95 @@ msgstr "" #: build/templates/build/build_base.html:64 #: build/templates/build/build_base.html:65 -#: build/templates/build/build_base.html:223 +#: build/templates/build/build_base.html:231 msgid "Complete Build" msgstr "" -#: build/templates/build/build_base.html:79 +#: build/templates/build/build_base.html:82 +msgid "Build Description" +msgstr "" + +#: build/templates/build/build_base.html:91 #, python-format msgid "This Build Order is allocated to Sales Order %(link)s" msgstr "" -#: build/templates/build/build_base.html:86 +#: build/templates/build/build_base.html:98 #, python-format msgid "This Build Order is a child of Build Order %(link)s" msgstr "" -#: build/templates/build/build_base.html:93 +#: build/templates/build/build_base.html:105 msgid "Build Order is ready to mark as completed" msgstr "" -#: build/templates/build/build_base.html:98 +#: build/templates/build/build_base.html:110 msgid "Build Order cannot be completed as outstanding outputs remain" msgstr "" -#: build/templates/build/build_base.html:103 +#: build/templates/build/build_base.html:115 msgid "Required build quantity has not yet been completed" msgstr "" -#: build/templates/build/build_base.html:108 +#: build/templates/build/build_base.html:120 msgid "Stock has not been fully allocated to this Build Order" msgstr "" -#: build/templates/build/build_base.html:138 +#: build/templates/build/build_base.html:146 #: build/templates/build/detail.html:132 -#: order/templates/order/order_base.html:140 -#: order/templates/order/sales_order_base.html:140 +#: order/templates/order/order_base.html:144 +#: order/templates/order/sales_order_base.html:141 #: report/templates/report/inventree_build_order_base.html:126 -#: templates/js/translated/build.js:1692 templates/js/translated/order.js:690 -#: templates/js/translated/order.js:1109 +#: templates/js/translated/build.js:1692 templates/js/translated/order.js:689 +#: templates/js/translated/order.js:1108 msgid "Target Date" msgstr "" -#: build/templates/build/build_base.html:143 +#: build/templates/build/build_base.html:151 #, python-format msgid "This build was due on %(target)s" msgstr "" -#: build/templates/build/build_base.html:143 -#: build/templates/build/build_base.html:188 -#: order/templates/order/order_base.html:81 -#: order/templates/order/order_base.html:102 -#: order/templates/order/sales_order_base.html:78 -#: order/templates/order/sales_order_base.html:107 +#: build/templates/build/build_base.html:151 +#: build/templates/build/build_base.html:196 +#: order/templates/order/order_base.html:98 +#: order/templates/order/sales_order_base.html:93 #: templates/js/translated/table_filters.js:294 #: templates/js/translated/table_filters.js:322 #: templates/js/translated/table_filters.js:339 msgid "Overdue" msgstr "" -#: build/templates/build/build_base.html:150 +#: build/templates/build/build_base.html:158 #: build/templates/build/detail.html:68 build/templates/build/detail.html:143 #: templates/js/translated/build.js:1641 #: templates/js/translated/table_filters.js:304 msgid "Completed" msgstr "" -#: build/templates/build/build_base.html:163 +#: build/templates/build/build_base.html:171 #: build/templates/build/detail.html:95 order/models.py:857 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: order/templates/order/sales_order_ship.html:25 #: report/templates/report/inventree_build_order_base.html:136 #: report/templates/report/inventree_so_report.html:77 -#: stock/templates/stock/item_base.html:280 -#: templates/js/translated/order.js:1051 +#: stock/templates/stock/item_base.html:308 +#: templates/js/translated/order.js:1050 msgid "Sales Order" msgstr "" -#: build/templates/build/build_base.html:170 +#: build/templates/build/build_base.html:178 #: build/templates/build/detail.html:109 #: report/templates/report/inventree_build_order_base.html:153 msgid "Issued By" msgstr "" -#: build/templates/build/build_base.html:215 +#: build/templates/build/build_base.html:223 msgid "Incomplete Outputs" msgstr "" -#: build/templates/build/build_base.html:216 +#: build/templates/build/build_base.html:224 msgid "Build Order cannot be completed as incomplete build outputs remain" msgstr "" @@ -1188,7 +1192,7 @@ msgid "Stock can be taken from any available location." msgstr "" #: build/templates/build/detail.html:50 order/models.py:811 stock/forms.py:150 -#: templates/js/translated/order.js:432 templates/js/translated/order.js:974 +#: templates/js/translated/order.js:432 templates/js/translated/order.js:973 msgid "Destination" msgstr "" @@ -1201,16 +1205,16 @@ msgid "Allocated Parts" msgstr "" #: build/templates/build/detail.html:81 -#: stock/templates/stock/item_base.html:304 -#: templates/js/translated/stock.js:1240 templates/js/translated/stock.js:2194 +#: stock/templates/stock/item_base.html:332 +#: templates/js/translated/stock.js:1322 templates/js/translated/stock.js:2276 #: templates/js/translated/table_filters.js:151 #: templates/js/translated/table_filters.js:233 msgid "Batch" msgstr "" #: build/templates/build/detail.html:127 -#: order/templates/order/order_base.html:127 -#: order/templates/order/sales_order_base.html:134 +#: order/templates/order/order_base.html:131 +#: order/templates/order/sales_order_base.html:135 #: templates/js/translated/build.js:1663 msgid "Created" msgstr "" @@ -1254,7 +1258,7 @@ msgstr "注文必須パーツ" #: build/templates/build/detail.html:185 #: company/templates/company/detail.html:38 #: company/templates/company/detail.html:85 order/views.py:509 -#: part/templates/part/category.html:166 +#: part/templates/part/category.html:173 msgid "Order Parts" msgstr "パーツの注文" @@ -1306,8 +1310,8 @@ msgstr "" #: order/templates/order/po_sidebar.html:9 #: order/templates/order/purchase_order_detail.html:60 #: order/templates/order/sales_order_detail.html:52 -#: order/templates/order/so_sidebar.html:9 part/templates/part/detail.html:300 -#: part/templates/part/part_sidebar.html:50 stock/templates/stock/item.html:95 +#: order/templates/order/so_sidebar.html:9 part/templates/part/detail.html:193 +#: part/templates/part/part_sidebar.html:48 stock/templates/stock/item.html:95 #: stock/templates/stock/stock_sidebar.html:19 msgid "Attachments" msgstr "" @@ -1323,7 +1327,7 @@ msgstr "" #: order/templates/order/purchase_order_detail.html:108 #: order/templates/order/sales_order_detail.html:72 #: order/templates/order/sales_order_detail.html:99 -#: part/templates/part/detail.html:227 stock/templates/stock/item.html:115 +#: part/templates/part/detail.html:120 stock/templates/stock/item.html:115 #: stock/templates/stock/item.html:205 msgid "Edit Notes" msgstr "" @@ -1336,7 +1340,7 @@ msgstr "" msgid "All untracked stock items have been allocated" msgstr "" -#: build/templates/build/index.html:18 part/templates/part/detail.html:407 +#: build/templates/build/index.html:18 part/templates/part/detail.html:300 msgid "New Build Order" msgstr "" @@ -1380,7 +1384,7 @@ msgstr "" msgid "Maximum output quantity is " msgstr "" -#: build/views.py:122 stock/serializers.py:356 stock/views.py:1290 +#: build/views.py:122 stock/serializers.py:361 stock/views.py:1290 msgid "Serial numbers already exist" msgstr "" @@ -1675,7 +1679,7 @@ msgid "Parts are trackable by default" msgstr "パーツはデフォルトで追跡可能です" #: common/models.py:745 part/models.py:920 -#: part/templates/part/part_base.html:144 +#: part/templates/part/part_base.html:147 #: templates/js/translated/table_filters.js:42 msgid "Virtual" msgstr "" @@ -2142,7 +2146,7 @@ msgstr "" #: common/models.py:1233 company/serializers.py:264 #: company/templates/company/supplier_part.html:256 -#: templates/js/translated/part.js:1620 +#: templates/js/translated/part.js:852 templates/js/translated/part.js:1801 msgid "Price" msgstr "" @@ -2206,7 +2210,7 @@ msgstr "" msgid "Description of the company" msgstr "" -#: company/models.py:112 company/templates/company/company_base.html:70 +#: company/models.py:112 company/templates/company/company_base.html:97 #: templates/js/translated/company.js:349 msgid "Website" msgstr "" @@ -2215,7 +2219,7 @@ msgstr "" msgid "Company website URL" msgstr "" -#: company/models.py:117 company/templates/company/company_base.html:88 +#: company/models.py:117 company/templates/company/company_base.html:115 msgid "Address" msgstr "" @@ -2231,7 +2235,7 @@ msgstr "" msgid "Contact phone number" msgstr "" -#: company/models.py:125 company/templates/company/company_base.html:102 +#: company/models.py:125 company/templates/company/company_base.html:129 #: templates/InvenTree/settings/user.html:47 msgid "Email" msgstr "" @@ -2240,7 +2244,7 @@ msgstr "" msgid "Contact email address" msgstr "" -#: company/models.py:128 company/templates/company/company_base.html:109 +#: company/models.py:128 company/templates/company/company_base.html:136 msgid "Contact" msgstr "" @@ -2281,7 +2285,7 @@ msgid "Does this company manufacture parts?" msgstr "" #: company/models.py:152 company/serializers.py:270 -#: company/templates/company/company_base.html:76 stock/serializers.py:172 +#: company/templates/company/company_base.html:103 stock/serializers.py:177 msgid "Currency" msgstr "" @@ -2289,8 +2293,8 @@ msgstr "" msgid "Default currency used for this company" msgstr "" -#: company/models.py:320 company/models.py:535 stock/models.py:484 -#: stock/templates/stock/item_base.html:224 +#: company/models.py:320 company/models.py:535 stock/models.py:474 +#: stock/templates/stock/item_base.html:135 msgid "Base Part" msgstr "" @@ -2298,29 +2302,29 @@ msgstr "" msgid "Select part" msgstr "" -#: company/models.py:335 company/templates/company/company_base.html:116 -#: company/templates/company/manufacturer_part.html:93 -#: company/templates/company/supplier_part.html:104 -#: stock/templates/stock/item_base.html:353 +#: company/models.py:335 company/templates/company/company_base.html:73 +#: company/templates/company/manufacturer_part.html:91 +#: company/templates/company/supplier_part.html:97 +#: stock/templates/stock/item_base.html:381 #: templates/js/translated/company.js:333 #: templates/js/translated/company.js:514 -#: templates/js/translated/company.js:797 templates/js/translated/part.js:229 +#: templates/js/translated/company.js:797 templates/js/translated/part.js:232 msgid "Manufacturer" msgstr "" -#: company/models.py:336 templates/js/translated/part.js:230 +#: company/models.py:336 templates/js/translated/part.js:233 msgid "Select manufacturer" msgstr "" -#: company/models.py:342 company/templates/company/manufacturer_part.html:97 -#: company/templates/company/supplier_part.html:112 +#: company/models.py:342 company/templates/company/manufacturer_part.html:96 +#: company/templates/company/supplier_part.html:105 #: templates/js/translated/company.js:530 -#: templates/js/translated/company.js:815 templates/js/translated/order.js:874 -#: templates/js/translated/part.js:240 +#: templates/js/translated/company.js:815 templates/js/translated/order.js:873 +#: templates/js/translated/part.js:243 templates/js/translated/part.js:832 msgid "MPN" msgstr "" -#: company/models.py:343 templates/js/translated/part.js:241 +#: company/models.py:343 templates/js/translated/part.js:244 msgid "Manufacturer Part Number" msgstr "" @@ -2335,7 +2339,7 @@ msgstr "" #: company/models.py:409 company/models.py:558 #: company/templates/company/manufacturer_part.html:6 #: company/templates/company/manufacturer_part.html:23 -#: stock/templates/stock/item_base.html:363 +#: stock/templates/stock/item_base.html:391 msgid "Manufacturer Part" msgstr "メーカー・パーツ" @@ -2345,8 +2349,8 @@ msgstr "" #: company/models.py:422 #: report/templates/report/inventree_test_report_base.html:95 -#: stock/models.py:1867 templates/js/translated/company.js:644 -#: templates/js/translated/part.js:645 templates/js/translated/stock.js:878 +#: stock/models.py:1857 templates/js/translated/company.js:644 +#: templates/js/translated/part.js:652 templates/js/translated/stock.js:960 msgid "Value" msgstr "" @@ -2355,9 +2359,9 @@ msgid "Parameter value" msgstr "" #: company/models.py:429 part/models.py:882 part/models.py:2397 -#: part/templates/part/detail.html:59 +#: part/templates/part/part_base.html:288 #: templates/InvenTree/settings/settings.html:264 -#: templates/js/translated/company.js:650 templates/js/translated/part.js:651 +#: templates/js/translated/company.js:650 templates/js/translated/part.js:658 msgid "Units" msgstr "" @@ -2369,28 +2373,28 @@ msgstr "" msgid "Linked manufacturer part must reference the same base part" msgstr "" -#: company/models.py:545 company/templates/company/company_base.html:121 -#: company/templates/company/supplier_part.html:94 order/models.py:263 -#: order/templates/order/order_base.html:108 +#: company/models.py:545 company/templates/company/company_base.html:78 +#: company/templates/company/supplier_part.html:87 order/models.py:263 +#: order/templates/order/order_base.html:112 #: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:219 -#: part/bom.py:247 stock/templates/stock/item_base.html:370 +#: part/bom.py:247 stock/templates/stock/item_base.html:398 #: templates/js/translated/company.js:337 -#: templates/js/translated/company.js:771 templates/js/translated/order.js:660 -#: templates/js/translated/part.js:210 +#: templates/js/translated/company.js:771 templates/js/translated/order.js:667 +#: templates/js/translated/part.js:213 templates/js/translated/part.js:800 msgid "Supplier" msgstr "" -#: company/models.py:546 templates/js/translated/part.js:211 +#: company/models.py:546 templates/js/translated/part.js:214 msgid "Select supplier" msgstr "" -#: company/models.py:551 company/templates/company/supplier_part.html:98 -#: part/bom.py:220 part/bom.py:248 templates/js/translated/order.js:861 -#: templates/js/translated/part.js:221 +#: company/models.py:551 company/templates/company/supplier_part.html:91 +#: part/bom.py:220 part/bom.py:248 templates/js/translated/order.js:860 +#: templates/js/translated/part.js:224 templates/js/translated/part.js:818 msgid "SKU" msgstr "" -#: company/models.py:552 templates/js/translated/part.js:222 +#: company/models.py:552 templates/js/translated/part.js:225 msgid "Supplier stock keeping unit" msgstr "" @@ -2406,7 +2410,7 @@ msgstr "" msgid "Supplier part description" msgstr "" -#: company/models.py:576 company/templates/company/supplier_part.html:126 +#: company/models.py:576 company/templates/company/supplier_part.html:119 #: part/models.py:2588 report/templates/report/inventree_po_report.html:93 #: report/templates/report/inventree_so_report.html:93 msgid "Note" @@ -2420,9 +2424,9 @@ msgstr "" msgid "Minimum charge (e.g. stocking fee)" msgstr "" -#: company/models.py:582 company/templates/company/supplier_part.html:119 -#: stock/models.py:507 stock/templates/stock/item_base.html:311 -#: templates/js/translated/company.js:847 templates/js/translated/stock.js:1366 +#: company/models.py:582 company/templates/company/supplier_part.html:112 +#: stock/models.py:497 stock/templates/stock/item_base.html:339 +#: templates/js/translated/company.js:847 templates/js/translated/stock.js:1448 msgid "Packaging" msgstr "" @@ -2457,43 +2461,56 @@ msgstr "" msgid "Create Purchase Order" msgstr "" -#: company/templates/company/company_base.html:27 +#: company/templates/company/company_base.html:26 +msgid "Company actions" +msgstr "" + +#: company/templates/company/company_base.html:31 msgid "Edit company information" msgstr "" #: company/templates/company/company_base.html:32 -#: company/templates/company/company_base.html:148 +#: templates/js/translated/company.js:265 +msgid "Edit Company" +msgstr "" + +#: company/templates/company/company_base.html:36 +msgid "Delete company" +msgstr "" + +#: company/templates/company/company_base.html:37 +#: company/templates/company/company_base.html:159 msgid "Delete Company" msgstr "" -#: company/templates/company/company_base.html:48 +#: company/templates/company/company_base.html:53 #: part/templates/part/part_thumb.html:12 msgid "Upload new image" msgstr "" -#: company/templates/company/company_base.html:51 +#: company/templates/company/company_base.html:56 #: part/templates/part/part_thumb.html:14 msgid "Download image from URL" msgstr "" -#: company/templates/company/company_base.html:81 -msgid "Uses default currency" -msgstr "" - -#: company/templates/company/company_base.html:95 -msgid "Phone" -msgstr "" - -#: company/templates/company/company_base.html:126 order/models.py:567 -#: order/templates/order/sales_order_base.html:114 stock/models.py:525 -#: stock/models.py:526 stock/templates/stock/item_base.html:263 -#: templates/js/translated/company.js:329 templates/js/translated/order.js:1073 -#: templates/js/translated/stock.js:2002 +#: company/templates/company/company_base.html:83 order/models.py:567 +#: order/templates/order/sales_order_base.html:115 stock/models.py:515 +#: stock/models.py:516 stock/templates/stock/item_base.html:291 +#: templates/js/translated/company.js:329 templates/js/translated/order.js:1072 +#: templates/js/translated/stock.js:2084 msgid "Customer" msgstr "" -#: company/templates/company/company_base.html:194 -#: part/templates/part/part_base.html:342 +#: company/templates/company/company_base.html:108 +msgid "Uses default currency" +msgstr "" + +#: company/templates/company/company_base.html:122 +msgid "Phone" +msgstr "" + +#: company/templates/company/company_base.html:205 +#: part/templates/part/part_base.html:471 msgid "Upload Image" msgstr "" @@ -2509,23 +2526,23 @@ msgid "Create new supplier part" msgstr "新しいサプライヤー・パーツを作成" #: company/templates/company/detail.html:20 -#: company/templates/company/manufacturer_part.html:112 -#: part/templates/part/detail.html:440 +#: company/templates/company/manufacturer_part.html:118 +#: part/templates/part/detail.html:333 msgid "New Supplier Part" msgstr "新しいサプライヤー・パーツ" #: company/templates/company/detail.html:32 #: company/templates/company/detail.html:79 -#: company/templates/company/manufacturer_part.html:121 -#: company/templates/company/manufacturer_part.html:150 -#: part/templates/part/category.html:160 part/templates/part/detail.html:449 -#: part/templates/part/detail.html:477 +#: company/templates/company/manufacturer_part.html:127 +#: company/templates/company/manufacturer_part.html:156 +#: part/templates/part/category.html:167 part/templates/part/detail.html:342 +#: part/templates/part/detail.html:370 msgid "Options" msgstr "" #: company/templates/company/detail.html:37 #: company/templates/company/detail.html:84 -#: part/templates/part/category.html:166 +#: part/templates/part/category.html:173 msgid "Order parts" msgstr "パーツの注文" @@ -2547,7 +2564,7 @@ msgstr "メーカー・パーツ" msgid "Create new manufacturer part" msgstr "新しいメーカー・パーツを作成" -#: company/templates/company/detail.html:67 part/templates/part/detail.html:467 +#: company/templates/company/detail.html:67 part/templates/part/detail.html:360 msgid "New Manufacturer Part" msgstr "新しいメーカ―・パーツ" @@ -2561,7 +2578,7 @@ msgstr "" #: order/templates/order/order_base.html:13 #: order/templates/order/purchase_orders.html:8 #: order/templates/order/purchase_orders.html:12 -#: part/templates/part/detail.html:171 part/templates/part/part_sidebar.html:35 +#: part/templates/part/detail.html:64 part/templates/part/part_sidebar.html:33 #: templates/InvenTree/index.html:252 templates/InvenTree/search.html:203 #: templates/InvenTree/settings/sidebar.html:44 templates/navbar.html:45 #: users/models.py:45 @@ -2583,7 +2600,7 @@ msgstr "" #: order/templates/order/sales_order_base.html:13 #: order/templates/order/sales_orders.html:8 #: order/templates/order/sales_orders.html:15 -#: part/templates/part/detail.html:194 part/templates/part/part_sidebar.html:39 +#: part/templates/part/detail.html:87 part/templates/part/part_sidebar.html:37 #: templates/InvenTree/index.html:283 templates/InvenTree/search.html:223 #: templates/InvenTree/settings/sidebar.html:46 templates/navbar.html:56 #: users/models.py:46 @@ -2610,14 +2627,14 @@ msgid "Company Notes" msgstr "" #: company/templates/company/detail.html:383 -#: company/templates/company/manufacturer_part.html:209 -#: part/templates/part/detail.html:520 +#: company/templates/company/manufacturer_part.html:215 +#: part/templates/part/detail.html:413 msgid "Delete Supplier Parts?" msgstr "" #: company/templates/company/detail.html:384 -#: company/templates/company/manufacturer_part.html:210 -#: part/templates/part/detail.html:521 +#: company/templates/company/manufacturer_part.html:216 +#: part/templates/part/detail.html:414 msgid "All selected supplier parts will be deleted" msgstr "" @@ -2634,7 +2651,7 @@ msgstr "" #: company/templates/company/manufacturer_part.html:35 #: company/templates/company/supplier_part.html:34 #: company/templates/company/supplier_part.html:159 -#: part/templates/part/detail.html:174 part/templates/part/part_base.html:76 +#: part/templates/part/detail.html:67 part/templates/part/part_base.html:76 msgid "Order part" msgstr "パーツの注文" @@ -2648,60 +2665,60 @@ msgstr "メーカー・パーツの編集" msgid "Delete manufacturer part" msgstr "メーカー・パーツを削除" -#: company/templates/company/manufacturer_part.html:70 -#: company/templates/company/supplier_part.html:71 +#: company/templates/company/manufacturer_part.html:66 +#: company/templates/company/supplier_part.html:63 msgid "Internal Part" msgstr "内部パーツ" -#: company/templates/company/manufacturer_part.html:108 +#: company/templates/company/manufacturer_part.html:114 #: company/templates/company/supplier_part.html:15 company/views.py:49 -#: part/templates/part/part_sidebar.html:33 part/templates/part/prices.html:163 +#: part/templates/part/part_sidebar.html:31 part/templates/part/prices.html:163 #: templates/InvenTree/search.html:194 templates/navbar.html:43 msgid "Suppliers" msgstr "" -#: company/templates/company/manufacturer_part.html:123 -#: part/templates/part/detail.html:451 +#: company/templates/company/manufacturer_part.html:129 +#: part/templates/part/detail.html:344 msgid "Delete supplier parts" msgstr "" -#: company/templates/company/manufacturer_part.html:123 -#: company/templates/company/manufacturer_part.html:152 -#: company/templates/company/manufacturer_part.html:248 -#: part/templates/part/detail.html:451 part/templates/part/detail.html:479 +#: company/templates/company/manufacturer_part.html:129 +#: company/templates/company/manufacturer_part.html:158 +#: company/templates/company/manufacturer_part.html:254 +#: part/templates/part/detail.html:344 part/templates/part/detail.html:372 #: templates/js/translated/company.js:425 templates/js/translated/helpers.js:31 #: users/models.py:204 msgid "Delete" msgstr "" -#: company/templates/company/manufacturer_part.html:137 +#: company/templates/company/manufacturer_part.html:143 #: company/templates/company/manufacturer_part_sidebar.html:5 #: part/templates/part/category_sidebar.html:17 -#: part/templates/part/detail.html:277 part/templates/part/part_sidebar.html:10 +#: part/templates/part/detail.html:170 part/templates/part/part_sidebar.html:8 msgid "Parameters" msgstr "" -#: company/templates/company/manufacturer_part.html:141 -#: part/templates/part/detail.html:282 +#: company/templates/company/manufacturer_part.html:147 +#: part/templates/part/detail.html:175 #: templates/InvenTree/settings/category.html:12 #: templates/InvenTree/settings/part.html:65 msgid "New Parameter" msgstr "" -#: company/templates/company/manufacturer_part.html:152 +#: company/templates/company/manufacturer_part.html:158 msgid "Delete parameters" msgstr "" -#: company/templates/company/manufacturer_part.html:185 -#: part/templates/part/detail.html:976 +#: company/templates/company/manufacturer_part.html:191 +#: part/templates/part/detail.html:867 msgid "Add Parameter" msgstr "" -#: company/templates/company/manufacturer_part.html:233 +#: company/templates/company/manufacturer_part.html:239 msgid "Selected parameters will be deleted" msgstr "" -#: company/templates/company/manufacturer_part.html:245 +#: company/templates/company/manufacturer_part.html:251 msgid "Delete Parameters" msgstr "" @@ -2722,9 +2739,9 @@ msgid "Assigned Stock Items" msgstr "" #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 stock/models.py:492 -#: stock/templates/stock/item_base.html:375 -#: templates/js/translated/company.js:787 templates/js/translated/stock.js:1323 +#: company/templates/company/supplier_part.html:24 stock/models.py:482 +#: stock/templates/stock/item_base.html:403 +#: templates/js/translated/company.js:787 templates/js/translated/stock.js:1405 msgid "Supplier Part" msgstr "" @@ -2744,13 +2761,13 @@ msgid "Supplier Part Stock" msgstr "" #: company/templates/company/supplier_part.html:141 -#: part/templates/part/detail.html:127 stock/templates/stock/location.html:147 +#: part/templates/part/detail.html:20 stock/templates/stock/location.html:162 msgid "Create new stock item" msgstr "" #: company/templates/company/supplier_part.html:142 -#: part/templates/part/detail.html:128 stock/templates/stock/location.html:148 -#: templates/js/translated/stock.js:354 +#: part/templates/part/detail.html:21 stock/templates/stock/location.html:163 +#: templates/js/translated/stock.js:355 msgid "New Stock Item" msgstr "" @@ -2760,7 +2777,7 @@ msgid "Supplier Part Orders" msgstr "" #: company/templates/company/supplier_part.html:160 -#: part/templates/part/detail.html:175 +#: part/templates/part/detail.html:68 msgid "Order Part" msgstr "" @@ -2796,15 +2813,15 @@ msgid "Delete price break" msgstr "" #: company/templates/company/supplier_part_navbar.html:15 -#: part/templates/part/part_sidebar.html:16 +#: part/templates/part/part_sidebar.html:14 #: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:14 #: stock/templates/stock/stock_app_base.html:10 #: templates/InvenTree/search.html:156 #: templates/InvenTree/settings/sidebar.html:40 -#: templates/js/translated/bom.js:216 templates/js/translated/part.js:427 -#: templates/js/translated/part.js:562 templates/js/translated/part.js:878 -#: templates/js/translated/part.js:1039 templates/js/translated/stock.js:509 -#: templates/js/translated/stock.js:1162 templates/navbar.html:26 +#: templates/js/translated/bom.js:216 templates/js/translated/part.js:434 +#: templates/js/translated/part.js:569 templates/js/translated/part.js:1059 +#: templates/js/translated/part.js:1220 templates/js/translated/stock.js:591 +#: templates/js/translated/stock.js:1244 templates/navbar.html:26 msgid "Stock" msgstr "" @@ -2818,16 +2835,16 @@ msgid "Supplier Part Pricing" msgstr "" #: company/templates/company/supplier_part_navbar.html:29 -#: part/templates/part/part_sidebar.html:30 +#: part/templates/part/part_sidebar.html:28 msgid "Pricing" msgstr "" #: company/templates/company/supplier_part_sidebar.html:5 -#: stock/templates/stock/location.html:118 -#: stock/templates/stock/location.html:132 -#: stock/templates/stock/location.html:144 +#: stock/templates/stock/location.html:133 +#: stock/templates/stock/location.html:147 +#: stock/templates/stock/location.html:159 #: stock/templates/stock/location_sidebar.html:7 -#: templates/InvenTree/search.html:158 templates/js/translated/stock.js:1901 +#: templates/InvenTree/search.html:158 templates/js/translated/stock.js:1983 #: templates/stats.html:93 templates/stats.html:102 users/models.py:43 msgid "Stock Items" msgstr "" @@ -2947,7 +2964,7 @@ msgstr "" msgid "Place order" msgstr "" -#: order/forms.py:37 order/templates/order/order_base.html:59 +#: order/forms.py:37 order/templates/order/order_base.html:60 msgid "Mark order as complete" msgstr "" @@ -3000,8 +3017,8 @@ msgstr "" msgid "Company from which the items are being ordered" msgstr "" -#: order/models.py:267 order/templates/order/order_base.html:114 -#: templates/js/translated/order.js:669 +#: order/models.py:267 order/templates/order/order_base.html:118 +#: templates/js/translated/order.js:676 msgid "Supplier Reference" msgstr "" @@ -3061,7 +3078,7 @@ msgstr "" msgid "Target date for order completion. Order will be overdue after this date." msgstr "" -#: order/models.py:582 templates/js/translated/order.js:1114 +#: order/models.py:582 templates/js/translated/order.js:1113 msgid "Shipment Date" msgstr "" @@ -3086,16 +3103,16 @@ msgid "Line item notes" msgstr "" #: order/models.py:768 order/models.py:856 -#: templates/js/translated/order.js:1166 +#: templates/js/translated/order.js:1165 msgid "Order" msgstr "" #: order/models.py:769 order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_po_report.html:77 -#: stock/templates/stock/item_base.html:325 -#: templates/js/translated/order.js:638 templates/js/translated/stock.js:1300 -#: templates/js/translated/stock.js:1983 +#: stock/templates/stock/item_base.html:353 +#: templates/js/translated/order.js:638 templates/js/translated/part.js:775 +#: templates/js/translated/stock.js:1382 templates/js/translated/stock.js:2065 msgid "Purchase Order" msgstr "" @@ -3103,9 +3120,10 @@ msgstr "" msgid "Supplier part" msgstr "" -#: order/models.py:797 order/templates/order/order_base.html:147 -#: order/templates/order/sales_order_base.html:154 -#: templates/js/translated/order.js:429 templates/js/translated/order.js:954 +#: order/models.py:797 order/templates/order/order_base.html:151 +#: order/templates/order/sales_order_base.html:155 +#: templates/js/translated/order.js:429 templates/js/translated/order.js:953 +#: templates/js/translated/part.js:847 templates/js/translated/part.js:873 msgid "Received" msgstr "" @@ -3113,9 +3131,9 @@ msgstr "" msgid "Number of items received" msgstr "" -#: order/models.py:805 part/templates/part/prices.html:176 stock/models.py:619 -#: stock/serializers.py:163 stock/templates/stock/item_base.html:332 -#: templates/js/translated/stock.js:1354 +#: order/models.py:805 part/templates/part/prices.html:176 stock/models.py:609 +#: stock/serializers.py:168 stock/templates/stock/item_base.html:360 +#: templates/js/translated/stock.js:1436 msgid "Purchase Price" msgstr "" @@ -3176,47 +3194,47 @@ msgstr "" msgid "Enter stock allocation quantity" msgstr "" -#: order/serializers.py:169 +#: order/serializers.py:175 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:204 +#: order/serializers.py:213 msgid "Line Item" msgstr "" -#: order/serializers.py:210 +#: order/serializers.py:219 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:220 order/serializers.py:288 +#: order/serializers.py:229 order/serializers.py:297 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:244 +#: order/serializers.py:253 msgid "Barcode Hash" msgstr "" -#: order/serializers.py:245 +#: order/serializers.py:254 msgid "Unique identifier field" msgstr "" -#: order/serializers.py:262 +#: order/serializers.py:271 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:300 +#: order/serializers.py:309 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:317 +#: order/serializers.py:326 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:328 +#: order/serializers.py:337 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:569 +#: order/serializers.py:578 msgid "Sale price currency" msgstr "" @@ -3248,22 +3266,36 @@ msgstr "" msgid "Receive items" msgstr "" -#: order/templates/order/order_base.html:93 -#: order/templates/order/sales_order_base.html:98 +#: order/templates/order/order_base.html:58 +#: order/templates/order/purchase_order_detail.html:31 +msgid "Receive Items" +msgstr "" + +#: order/templates/order/order_base.html:62 order/views.py:185 +msgid "Complete Order" +msgstr "" + +#: order/templates/order/order_base.html:84 +#: order/templates/order/sales_order_base.html:79 msgid "Order Reference" msgstr "" -#: order/templates/order/order_base.html:98 -#: order/templates/order/sales_order_base.html:103 +#: order/templates/order/order_base.html:89 +#: order/templates/order/sales_order_base.html:84 +msgid "Order Description" +msgstr "" + +#: order/templates/order/order_base.html:94 +#: order/templates/order/sales_order_base.html:89 msgid "Order Status" msgstr "" -#: order/templates/order/order_base.html:133 +#: order/templates/order/order_base.html:137 #: report/templates/report/inventree_build_order_base.html:122 msgid "Issued" msgstr "" -#: order/templates/order/order_base.html:203 +#: order/templates/order/order_base.html:207 msgid "Edit Purchase Order" msgstr "" @@ -3421,7 +3453,7 @@ msgid "Select existing purchase orders, or create new orders." msgstr "" #: order/templates/order/order_wizard/select_pos.html:31 -#: templates/js/translated/order.js:695 templates/js/translated/order.js:1119 +#: templates/js/translated/order.js:694 templates/js/translated/order.js:1118 msgid "Items" msgstr "" @@ -3465,10 +3497,6 @@ msgstr "" msgid "Receive selected items" msgstr "" -#: order/templates/order/purchase_order_detail.html:31 -msgid "Receive Items" -msgstr "" - #: order/templates/order/purchase_order_detail.html:50 msgid "Received Items" msgstr "" @@ -3496,16 +3524,16 @@ msgstr "" msgid "Ship Order" msgstr "" -#: order/templates/order/sales_order_base.html:86 +#: order/templates/order/sales_order_base.html:102 msgid "This Sales Order has not been fully allocated" msgstr "" -#: order/templates/order/sales_order_base.html:121 -#: templates/js/translated/order.js:1086 +#: order/templates/order/sales_order_base.html:122 +#: templates/js/translated/order.js:1085 msgid "Customer Reference" msgstr "" -#: order/templates/order/sales_order_base.html:194 +#: order/templates/order/sales_order_base.html:195 msgid "Edit Sales Order" msgstr "" @@ -3576,10 +3604,6 @@ msgstr "" msgid "Purchase order issued" msgstr "" -#: order/views.py:185 -msgid "Complete Order" -msgstr "" - #: order/views.py:201 msgid "Confirm order completion" msgstr "" @@ -3672,11 +3696,11 @@ msgid "This field is required" msgstr "" #: part/bom.py:125 part/models.py:81 part/models.py:816 -#: part/templates/part/category.html:90 part/templates/part/detail.html:104 +#: part/templates/part/category.html:104 part/templates/part/part_base.html:338 msgid "Default Location" msgstr "" -#: part/bom.py:126 part/templates/part/part_base.html:167 +#: part/bom.py:126 part/templates/part/part_base.html:185 msgid "Available Stock" msgstr "" @@ -3793,19 +3817,19 @@ msgstr "" msgid "Part Category" msgstr "" -#: part/models.py:96 part/templates/part/category.html:117 +#: part/models.py:96 part/templates/part/category.html:124 #: templates/InvenTree/search.html:101 templates/stats.html:84 #: users/models.py:40 msgid "Part Categories" msgstr "" #: part/models.py:358 part/templates/part/cat_link.html:3 -#: part/templates/part/category.html:13 part/templates/part/category.html:122 -#: part/templates/part/category.html:142 +#: part/templates/part/category.html:13 part/templates/part/category.html:129 +#: part/templates/part/category.html:149 #: part/templates/part/category_sidebar.html:9 #: templates/InvenTree/index.html:85 templates/InvenTree/search.html:88 #: templates/InvenTree/settings/sidebar.html:36 -#: templates/js/translated/part.js:1416 templates/navbar.html:19 +#: templates/js/translated/part.js:1597 templates/navbar.html:19 #: templates/stats.html:80 templates/stats.html:89 users/models.py:41 msgid "Parts" msgstr "パーツ" @@ -3859,8 +3883,8 @@ msgstr "" msgid "Part description" msgstr "" -#: part/models.py:770 part/templates/part/category.html:97 -#: part/templates/part/detail.html:73 +#: part/models.py:770 part/templates/part/category.html:82 +#: part/templates/part/part_base.html:302 msgid "Keywords" msgstr "" @@ -3869,9 +3893,10 @@ msgid "Part keywords to improve visibility in search results" msgstr "" #: part/models.py:778 part/models.py:2223 part/models.py:2472 -#: part/templates/part/detail.html:36 part/templates/part/set_category.html:15 +#: part/templates/part/part_base.html:265 +#: part/templates/part/set_category.html:15 #: templates/InvenTree/settings/settings.html:163 -#: templates/js/translated/part.js:1021 +#: templates/js/translated/part.js:1202 msgid "Category" msgstr "" @@ -3879,9 +3904,9 @@ msgstr "" msgid "Part category" msgstr "" -#: part/models.py:784 part/templates/part/detail.html:45 -#: templates/js/translated/part.js:550 templates/js/translated/part.js:974 -#: templates/js/translated/stock.js:1134 +#: part/models.py:784 part/templates/part/part_base.html:274 +#: templates/js/translated/part.js:557 templates/js/translated/part.js:1155 +#: templates/js/translated/stock.js:1216 msgid "IPN" msgstr "" @@ -3893,8 +3918,8 @@ msgstr "" msgid "Part revision or version number" msgstr "" -#: part/models.py:792 part/templates/part/detail.html:52 report/models.py:200 -#: templates/js/translated/part.js:554 +#: part/models.py:792 part/templates/part/part_base.html:281 +#: report/models.py:200 templates/js/translated/part.js:561 msgid "Revision" msgstr "" @@ -3902,7 +3927,7 @@ msgstr "" msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:861 part/templates/part/detail.html:113 +#: part/models.py:861 part/templates/part/part_base.html:347 msgid "Default Supplier" msgstr "" @@ -3918,7 +3943,7 @@ msgstr "" msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:875 part/templates/part/part_base.html:178 +#: part/models.py:875 part/templates/part/part_base.html:196 msgid "Minimum Stock" msgstr "" @@ -4001,8 +4026,8 @@ msgstr "" msgid "Test with this name already exists for this part" msgstr "" -#: part/models.py:2310 templates/js/translated/part.js:1467 -#: templates/js/translated/stock.js:858 +#: part/models.py:2310 templates/js/translated/part.js:1648 +#: templates/js/translated/stock.js:940 msgid "Test Name" msgstr "" @@ -4018,7 +4043,7 @@ msgstr "" msgid "Enter description for this test" msgstr "" -#: part/models.py:2322 templates/js/translated/part.js:1476 +#: part/models.py:2322 templates/js/translated/part.js:1657 #: templates/js/translated/table_filters.js:276 msgid "Required" msgstr "" @@ -4027,7 +4052,7 @@ msgstr "" msgid "Is this test required to pass?" msgstr "" -#: part/models.py:2328 templates/js/translated/part.js:1484 +#: part/models.py:2328 templates/js/translated/part.js:1665 msgid "Requires Value" msgstr "" @@ -4035,7 +4060,7 @@ msgstr "" msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:2334 templates/js/translated/part.js:1491 +#: part/models.py:2334 templates/js/translated/part.js:1672 msgid "Requires Attachment" msgstr "" @@ -4150,7 +4175,7 @@ msgstr "" msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:2686 stock/models.py:371 +#: part/models.py:2686 stock/models.py:361 msgid "Quantity must be integer value for trackable parts" msgstr "" @@ -4213,7 +4238,7 @@ msgstr "" msgid "The BOM for %(part)s has not been validated." msgstr "" -#: part/templates/part/bom.html:30 part/templates/part/detail.html:357 +#: part/templates/part/bom.html:30 part/templates/part/detail.html:250 msgid "BOM actions" msgstr "" @@ -4298,68 +4323,64 @@ msgstr "" msgid "New Category" msgstr "" -#: part/templates/part/category.html:67 -msgid "Top level part category" -msgstr "" - -#: part/templates/part/category.html:79 +#: part/templates/part/category.html:76 part/templates/part/category.html:89 msgid "Category Path" msgstr "" -#: part/templates/part/category.html:84 -msgid "Category Description" +#: part/templates/part/category.html:90 +msgid "Top level part category" msgstr "" -#: part/templates/part/category.html:103 part/templates/part/category.html:194 +#: part/templates/part/category.html:110 part/templates/part/category.html:201 #: part/templates/part/category_sidebar.html:7 msgid "Subcategories" msgstr "" -#: part/templates/part/category.html:108 +#: part/templates/part/category.html:115 msgid "Parts (Including subcategories)" msgstr "" -#: part/templates/part/category.html:145 +#: part/templates/part/category.html:152 msgid "Export Part Data" msgstr "" -#: part/templates/part/category.html:146 part/templates/part/category.html:170 +#: part/templates/part/category.html:153 part/templates/part/category.html:177 msgid "Export" msgstr "" -#: part/templates/part/category.html:149 +#: part/templates/part/category.html:156 msgid "Create new part" msgstr "" -#: part/templates/part/category.html:150 templates/js/translated/bom.js:40 +#: part/templates/part/category.html:157 templates/js/translated/bom.js:40 msgid "New Part" msgstr "新規パーツ" -#: part/templates/part/category.html:164 +#: part/templates/part/category.html:171 msgid "Set category" msgstr "" -#: part/templates/part/category.html:164 +#: part/templates/part/category.html:171 msgid "Set Category" msgstr "" -#: part/templates/part/category.html:168 +#: part/templates/part/category.html:175 msgid "Print Labels" msgstr "" -#: part/templates/part/category.html:170 +#: part/templates/part/category.html:177 msgid "Export Data" msgstr "" -#: part/templates/part/category.html:184 +#: part/templates/part/category.html:191 msgid "Part Parameters" msgstr "" -#: part/templates/part/category.html:261 +#: part/templates/part/category.html:268 msgid "Create Part Category" msgstr "" -#: part/templates/part/category.html:288 +#: part/templates/part/category.html:295 msgid "Create Part" msgstr "" @@ -4402,7 +4423,7 @@ msgstr "" msgid "Import Parts" msgstr "" -#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:366 +#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:373 msgid "Duplicate Part" msgstr "" @@ -4426,167 +4447,155 @@ msgstr "" msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)" msgstr "" -#: part/templates/part/detail.html:16 -msgid "Part Details" -msgstr "" - -#: part/templates/part/detail.html:66 -msgid "Minimum stock level" -msgstr "" - -#: part/templates/part/detail.html:97 -msgid "Latest Serial Number" -msgstr "" - -#: part/templates/part/detail.html:124 +#: part/templates/part/detail.html:17 msgid "Part Stock" msgstr "" -#: part/templates/part/detail.html:136 +#: part/templates/part/detail.html:29 #, python-format msgid "Showing stock for all variants of %(full_name)s" msgstr "" -#: part/templates/part/detail.html:146 +#: part/templates/part/detail.html:39 msgid "Part Test Templates" msgstr "" -#: part/templates/part/detail.html:151 +#: part/templates/part/detail.html:44 msgid "Add Test Template" msgstr "" -#: part/templates/part/detail.html:208 +#: part/templates/part/detail.html:101 msgid "Sales Order Allocations" msgstr "" -#: part/templates/part/detail.html:249 +#: part/templates/part/detail.html:142 msgid "Part Variants" msgstr "" -#: part/templates/part/detail.html:253 +#: part/templates/part/detail.html:146 msgid "Create new variant" msgstr "" -#: part/templates/part/detail.html:254 +#: part/templates/part/detail.html:147 msgid "New Variant" msgstr "" -#: part/templates/part/detail.html:281 +#: part/templates/part/detail.html:174 msgid "Add new parameter" msgstr "" -#: part/templates/part/detail.html:315 part/templates/part/part_sidebar.html:47 +#: part/templates/part/detail.html:208 part/templates/part/part_sidebar.html:45 msgid "Related Parts" msgstr "" -#: part/templates/part/detail.html:319 part/templates/part/detail.html:320 +#: part/templates/part/detail.html:212 part/templates/part/detail.html:213 msgid "Add Related" msgstr "" -#: part/templates/part/detail.html:340 part/templates/part/part_sidebar.html:19 +#: part/templates/part/detail.html:233 part/templates/part/part_sidebar.html:17 msgid "Bill of Materials" msgstr "" -#: part/templates/part/detail.html:345 +#: part/templates/part/detail.html:238 msgid "Export actions" msgstr "" -#: part/templates/part/detail.html:349 +#: part/templates/part/detail.html:242 msgid "Export BOM" msgstr "" -#: part/templates/part/detail.html:351 +#: part/templates/part/detail.html:244 msgid "Print BOM Report" msgstr "" -#: part/templates/part/detail.html:361 +#: part/templates/part/detail.html:254 msgid "Upload BOM" msgstr "" -#: part/templates/part/detail.html:363 templates/js/translated/part.js:267 +#: part/templates/part/detail.html:256 templates/js/translated/part.js:270 msgid "Copy BOM" msgstr "" -#: part/templates/part/detail.html:365 part/views.py:755 +#: part/templates/part/detail.html:258 part/views.py:755 msgid "Validate BOM" msgstr "" -#: part/templates/part/detail.html:370 +#: part/templates/part/detail.html:263 msgid "New BOM Item" msgstr "" -#: part/templates/part/detail.html:371 +#: part/templates/part/detail.html:264 msgid "Add BOM Item" msgstr "" -#: part/templates/part/detail.html:384 +#: part/templates/part/detail.html:277 msgid "Assemblies" msgstr "" -#: part/templates/part/detail.html:401 +#: part/templates/part/detail.html:294 msgid "Part Builds" msgstr "" -#: part/templates/part/detail.html:426 +#: part/templates/part/detail.html:319 msgid "Build Order Allocations" msgstr "" -#: part/templates/part/detail.html:436 +#: part/templates/part/detail.html:329 msgid "Part Suppliers" msgstr "" -#: part/templates/part/detail.html:463 +#: part/templates/part/detail.html:356 msgid "Part Manufacturers" msgstr "" -#: part/templates/part/detail.html:479 +#: part/templates/part/detail.html:372 msgid "Delete manufacturer parts" msgstr "" -#: part/templates/part/detail.html:660 +#: part/templates/part/detail.html:553 msgid "Delete selected BOM items?" msgstr "" -#: part/templates/part/detail.html:661 +#: part/templates/part/detail.html:554 msgid "All selected BOM items will be deleted" msgstr "" -#: part/templates/part/detail.html:712 +#: part/templates/part/detail.html:605 msgid "Create BOM Item" msgstr "" -#: part/templates/part/detail.html:764 +#: part/templates/part/detail.html:657 msgid "Related Part" msgstr "" -#: part/templates/part/detail.html:772 +#: part/templates/part/detail.html:665 msgid "Add Related Part" msgstr "" -#: part/templates/part/detail.html:869 +#: part/templates/part/detail.html:760 msgid "Add Test Result Template" msgstr "" -#: part/templates/part/detail.html:926 +#: part/templates/part/detail.html:817 msgid "Edit Part Notes" msgstr "" -#: part/templates/part/detail.html:1039 +#: part/templates/part/detail.html:930 #, python-format msgid "Purchase Unit Price - %(currency)s" msgstr "" -#: part/templates/part/detail.html:1051 +#: part/templates/part/detail.html:942 #, python-format msgid "Unit Price-Cost Difference - %(currency)s" msgstr "" -#: part/templates/part/detail.html:1063 +#: part/templates/part/detail.html:954 #, python-format msgid "Supplier Unit Cost - %(currency)s" msgstr "" -#: part/templates/part/detail.html:1152 +#: part/templates/part/detail.html:1043 #, python-format msgid "Unit Price - %(currency)s" msgstr "" @@ -4668,86 +4677,108 @@ msgstr "" msgid "Delete part" msgstr "" -#: part/templates/part/part_base.html:109 +#: part/templates/part/part_base.html:112 msgid "Part is a template part (variants can be made from this part)" msgstr "" -#: part/templates/part/part_base.html:113 +#: part/templates/part/part_base.html:116 msgid "Part can be assembled from other parts" msgstr "" -#: part/templates/part/part_base.html:117 +#: part/templates/part/part_base.html:120 msgid "Part can be used in assemblies" msgstr "" -#: part/templates/part/part_base.html:121 +#: part/templates/part/part_base.html:124 msgid "Part stock is tracked by serial number" msgstr "" -#: part/templates/part/part_base.html:125 +#: part/templates/part/part_base.html:128 msgid "Part can be purchased from external suppliers" msgstr "" -#: part/templates/part/part_base.html:129 +#: part/templates/part/part_base.html:132 msgid "Part can be sold to customers" msgstr "" -#: part/templates/part/part_base.html:135 -#: part/templates/part/part_base.html:143 +#: part/templates/part/part_base.html:138 +#: part/templates/part/part_base.html:146 msgid "Part is virtual (not a physical part)" msgstr "" -#: part/templates/part/part_base.html:136 +#: part/templates/part/part_base.html:139 #: templates/js/translated/company.js:505 #: templates/js/translated/company.js:762 #: templates/js/translated/model_renderers.js:175 -#: templates/js/translated/part.js:465 templates/js/translated/part.js:542 +#: templates/js/translated/part.js:472 templates/js/translated/part.js:549 msgid "Inactive" msgstr "" -#: part/templates/part/part_base.html:155 +#: part/templates/part/part_base.html:156 +#: part/templates/part/part_base.html:579 +msgid "Show Part Details" +msgstr "" + +#: part/templates/part/part_base.html:173 #, python-format msgid "This part is a variant of %(link)s" msgstr "" -#: part/templates/part/part_base.html:172 templates/js/translated/order.js:1546 +#: part/templates/part/part_base.html:190 templates/js/translated/order.js:1545 #: templates/js/translated/table_filters.js:188 msgid "In Stock" msgstr "" -#: part/templates/part/part_base.html:185 templates/js/translated/part.js:1054 +#: part/templates/part/part_base.html:203 templates/js/translated/part.js:1235 msgid "On Order" msgstr "" -#: part/templates/part/part_base.html:192 templates/InvenTree/index.html:178 +#: part/templates/part/part_base.html:210 templates/InvenTree/index.html:178 msgid "Required for Build Orders" msgstr "" -#: part/templates/part/part_base.html:199 +#: part/templates/part/part_base.html:217 msgid "Required for Sales Orders" msgstr "" -#: part/templates/part/part_base.html:206 +#: part/templates/part/part_base.html:224 msgid "Allocated to Orders" msgstr "" -#: part/templates/part/part_base.html:221 templates/js/translated/bom.js:566 +#: part/templates/part/part_base.html:239 templates/js/translated/bom.js:566 msgid "Can Build" msgstr "" -#: part/templates/part/part_base.html:227 templates/js/translated/part.js:885 -#: templates/js/translated/part.js:1058 +#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1066 +#: templates/js/translated/part.js:1239 msgid "Building" msgstr "" -#: part/templates/part/part_base.html:320 part/templates/part/prices.html:144 +#: part/templates/part/part_base.html:295 +msgid "Minimum stock level" +msgstr "" + +#: part/templates/part/part_base.html:324 +msgid "Latest Serial Number" +msgstr "" + +#: part/templates/part/part_base.html:328 +#: stock/templates/stock/item_base.html:159 +msgid "Search for serial number" +msgstr "" + +#: part/templates/part/part_base.html:449 part/templates/part/prices.html:144 msgid "Calculate" msgstr "" -#: part/templates/part/part_base.html:363 +#: part/templates/part/part_base.html:492 msgid "No matching images found" msgstr "" +#: part/templates/part/part_base.html:573 +msgid "Hide Part Details" +msgstr "" + #: part/templates/part/part_pricing.html:22 part/templates/part/prices.html:21 msgid "Supplier Pricing" msgstr "" @@ -4805,20 +4836,15 @@ msgstr "" msgid "No pricing information is available for this part." msgstr "" -#: part/templates/part/part_sidebar.html:8 -#: templates/js/translated/stock.js:1949 -msgid "Details" -msgstr "" - -#: part/templates/part/part_sidebar.html:13 +#: part/templates/part/part_sidebar.html:11 msgid "Variants" msgstr "" -#: part/templates/part/part_sidebar.html:27 +#: part/templates/part/part_sidebar.html:25 msgid "Used In" msgstr "" -#: part/templates/part/part_sidebar.html:43 +#: part/templates/part/part_sidebar.html:41 msgid "Test Templates" msgstr "" @@ -4934,8 +4960,8 @@ msgid "Set category for the following parts" msgstr "" #: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:476 -#: templates/js/translated/part.js:429 templates/js/translated/part.js:875 -#: templates/js/translated/part.js:1062 +#: templates/js/translated/part.js:436 templates/js/translated/part.js:1056 +#: templates/js/translated/part.js:1243 msgid "No Stock" msgstr "" @@ -5037,7 +5063,7 @@ msgstr "" msgid "Delete Part Parameter Template" msgstr "" -#: part/views.py:1489 templates/js/translated/part.js:310 +#: part/views.py:1489 templates/js/translated/part.js:313 msgid "Edit Part Category" msgstr "" @@ -5171,11 +5197,12 @@ msgid "Stock Item Test Report" msgstr "" #: report/templates/report/inventree_test_report_base.html:79 -#: stock/models.py:530 stock/templates/stock/item_base.html:238 +#: stock/models.py:520 stock/templates/stock/item_base.html:149 #: templates/js/translated/build.js:233 templates/js/translated/build.js:637 #: templates/js/translated/build.js:1013 #: templates/js/translated/model_renderers.js:95 -#: templates/js/translated/order.js:1288 templates/js/translated/order.js:1377 +#: templates/js/translated/order.js:1287 templates/js/translated/order.js:1376 +#: templates/js/translated/stock.js:410 msgid "Serial Number" msgstr "" @@ -5184,17 +5211,17 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:93 -#: stock/models.py:1855 +#: stock/models.py:1845 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:94 -#: stock/models.py:1861 +#: stock/models.py:1851 msgid "Result" msgstr "" #: report/templates/report/inventree_test_report_base.html:97 -#: templates/js/translated/order.js:685 templates/js/translated/stock.js:1917 +#: templates/js/translated/order.js:684 templates/js/translated/stock.js:1999 msgid "Date" msgstr "" @@ -5212,7 +5239,7 @@ msgid "Installed Items" msgstr "" #: report/templates/report/inventree_test_report_base.html:137 -#: templates/js/translated/stock.js:2177 +#: templates/js/translated/stock.js:2259 msgid "Serial" msgstr "" @@ -5220,9 +5247,9 @@ msgstr "" msgid "Quantity is required" msgstr "" -#: stock/forms.py:91 stock/forms.py:265 stock/models.py:587 -#: stock/templates/stock/item_base.html:382 -#: templates/js/translated/stock.js:1276 +#: stock/forms.py:91 stock/forms.py:265 stock/models.py:577 +#: stock/templates/stock/item_base.html:186 +#: templates/js/translated/stock.js:1358 msgid "Expiry Date" msgstr "" @@ -5270,241 +5297,241 @@ msgstr "" msgid "Confirm removal of installed stock items" msgstr "" -#: stock/models.py:60 stock/models.py:624 -#: stock/templates/stock/item_base.html:422 +#: stock/models.py:60 stock/models.py:614 +#: stock/templates/stock/item_base.html:417 msgid "Owner" msgstr "" -#: stock/models.py:61 stock/models.py:625 +#: stock/models.py:61 stock/models.py:615 msgid "Select Owner" msgstr "" -#: stock/models.py:352 +#: stock/models.py:342 msgid "StockItem with this serial number already exists" msgstr "" -#: stock/models.py:388 +#: stock/models.py:378 #, python-brace-format msgid "Part type ('{pf}') must be {pe}" msgstr "" -#: stock/models.py:398 stock/models.py:407 +#: stock/models.py:388 stock/models.py:397 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:399 +#: stock/models.py:389 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:421 +#: stock/models.py:411 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:427 +#: stock/models.py:417 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:434 +#: stock/models.py:424 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:476 +#: stock/models.py:466 msgid "Parent Stock Item" msgstr "" -#: stock/models.py:485 +#: stock/models.py:475 msgid "Base part" msgstr "" -#: stock/models.py:493 +#: stock/models.py:483 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:498 stock/templates/stock/location.html:12 +#: stock/models.py:488 stock/templates/stock/location.html:12 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" msgstr "" -#: stock/models.py:501 +#: stock/models.py:491 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:508 +#: stock/models.py:498 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:513 stock/templates/stock/item_base.html:271 +#: stock/models.py:503 stock/templates/stock/item_base.html:299 msgid "Installed In" msgstr "" -#: stock/models.py:516 +#: stock/models.py:506 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:532 +#: stock/models.py:522 msgid "Serial number for this item" msgstr "" -#: stock/models.py:546 +#: stock/models.py:536 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:550 +#: stock/models.py:540 msgid "Stock Quantity" msgstr "" -#: stock/models.py:559 +#: stock/models.py:549 msgid "Source Build" msgstr "" -#: stock/models.py:561 +#: stock/models.py:551 msgid "Build for this stock item" msgstr "" -#: stock/models.py:572 +#: stock/models.py:562 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:575 +#: stock/models.py:565 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:581 +#: stock/models.py:571 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:588 +#: stock/models.py:578 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:601 +#: stock/models.py:591 msgid "Delete on deplete" msgstr "" -#: stock/models.py:601 +#: stock/models.py:591 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:611 stock/templates/stock/item.html:111 +#: stock/models.py:601 stock/templates/stock/item.html:111 msgid "Stock Item Notes" msgstr "" -#: stock/models.py:620 +#: stock/models.py:610 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:630 +#: stock/models.py:620 msgid "Scheduled for deletion" msgstr "" -#: stock/models.py:631 +#: stock/models.py:621 msgid "This StockItem will be deleted by the background worker" msgstr "" -#: stock/models.py:1094 +#: stock/models.py:1084 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1100 +#: stock/models.py:1090 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1106 +#: stock/models.py:1096 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({n})" msgstr "" -#: stock/models.py:1109 +#: stock/models.py:1099 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1112 +#: stock/models.py:1102 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1119 +#: stock/models.py:1109 #, python-brace-format msgid "Serial numbers already exist: {exists}" msgstr "" -#: stock/models.py:1277 +#: stock/models.py:1267 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:1775 +#: stock/models.py:1765 msgid "Entry notes" msgstr "" -#: stock/models.py:1832 +#: stock/models.py:1822 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:1838 +#: stock/models.py:1828 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:1856 +#: stock/models.py:1846 msgid "Test name" msgstr "" -#: stock/models.py:1862 templates/js/translated/table_filters.js:266 +#: stock/models.py:1852 templates/js/translated/table_filters.js:266 msgid "Test result" msgstr "" -#: stock/models.py:1868 +#: stock/models.py:1858 msgid "Test output value" msgstr "" -#: stock/models.py:1875 +#: stock/models.py:1865 msgid "Test result attachment" msgstr "" -#: stock/models.py:1881 +#: stock/models.py:1871 msgid "Test notes" msgstr "" -#: stock/serializers.py:166 +#: stock/serializers.py:171 msgid "Purchase price of this stock item" msgstr "" -#: stock/serializers.py:173 +#: stock/serializers.py:178 msgid "Purchase currency of this stock item" msgstr "" -#: stock/serializers.py:287 +#: stock/serializers.py:292 msgid "Enter number of stock items to serialize" msgstr "" -#: stock/serializers.py:302 +#: stock/serializers.py:307 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "" -#: stock/serializers.py:308 +#: stock/serializers.py:313 msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:319 stock/serializers.py:686 +#: stock/serializers.py:324 stock/serializers.py:691 msgid "Destination stock location" msgstr "" -#: stock/serializers.py:326 +#: stock/serializers.py:331 msgid "Optional note field" msgstr "" -#: stock/serializers.py:339 +#: stock/serializers.py:344 msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:556 +#: stock/serializers.py:561 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:584 +#: stock/serializers.py:589 msgid "Stock transaction notes" msgstr "" -#: stock/serializers.py:594 +#: stock/serializers.py:599 msgid "A list of stock items must be provided" msgstr "" @@ -5629,125 +5656,131 @@ msgstr "" msgid "Install" msgstr "" -#: stock/templates/stock/item_base.html:106 +#: stock/templates/stock/item_base.html:108 msgid "Convert to variant" msgstr "" -#: stock/templates/stock/item_base.html:109 +#: stock/templates/stock/item_base.html:111 msgid "Duplicate stock item" msgstr "" -#: stock/templates/stock/item_base.html:111 +#: stock/templates/stock/item_base.html:113 msgid "Edit stock item" msgstr "" -#: stock/templates/stock/item_base.html:114 +#: stock/templates/stock/item_base.html:116 msgid "Delete stock item" msgstr "" -#: stock/templates/stock/item_base.html:136 -#: stock/templates/stock/item_base.html:386 -#: templates/js/translated/table_filters.js:247 -msgid "Expired" +#: stock/templates/stock/item_base.html:154 +msgid "previous page" msgstr "" -#: stock/templates/stock/item_base.html:146 -#: stock/templates/stock/item_base.html:388 -#: templates/js/translated/table_filters.js:253 -msgid "Stale" +#: stock/templates/stock/item_base.html:154 +msgid "Navigate to previous serial number" msgstr "" -#: stock/templates/stock/item_base.html:161 -msgid "You are not in the list of owners of this item. This stock item cannot be edited." +#: stock/templates/stock/item_base.html:163 +msgid "next page" msgstr "" -#: stock/templates/stock/item_base.html:168 -msgid "This stock item is in production and cannot be edited." -msgstr "" - -#: stock/templates/stock/item_base.html:169 -msgid "Edit the stock item from the build view." -msgstr "" - -#: stock/templates/stock/item_base.html:182 -msgid "This stock item has not passed all required tests" +#: stock/templates/stock/item_base.html:163 +msgid "Navigate to next serial number" msgstr "" #: stock/templates/stock/item_base.html:190 #, python-format -msgid "This stock item is allocated to Sales Order %(link)s (Quantity: %(qty)s)" -msgstr "" - -#: stock/templates/stock/item_base.html:198 -#, python-format -msgid "This stock item is allocated to Build %(link)s (Quantity: %(qty)s)" -msgstr "" - -#: stock/templates/stock/item_base.html:204 -msgid "This stock item is serialized - it has a unique serial number and the quantity cannot be adjusted." -msgstr "" - -#: stock/templates/stock/item_base.html:208 -msgid "This stock item cannot be deleted as it has child items" -msgstr "" - -#: stock/templates/stock/item_base.html:212 -msgid "This stock item will be automatically deleted when all stock is depleted." -msgstr "" - -#: stock/templates/stock/item_base.html:241 -msgid "previous page" -msgstr "" - -#: stock/templates/stock/item_base.html:247 -msgid "next page" -msgstr "" - -#: stock/templates/stock/item_base.html:290 -#: templates/js/translated/build.js:1035 -msgid "No location set" -msgstr "" - -#: stock/templates/stock/item_base.html:297 -msgid "Barcode Identifier" -msgstr "" - -#: stock/templates/stock/item_base.html:339 -msgid "Parent Item" -msgstr "" - -#: stock/templates/stock/item_base.html:357 -msgid "No manufacturer set" -msgstr "" - -#: stock/templates/stock/item_base.html:386 -#, python-format msgid "This StockItem expired on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:388 +#: stock/templates/stock/item_base.html:190 +#: templates/js/translated/table_filters.js:247 +msgid "Expired" +msgstr "" + +#: stock/templates/stock/item_base.html:192 #, python-format msgid "This StockItem expires on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:395 -#: templates/js/translated/stock.js:1289 +#: stock/templates/stock/item_base.html:192 +#: templates/js/translated/table_filters.js:253 +msgid "Stale" +msgstr "" + +#: stock/templates/stock/item_base.html:199 +#: templates/js/translated/stock.js:1371 msgid "Last Updated" msgstr "" -#: stock/templates/stock/item_base.html:400 +#: stock/templates/stock/item_base.html:204 msgid "Last Stocktake" msgstr "" -#: stock/templates/stock/item_base.html:404 +#: stock/templates/stock/item_base.html:208 msgid "No stocktake performed" msgstr "" -#: stock/templates/stock/item_base.html:415 +#: stock/templates/stock/item_base.html:226 +msgid "You are not in the list of owners of this item. This stock item cannot be edited." +msgstr "" + +#: stock/templates/stock/item_base.html:233 +msgid "This stock item is in production and cannot be edited." +msgstr "" + +#: stock/templates/stock/item_base.html:234 +msgid "Edit the stock item from the build view." +msgstr "" + +#: stock/templates/stock/item_base.html:247 +msgid "This stock item has not passed all required tests" +msgstr "" + +#: stock/templates/stock/item_base.html:255 +#, python-format +msgid "This stock item is allocated to Sales Order %(link)s (Quantity: %(qty)s)" +msgstr "" + +#: stock/templates/stock/item_base.html:263 +#, python-format +msgid "This stock item is allocated to Build %(link)s (Quantity: %(qty)s)" +msgstr "" + +#: stock/templates/stock/item_base.html:269 +msgid "This stock item is serialized - it has a unique serial number and the quantity cannot be adjusted." +msgstr "" + +#: stock/templates/stock/item_base.html:273 +msgid "This stock item cannot be deleted as it has child items" +msgstr "" + +#: stock/templates/stock/item_base.html:277 +msgid "This stock item will be automatically deleted when all stock is depleted." +msgstr "" + +#: stock/templates/stock/item_base.html:318 +#: templates/js/translated/build.js:1035 +msgid "No location set" +msgstr "" + +#: stock/templates/stock/item_base.html:325 +msgid "Barcode Identifier" +msgstr "" + +#: stock/templates/stock/item_base.html:367 +msgid "Parent Item" +msgstr "" + +#: stock/templates/stock/item_base.html:385 +msgid "No manufacturer set" +msgstr "" + +#: stock/templates/stock/item_base.html:410 msgid "Tests" msgstr "" -#: stock/templates/stock/item_base.html:505 +#: stock/templates/stock/item_base.html:500 msgid "Edit Stock Status" msgstr "" @@ -5825,30 +5858,35 @@ msgstr "" msgid "New Location" msgstr "" -#: stock/templates/stock/location.html:86 +#: stock/templates/stock/location.html:95 +#: stock/templates/stock/location.html:101 +msgid "Location Path" +msgstr "" + +#: stock/templates/stock/location.html:102 msgid "Top level stock location" msgstr "" -#: stock/templates/stock/location.html:95 +#: stock/templates/stock/location.html:115 msgid "You are not in the list of owners of this location. This stock location cannot be edited." msgstr "" -#: stock/templates/stock/location.html:113 -#: stock/templates/stock/location.html:160 +#: stock/templates/stock/location.html:128 +#: stock/templates/stock/location.html:175 #: stock/templates/stock/location_sidebar.html:5 msgid "Sublocations" msgstr "" -#: stock/templates/stock/location.html:127 templates/InvenTree/search.html:170 +#: stock/templates/stock/location.html:142 templates/InvenTree/search.html:170 #: templates/stats.html:97 users/models.py:42 msgid "Stock Locations" msgstr "" -#: stock/templates/stock/location.html:167 templates/stock_table.html:30 +#: stock/templates/stock/location.html:182 templates/stock_table.html:30 msgid "Printing Actions" msgstr "" -#: stock/templates/stock/location.html:171 templates/stock_table.html:34 +#: stock/templates/stock/location.html:186 templates/stock_table.html:34 msgid "Print labels" msgstr "" @@ -5942,7 +5980,7 @@ msgstr "" msgid "Uninstall Stock Items" msgstr "" -#: stock/views.py:760 templates/js/translated/stock.js:648 +#: stock/views.py:760 templates/js/translated/stock.js:730 msgid "Confirm stock adjustment" msgstr "" @@ -5950,7 +5988,7 @@ msgstr "" msgid "Uninstalled stock items" msgstr "" -#: stock/views.py:793 templates/js/translated/stock.js:318 +#: stock/views.py:793 templates/js/translated/stock.js:319 msgid "Edit Stock Item" msgstr "" @@ -5962,7 +6000,7 @@ msgstr "" msgid "Create new Stock Item" msgstr "" -#: stock/views.py:1186 templates/js/translated/stock.js:298 +#: stock/views.py:1186 templates/js/translated/stock.js:299 msgid "Duplicate Stock Item" msgstr "" @@ -6868,7 +6906,7 @@ msgstr "" msgid "Unlink" msgstr "" -#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:600 +#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:682 msgid "Remove stock item" msgstr "" @@ -6963,7 +7001,7 @@ msgid "View BOM" msgstr "" #: templates/js/translated/bom.js:608 templates/js/translated/build.js:1183 -#: templates/js/translated/order.js:1320 +#: templates/js/translated/order.js:1319 msgid "Actions" msgstr "" @@ -7055,7 +7093,7 @@ msgstr "" msgid "No build order allocations found" msgstr "" -#: templates/js/translated/build.js:424 templates/js/translated/order.js:1194 +#: templates/js/translated/build.js:424 templates/js/translated/order.js:1193 msgid "Location not specified" msgstr "" @@ -7064,12 +7102,12 @@ msgid "No active build outputs found" msgstr "" #: templates/js/translated/build.js:1052 templates/js/translated/build.js:1760 -#: templates/js/translated/order.js:1327 +#: templates/js/translated/order.js:1326 msgid "Edit stock allocation" msgstr "" #: templates/js/translated/build.js:1054 templates/js/translated/build.js:1761 -#: templates/js/translated/order.js:1328 +#: templates/js/translated/order.js:1327 msgid "Delete stock allocation" msgstr "" @@ -7090,11 +7128,11 @@ msgid "Quantity Per" msgstr "" #: templates/js/translated/build.js:1134 templates/js/translated/build.js:1360 -#: templates/js/translated/build.js:1756 templates/js/translated/order.js:1557 +#: templates/js/translated/build.js:1756 templates/js/translated/order.js:1556 msgid "Allocated" msgstr "" -#: templates/js/translated/build.js:1190 templates/js/translated/order.js:1611 +#: templates/js/translated/build.js:1190 templates/js/translated/order.js:1610 msgid "Build stock" msgstr "" @@ -7102,7 +7140,7 @@ msgstr "" msgid "Order stock" msgstr "" -#: templates/js/translated/build.js:1197 templates/js/translated/order.js:1604 +#: templates/js/translated/build.js:1197 templates/js/translated/order.js:1603 msgid "Allocate stock" msgstr "" @@ -7143,9 +7181,9 @@ msgstr "" msgid "No builds matching query" msgstr "" -#: templates/js/translated/build.js:1593 templates/js/translated/part.js:966 -#: templates/js/translated/part.js:1377 templates/js/translated/stock.js:1094 -#: templates/js/translated/stock.js:1871 +#: templates/js/translated/build.js:1593 templates/js/translated/part.js:1147 +#: templates/js/translated/part.js:1558 templates/js/translated/stock.js:1176 +#: templates/js/translated/stock.js:1953 msgid "Select" msgstr "" @@ -7153,7 +7191,7 @@ msgstr "" msgid "Build order is overdue" msgstr "" -#: templates/js/translated/build.js:1674 templates/js/translated/stock.js:2090 +#: templates/js/translated/build.js:1674 templates/js/translated/stock.js:2172 msgid "No user information" msgstr "" @@ -7197,10 +7235,6 @@ msgstr "" msgid "Delete Supplier Part" msgstr "" -#: templates/js/translated/company.js:265 -msgid "Edit Company" -msgstr "" - #: templates/js/translated/company.js:286 msgid "Add new Company" msgstr "" @@ -7230,34 +7264,34 @@ msgid "No manufacturer parts found" msgstr "" #: templates/js/translated/company.js:497 -#: templates/js/translated/company.js:754 templates/js/translated/part.js:449 -#: templates/js/translated/part.js:534 +#: templates/js/translated/company.js:754 templates/js/translated/part.js:456 +#: templates/js/translated/part.js:541 msgid "Template part" msgstr "" #: templates/js/translated/company.js:501 -#: templates/js/translated/company.js:758 templates/js/translated/part.js:453 -#: templates/js/translated/part.js:538 +#: templates/js/translated/company.js:758 templates/js/translated/part.js:460 +#: templates/js/translated/part.js:545 msgid "Assembled part" msgstr "" -#: templates/js/translated/company.js:628 templates/js/translated/part.js:626 +#: templates/js/translated/company.js:628 templates/js/translated/part.js:633 msgid "No parameters found" msgstr "" -#: templates/js/translated/company.js:665 templates/js/translated/part.js:668 +#: templates/js/translated/company.js:665 templates/js/translated/part.js:675 msgid "Edit parameter" msgstr "" -#: templates/js/translated/company.js:666 templates/js/translated/part.js:669 +#: templates/js/translated/company.js:666 templates/js/translated/part.js:676 msgid "Delete parameter" msgstr "" -#: templates/js/translated/company.js:685 templates/js/translated/part.js:686 +#: templates/js/translated/company.js:685 templates/js/translated/part.js:693 msgid "Edit Parameter" msgstr "" -#: templates/js/translated/company.js:696 templates/js/translated/part.js:698 +#: templates/js/translated/company.js:696 templates/js/translated/part.js:705 msgid "Delete Parameter" msgstr "" @@ -7346,7 +7380,7 @@ msgid "NO" msgstr "" #: templates/js/translated/label.js:29 templates/js/translated/report.js:118 -#: templates/js/translated/stock.js:624 +#: templates/js/translated/stock.js:706 msgid "Select Stock Items" msgstr "" @@ -7502,11 +7536,11 @@ msgstr "" msgid "Export Order" msgstr "" -#: templates/js/translated/order.js:211 templates/js/translated/stock.js:423 +#: templates/js/translated/order.js:211 templates/js/translated/stock.js:505 msgid "Format" msgstr "" -#: templates/js/translated/order.js:212 templates/js/translated/stock.js:424 +#: templates/js/translated/order.js:212 templates/js/translated/stock.js:506 msgid "Select file format" msgstr "" @@ -7522,7 +7556,7 @@ msgstr "" msgid "Quantity to receive" msgstr "" -#: templates/js/translated/order.js:360 templates/js/translated/stock.js:1673 +#: templates/js/translated/order.js:360 templates/js/translated/stock.js:1755 msgid "Stock Status" msgstr "" @@ -7546,321 +7580,321 @@ msgstr "" msgid "Receive Purchase Order Items" msgstr "" -#: templates/js/translated/order.js:627 +#: templates/js/translated/order.js:627 templates/js/translated/part.js:746 msgid "No purchase orders found" msgstr "" -#: templates/js/translated/order.js:652 templates/js/translated/order.js:1063 +#: templates/js/translated/order.js:659 templates/js/translated/order.js:1062 msgid "Order is overdue" msgstr "" -#: templates/js/translated/order.js:772 templates/js/translated/order.js:1646 +#: templates/js/translated/order.js:771 templates/js/translated/order.js:1645 msgid "Edit Line Item" msgstr "" -#: templates/js/translated/order.js:784 templates/js/translated/order.js:1657 +#: templates/js/translated/order.js:783 templates/js/translated/order.js:1656 msgid "Delete Line Item" msgstr "" -#: templates/js/translated/order.js:823 +#: templates/js/translated/order.js:822 msgid "No line items found" msgstr "" -#: templates/js/translated/order.js:850 templates/js/translated/order.js:1467 +#: templates/js/translated/order.js:849 templates/js/translated/order.js:1466 msgid "Total" msgstr "" -#: templates/js/translated/order.js:904 templates/js/translated/order.js:1492 -#: templates/js/translated/part.js:1594 templates/js/translated/part.js:1805 +#: templates/js/translated/order.js:903 templates/js/translated/order.js:1491 +#: templates/js/translated/part.js:1775 templates/js/translated/part.js:1986 msgid "Unit Price" msgstr "" -#: templates/js/translated/order.js:919 templates/js/translated/order.js:1508 +#: templates/js/translated/order.js:918 templates/js/translated/order.js:1507 msgid "Total Price" msgstr "" -#: templates/js/translated/order.js:997 templates/js/translated/order.js:1617 +#: templates/js/translated/order.js:996 templates/js/translated/order.js:1616 msgid "Edit line item" msgstr "" -#: templates/js/translated/order.js:998 +#: templates/js/translated/order.js:997 msgid "Delete line item" msgstr "" -#: templates/js/translated/order.js:1002 +#: templates/js/translated/order.js:1001 templates/js/translated/part.js:878 msgid "Receive line item" msgstr "" -#: templates/js/translated/order.js:1039 +#: templates/js/translated/order.js:1038 msgid "No sales orders found" msgstr "" -#: templates/js/translated/order.js:1077 +#: templates/js/translated/order.js:1076 msgid "Invalid Customer" msgstr "" -#: templates/js/translated/order.js:1155 +#: templates/js/translated/order.js:1154 msgid "No sales order allocations found" msgstr "" -#: templates/js/translated/order.js:1248 +#: templates/js/translated/order.js:1247 msgid "Edit Stock Allocation" msgstr "" -#: templates/js/translated/order.js:1265 +#: templates/js/translated/order.js:1264 msgid "Confirm Delete Operation" msgstr "" -#: templates/js/translated/order.js:1266 +#: templates/js/translated/order.js:1265 msgid "Delete Stock Allocation" msgstr "" -#: templates/js/translated/order.js:1308 +#: templates/js/translated/order.js:1307 msgid "Stock location not specified" msgstr "" -#: templates/js/translated/order.js:1557 +#: templates/js/translated/order.js:1556 msgid "Fulfilled" msgstr "" -#: templates/js/translated/order.js:1601 +#: templates/js/translated/order.js:1600 msgid "Allocate serial numbers" msgstr "" -#: templates/js/translated/order.js:1607 +#: templates/js/translated/order.js:1606 msgid "Purchase stock" msgstr "" -#: templates/js/translated/order.js:1614 templates/js/translated/order.js:1793 +#: templates/js/translated/order.js:1613 templates/js/translated/order.js:1792 msgid "Calculate price" msgstr "" -#: templates/js/translated/order.js:1618 +#: templates/js/translated/order.js:1617 msgid "Delete line item " msgstr "" -#: templates/js/translated/order.js:1741 +#: templates/js/translated/order.js:1740 msgid "Allocate Stock Item" msgstr "" -#: templates/js/translated/order.js:1801 +#: templates/js/translated/order.js:1800 msgid "Update Unit Price" msgstr "" -#: templates/js/translated/order.js:1815 +#: templates/js/translated/order.js:1814 msgid "No matching line items" msgstr "" -#: templates/js/translated/part.js:51 +#: templates/js/translated/part.js:52 msgid "Part Attributes" msgstr "" -#: templates/js/translated/part.js:55 +#: templates/js/translated/part.js:56 msgid "Part Creation Options" msgstr "" -#: templates/js/translated/part.js:59 +#: templates/js/translated/part.js:60 msgid "Part Duplication Options" msgstr "" -#: templates/js/translated/part.js:63 +#: templates/js/translated/part.js:64 msgid "Supplier Options" msgstr "" -#: templates/js/translated/part.js:77 +#: templates/js/translated/part.js:78 msgid "Add Part Category" msgstr "" -#: templates/js/translated/part.js:166 +#: templates/js/translated/part.js:162 msgid "Create Initial Stock" msgstr "" -#: templates/js/translated/part.js:167 +#: templates/js/translated/part.js:163 msgid "Create an initial stock item for this part" msgstr "" -#: templates/js/translated/part.js:174 +#: templates/js/translated/part.js:170 msgid "Initial Stock Quantity" msgstr "" -#: templates/js/translated/part.js:175 +#: templates/js/translated/part.js:171 msgid "Specify initial stock quantity for this part" msgstr "" -#: templates/js/translated/part.js:182 +#: templates/js/translated/part.js:178 msgid "Select destination stock location" msgstr "" -#: templates/js/translated/part.js:193 +#: templates/js/translated/part.js:196 msgid "Copy Category Parameters" msgstr "" -#: templates/js/translated/part.js:194 +#: templates/js/translated/part.js:197 msgid "Copy parameter templates from selected part category" msgstr "" -#: templates/js/translated/part.js:202 +#: templates/js/translated/part.js:205 msgid "Add Supplier Data" msgstr "" -#: templates/js/translated/part.js:203 +#: templates/js/translated/part.js:206 msgid "Create initial supplier data for this part" msgstr "" -#: templates/js/translated/part.js:259 +#: templates/js/translated/part.js:262 msgid "Copy Image" msgstr "" -#: templates/js/translated/part.js:260 +#: templates/js/translated/part.js:263 msgid "Copy image from original part" msgstr "" -#: templates/js/translated/part.js:268 +#: templates/js/translated/part.js:271 msgid "Copy bill of materials from original part" msgstr "" -#: templates/js/translated/part.js:275 +#: templates/js/translated/part.js:278 msgid "Copy Parameters" msgstr "" -#: templates/js/translated/part.js:276 +#: templates/js/translated/part.js:279 msgid "Copy parameter data from original part" msgstr "" -#: templates/js/translated/part.js:289 +#: templates/js/translated/part.js:292 msgid "Parent part category" msgstr "" -#: templates/js/translated/part.js:333 +#: templates/js/translated/part.js:336 msgid "Edit Part" msgstr "" -#: templates/js/translated/part.js:335 +#: templates/js/translated/part.js:338 msgid "Part edited" msgstr "" -#: templates/js/translated/part.js:403 +#: templates/js/translated/part.js:410 msgid "You are subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:405 +#: templates/js/translated/part.js:412 msgid "You have subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:410 +#: templates/js/translated/part.js:417 msgid "Subscribe to notifications for this item" msgstr "" -#: templates/js/translated/part.js:412 +#: templates/js/translated/part.js:419 msgid "You have unsubscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:441 templates/js/translated/part.js:526 +#: templates/js/translated/part.js:448 templates/js/translated/part.js:533 msgid "Trackable part" msgstr "" -#: templates/js/translated/part.js:445 templates/js/translated/part.js:530 +#: templates/js/translated/part.js:452 templates/js/translated/part.js:537 msgid "Virtual part" msgstr "" -#: templates/js/translated/part.js:457 +#: templates/js/translated/part.js:464 msgid "Subscribed part" msgstr "" -#: templates/js/translated/part.js:461 +#: templates/js/translated/part.js:468 msgid "Salable part" msgstr "" -#: templates/js/translated/part.js:576 +#: templates/js/translated/part.js:583 msgid "No variants found" msgstr "" -#: templates/js/translated/part.js:765 +#: templates/js/translated/part.js:946 msgid "Delete part relationship" msgstr "" -#: templates/js/translated/part.js:789 +#: templates/js/translated/part.js:970 msgid "Delete Part Relationship" msgstr "" -#: templates/js/translated/part.js:856 templates/js/translated/part.js:1116 +#: templates/js/translated/part.js:1037 templates/js/translated/part.js:1297 msgid "No parts found" msgstr "" -#: templates/js/translated/part.js:1026 +#: templates/js/translated/part.js:1207 msgid "No category" msgstr "" -#: templates/js/translated/part.js:1049 +#: templates/js/translated/part.js:1230 #: templates/js/translated/table_filters.js:381 msgid "Low stock" msgstr "" -#: templates/js/translated/part.js:1140 templates/js/translated/part.js:1312 -#: templates/js/translated/stock.js:1832 +#: templates/js/translated/part.js:1321 templates/js/translated/part.js:1493 +#: templates/js/translated/stock.js:1914 msgid "Display as list" msgstr "" -#: templates/js/translated/part.js:1156 +#: templates/js/translated/part.js:1337 msgid "Display as grid" msgstr "" -#: templates/js/translated/part.js:1331 templates/js/translated/stock.js:1851 +#: templates/js/translated/part.js:1512 templates/js/translated/stock.js:1933 msgid "Display as tree" msgstr "" -#: templates/js/translated/part.js:1395 +#: templates/js/translated/part.js:1576 msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:1409 templates/js/translated/stock.js:1895 +#: templates/js/translated/part.js:1590 templates/js/translated/stock.js:1977 msgid "Path" msgstr "" -#: templates/js/translated/part.js:1453 +#: templates/js/translated/part.js:1634 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:1504 templates/js/translated/stock.js:816 +#: templates/js/translated/part.js:1685 templates/js/translated/stock.js:898 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:1505 templates/js/translated/stock.js:817 +#: templates/js/translated/part.js:1686 templates/js/translated/stock.js:899 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:1511 +#: templates/js/translated/part.js:1692 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:1533 +#: templates/js/translated/part.js:1714 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:1547 +#: templates/js/translated/part.js:1728 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:1572 +#: templates/js/translated/part.js:1753 #, python-brace-format msgid "No ${human_name} information found" msgstr "" -#: templates/js/translated/part.js:1627 +#: templates/js/translated/part.js:1808 #, python-brace-format msgid "Edit ${human_name}" msgstr "" -#: templates/js/translated/part.js:1628 +#: templates/js/translated/part.js:1809 #, python-brace-format msgid "Delete ${human_name}" msgstr "" -#: templates/js/translated/part.js:1729 +#: templates/js/translated/part.js:1910 msgid "Single Price" msgstr "" -#: templates/js/translated/part.js:1748 +#: templates/js/translated/part.js:1929 msgid "Single Price Difference" msgstr "" @@ -7930,276 +7964,300 @@ msgstr "" msgid "Sales Order(s) must be selected before printing report" msgstr "" -#: templates/js/translated/stock.js:70 +#: templates/js/translated/stock.js:71 msgid "Serialize Stock Item" msgstr "" -#: templates/js/translated/stock.js:88 templates/js/translated/stock.js:167 +#: templates/js/translated/stock.js:89 templates/js/translated/stock.js:168 msgid "Next available serial number" msgstr "" -#: templates/js/translated/stock.js:90 templates/js/translated/stock.js:169 +#: templates/js/translated/stock.js:91 templates/js/translated/stock.js:170 msgid "Latest serial number" msgstr "" -#: templates/js/translated/stock.js:104 +#: templates/js/translated/stock.js:105 msgid "Parent stock location" msgstr "" -#: templates/js/translated/stock.js:140 +#: templates/js/translated/stock.js:141 msgid "New Stock Location" msgstr "" -#: templates/js/translated/stock.js:180 +#: templates/js/translated/stock.js:181 msgid "This part cannot be serialized" msgstr "" -#: templates/js/translated/stock.js:219 +#: templates/js/translated/stock.js:220 msgid "Enter initial quantity for this stock item" msgstr "" -#: templates/js/translated/stock.js:225 +#: templates/js/translated/stock.js:226 msgid "Enter serial numbers for new stock (or leave blank)" msgstr "" -#: templates/js/translated/stock.js:368 +#: templates/js/translated/stock.js:369 msgid "Created new stock item" msgstr "" -#: templates/js/translated/stock.js:381 +#: templates/js/translated/stock.js:382 msgid "Created multiple stock items" msgstr "" -#: templates/js/translated/stock.js:420 +#: templates/js/translated/stock.js:407 +msgid "Find Serial Number" +msgstr "" + +#: templates/js/translated/stock.js:411 templates/js/translated/stock.js:412 +msgid "Enter serial number" +msgstr "" + +#: templates/js/translated/stock.js:428 +msgid "Enter a serial number" +msgstr "" + +#: templates/js/translated/stock.js:448 +msgid "No matching serial number" +msgstr "" + +#: templates/js/translated/stock.js:457 +msgid "More than one matching result found" +msgstr "" + +#: templates/js/translated/stock.js:502 msgid "Export Stock" msgstr "" -#: templates/js/translated/stock.js:431 +#: templates/js/translated/stock.js:513 msgid "Include Sublocations" msgstr "" -#: templates/js/translated/stock.js:432 +#: templates/js/translated/stock.js:514 msgid "Include stock items in sublocations" msgstr "" -#: templates/js/translated/stock.js:474 +#: templates/js/translated/stock.js:556 msgid "Transfer Stock" msgstr "" -#: templates/js/translated/stock.js:475 +#: templates/js/translated/stock.js:557 msgid "Move" msgstr "" -#: templates/js/translated/stock.js:481 +#: templates/js/translated/stock.js:563 msgid "Count Stock" msgstr "" -#: templates/js/translated/stock.js:482 +#: templates/js/translated/stock.js:564 msgid "Count" msgstr "" -#: templates/js/translated/stock.js:486 +#: templates/js/translated/stock.js:568 msgid "Remove Stock" msgstr "" -#: templates/js/translated/stock.js:487 +#: templates/js/translated/stock.js:569 msgid "Take" msgstr "" -#: templates/js/translated/stock.js:491 +#: templates/js/translated/stock.js:573 msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:492 users/models.py:200 +#: templates/js/translated/stock.js:574 users/models.py:200 msgid "Add" msgstr "" -#: templates/js/translated/stock.js:496 templates/stock_table.html:56 +#: templates/js/translated/stock.js:578 templates/stock_table.html:56 msgid "Delete Stock" msgstr "" -#: templates/js/translated/stock.js:585 +#: templates/js/translated/stock.js:667 msgid "Quantity cannot be adjusted for serialized stock" msgstr "" -#: templates/js/translated/stock.js:585 +#: templates/js/translated/stock.js:667 msgid "Specify stock quantity" msgstr "" -#: templates/js/translated/stock.js:625 +#: templates/js/translated/stock.js:707 msgid "You must select at least one available stock item" msgstr "" -#: templates/js/translated/stock.js:783 +#: templates/js/translated/stock.js:865 msgid "PASS" msgstr "" -#: templates/js/translated/stock.js:785 +#: templates/js/translated/stock.js:867 msgid "FAIL" msgstr "" -#: templates/js/translated/stock.js:790 +#: templates/js/translated/stock.js:872 msgid "NO RESULT" msgstr "" -#: templates/js/translated/stock.js:812 +#: templates/js/translated/stock.js:894 msgid "Add test result" msgstr "" -#: templates/js/translated/stock.js:838 +#: templates/js/translated/stock.js:920 msgid "No test results found" msgstr "" -#: templates/js/translated/stock.js:895 +#: templates/js/translated/stock.js:977 msgid "Test Date" msgstr "" -#: templates/js/translated/stock.js:1002 +#: templates/js/translated/stock.js:1084 msgid "In production" msgstr "" -#: templates/js/translated/stock.js:1006 +#: templates/js/translated/stock.js:1088 msgid "Installed in Stock Item" msgstr "" -#: templates/js/translated/stock.js:1010 +#: templates/js/translated/stock.js:1092 msgid "Shipped to customer" msgstr "" -#: templates/js/translated/stock.js:1014 +#: templates/js/translated/stock.js:1096 msgid "Assigned to Sales Order" msgstr "" -#: templates/js/translated/stock.js:1020 +#: templates/js/translated/stock.js:1102 msgid "No stock location set" msgstr "" -#: templates/js/translated/stock.js:1178 +#: templates/js/translated/stock.js:1260 msgid "Stock item is in production" msgstr "" -#: templates/js/translated/stock.js:1183 +#: templates/js/translated/stock.js:1265 msgid "Stock item assigned to sales order" msgstr "" -#: templates/js/translated/stock.js:1186 +#: templates/js/translated/stock.js:1268 msgid "Stock item assigned to customer" msgstr "" -#: templates/js/translated/stock.js:1190 +#: templates/js/translated/stock.js:1272 msgid "Stock item has expired" msgstr "" -#: templates/js/translated/stock.js:1192 +#: templates/js/translated/stock.js:1274 msgid "Stock item will expire soon" msgstr "" -#: templates/js/translated/stock.js:1196 +#: templates/js/translated/stock.js:1278 msgid "Stock item has been allocated" msgstr "" -#: templates/js/translated/stock.js:1200 +#: templates/js/translated/stock.js:1282 msgid "Stock item has been installed in another item" msgstr "" -#: templates/js/translated/stock.js:1207 +#: templates/js/translated/stock.js:1289 msgid "Stock item has been rejected" msgstr "" -#: templates/js/translated/stock.js:1209 +#: templates/js/translated/stock.js:1291 msgid "Stock item is lost" msgstr "" -#: templates/js/translated/stock.js:1211 +#: templates/js/translated/stock.js:1293 msgid "Stock item is destroyed" msgstr "" -#: templates/js/translated/stock.js:1215 +#: templates/js/translated/stock.js:1297 #: templates/js/translated/table_filters.js:183 msgid "Depleted" msgstr "" -#: templates/js/translated/stock.js:1265 +#: templates/js/translated/stock.js:1347 msgid "Stocktake" msgstr "" -#: templates/js/translated/stock.js:1338 +#: templates/js/translated/stock.js:1420 msgid "Supplier part not specified" msgstr "" -#: templates/js/translated/stock.js:1376 +#: templates/js/translated/stock.js:1458 msgid "No stock items matching query" msgstr "" -#: templates/js/translated/stock.js:1397 templates/js/translated/stock.js:1445 +#: templates/js/translated/stock.js:1479 templates/js/translated/stock.js:1527 msgid "items" msgstr "" -#: templates/js/translated/stock.js:1485 +#: templates/js/translated/stock.js:1567 msgid "batches" msgstr "" -#: templates/js/translated/stock.js:1512 +#: templates/js/translated/stock.js:1594 msgid "locations" msgstr "" -#: templates/js/translated/stock.js:1514 +#: templates/js/translated/stock.js:1596 msgid "Undefined location" msgstr "" -#: templates/js/translated/stock.js:1688 +#: templates/js/translated/stock.js:1770 msgid "Set Stock Status" msgstr "" -#: templates/js/translated/stock.js:1702 +#: templates/js/translated/stock.js:1784 msgid "Select Status Code" msgstr "" -#: templates/js/translated/stock.js:1703 +#: templates/js/translated/stock.js:1785 msgid "Status code must be selected" msgstr "" -#: templates/js/translated/stock.js:1927 +#: templates/js/translated/stock.js:2009 msgid "Invalid date" msgstr "" -#: templates/js/translated/stock.js:1974 +#: templates/js/translated/stock.js:2031 +msgid "Details" +msgstr "" + +#: templates/js/translated/stock.js:2056 msgid "Location no longer exists" msgstr "" -#: templates/js/translated/stock.js:1993 +#: templates/js/translated/stock.js:2075 msgid "Purchase order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2012 +#: templates/js/translated/stock.js:2094 msgid "Customer no longer exists" msgstr "" -#: templates/js/translated/stock.js:2030 +#: templates/js/translated/stock.js:2112 msgid "Stock item no longer exists" msgstr "" -#: templates/js/translated/stock.js:2053 +#: templates/js/translated/stock.js:2135 msgid "Added" msgstr "" -#: templates/js/translated/stock.js:2061 +#: templates/js/translated/stock.js:2143 msgid "Removed" msgstr "" -#: templates/js/translated/stock.js:2102 +#: templates/js/translated/stock.js:2184 msgid "Edit tracking entry" msgstr "" -#: templates/js/translated/stock.js:2103 +#: templates/js/translated/stock.js:2185 msgid "Delete tracking entry" msgstr "" -#: templates/js/translated/stock.js:2154 +#: templates/js/translated/stock.js:2236 msgid "No installed items" msgstr "" -#: templates/js/translated/stock.js:2205 +#: templates/js/translated/stock.js:2287 msgid "Uninstall Stock Item" msgstr "" diff --git a/InvenTree/locale/ko/LC_MESSAGES/django.po b/InvenTree/locale/ko/LC_MESSAGES/django.po index d9767918dd..226941ff9f 100644 --- a/InvenTree/locale/ko/LC_MESSAGES/django.po +++ b/InvenTree/locale/ko/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-11-30 21:49+0000\n" -"PO-Revision-Date: 2021-11-30 21:51\n" +"POT-Creation-Date: 2021-12-03 10:37+0000\n" +"PO-Revision-Date: 2021-12-03 11:25\n" "Last-Translator: \n" "Language-Team: Korean\n" "Language: ko_KR\n" @@ -114,129 +114,130 @@ msgstr "" msgid "Number of unique serial number ({s}) must match quantity ({q})" msgstr "" -#: InvenTree/models.py:114 +#: InvenTree/models.py:120 msgid "Missing file" msgstr "" -#: InvenTree/models.py:115 +#: InvenTree/models.py:121 msgid "Missing external link" msgstr "" -#: InvenTree/models.py:126 stock/models.py:1874 +#: InvenTree/models.py:132 stock/models.py:1864 #: templates/js/translated/attachment.js:117 msgid "Attachment" msgstr "" -#: InvenTree/models.py:127 +#: InvenTree/models.py:133 msgid "Select file to attach" msgstr "" -#: InvenTree/models.py:133 company/models.py:131 company/models.py:348 +#: InvenTree/models.py:139 company/models.py:131 company/models.py:348 #: company/models.py:564 order/models.py:163 part/models.py:797 #: report/templates/report/inventree_build_order_base.html:165 #: templates/js/translated/company.js:537 -#: templates/js/translated/company.js:826 templates/js/translated/part.js:1077 +#: templates/js/translated/company.js:826 templates/js/translated/part.js:1258 msgid "Link" msgstr "" -#: InvenTree/models.py:134 build/models.py:330 part/models.py:798 -#: stock/models.py:540 +#: InvenTree/models.py:140 build/models.py:330 part/models.py:798 +#: stock/models.py:530 msgid "Link to external URL" msgstr "" -#: InvenTree/models.py:137 templates/js/translated/attachment.js:161 +#: InvenTree/models.py:143 templates/js/translated/attachment.js:161 msgid "Comment" msgstr "" -#: InvenTree/models.py:137 +#: InvenTree/models.py:143 msgid "File comment" msgstr "" -#: InvenTree/models.py:143 InvenTree/models.py:144 common/models.py:1185 +#: InvenTree/models.py:149 InvenTree/models.py:150 common/models.py:1185 #: common/models.py:1186 part/models.py:2205 part/models.py:2225 #: report/templates/report/inventree_test_report_base.html:96 -#: templates/js/translated/stock.js:2084 +#: templates/js/translated/stock.js:2166 msgid "User" msgstr "" -#: InvenTree/models.py:147 +#: InvenTree/models.py:153 msgid "upload date" msgstr "" -#: InvenTree/models.py:170 +#: InvenTree/models.py:176 msgid "Filename must not be empty" msgstr "" -#: InvenTree/models.py:193 +#: InvenTree/models.py:199 msgid "Invalid attachment directory" msgstr "" -#: InvenTree/models.py:203 +#: InvenTree/models.py:209 #, python-brace-format msgid "Filename contains illegal character '{c}'" msgstr "" -#: InvenTree/models.py:206 +#: InvenTree/models.py:212 msgid "Filename missing extension" msgstr "" -#: InvenTree/models.py:213 +#: InvenTree/models.py:219 msgid "Attachment with this filename already exists" msgstr "" -#: InvenTree/models.py:220 +#: InvenTree/models.py:226 msgid "Error renaming file" msgstr "" -#: InvenTree/models.py:255 +#: InvenTree/models.py:261 msgid "Invalid choice" msgstr "" -#: InvenTree/models.py:271 InvenTree/models.py:272 company/models.py:415 +#: InvenTree/models.py:277 InvenTree/models.py:278 company/models.py:415 #: label/models.py:112 part/models.py:741 part/models.py:2389 -#: part/templates/part/detail.html:25 report/models.py:181 -#: templates/InvenTree/settings/settings.html:259 -#: templates/js/translated/company.js:638 templates/js/translated/part.js:499 -#: templates/js/translated/part.js:636 templates/js/translated/part.js:1384 -#: templates/js/translated/stock.js:1877 +#: report/models.py:181 templates/InvenTree/settings/settings.html:259 +#: templates/js/translated/company.js:638 templates/js/translated/part.js:506 +#: templates/js/translated/part.js:643 templates/js/translated/part.js:1565 +#: templates/js/translated/stock.js:1959 msgid "Name" msgstr "" -#: InvenTree/models.py:278 build/models.py:207 +#: InvenTree/models.py:284 build/models.py:207 #: build/templates/build/detail.html:25 company/models.py:354 -#: company/models.py:570 company/templates/company/manufacturer_part.html:80 -#: company/templates/company/supplier_part.html:81 label/models.py:119 -#: order/models.py:161 part/models.py:764 part/templates/part/detail.html:30 +#: company/models.py:570 company/templates/company/company_base.html:68 +#: company/templates/company/manufacturer_part.html:76 +#: company/templates/company/supplier_part.html:73 label/models.py:119 +#: order/models.py:161 part/models.py:764 part/templates/part/category.html:70 +#: part/templates/part/part_base.html:163 #: part/templates/part/set_category.html:14 report/models.py:194 #: report/models.py:553 report/models.py:592 #: report/templates/report/inventree_build_order_base.html:118 -#: stock/templates/stock/location.html:108 templates/js/translated/bom.js:215 +#: stock/templates/stock/location.html:89 templates/js/translated/bom.js:215 #: templates/js/translated/bom.js:428 templates/js/translated/build.js:1621 #: templates/js/translated/company.js:345 #: templates/js/translated/company.js:548 -#: templates/js/translated/company.js:837 templates/js/translated/order.js:673 -#: templates/js/translated/order.js:855 templates/js/translated/order.js:1091 -#: templates/js/translated/part.js:558 templates/js/translated/part.js:752 -#: templates/js/translated/part.js:837 templates/js/translated/part.js:1007 -#: templates/js/translated/part.js:1403 templates/js/translated/part.js:1472 -#: templates/js/translated/stock.js:1151 templates/js/translated/stock.js:1889 -#: templates/js/translated/stock.js:1934 +#: templates/js/translated/company.js:837 templates/js/translated/order.js:680 +#: templates/js/translated/order.js:854 templates/js/translated/order.js:1090 +#: templates/js/translated/part.js:565 templates/js/translated/part.js:933 +#: templates/js/translated/part.js:1018 templates/js/translated/part.js:1188 +#: templates/js/translated/part.js:1584 templates/js/translated/part.js:1653 +#: templates/js/translated/stock.js:1233 templates/js/translated/stock.js:1971 +#: templates/js/translated/stock.js:2016 msgid "Description" msgstr "" -#: InvenTree/models.py:279 +#: InvenTree/models.py:285 msgid "Description (optional)" msgstr "" -#: InvenTree/models.py:287 +#: InvenTree/models.py:293 msgid "parent" msgstr "" -#: InvenTree/serializers.py:62 part/models.py:2674 +#: InvenTree/serializers.py:65 part/models.py:2674 msgid "Must be a valid number" msgstr "" -#: InvenTree/serializers.py:285 +#: InvenTree/serializers.py:299 msgid "Filename" msgstr "" @@ -361,7 +362,7 @@ msgid "Returned" msgstr "" #: InvenTree/status_codes.py:143 -#: order/templates/order/sales_order_base.html:147 +#: order/templates/order/sales_order_base.html:148 msgid "Shipped" msgstr "" @@ -566,7 +567,7 @@ msgid "Barcode associated with StockItem" msgstr "" #: build/forms.py:36 build/models.py:1283 -#: build/templates/build/build_base.html:124 +#: build/templates/build/build_base.html:132 #: build/templates/build/detail.html:35 common/models.py:1225 #: company/forms.py:42 company/templates/company/supplier_part.html:251 #: order/forms.py:102 order/models.py:729 order/models.py:991 @@ -574,26 +575,27 @@ msgstr "" #: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:223 #: part/forms.py:239 part/forms.py:255 part/models.py:2576 #: part/templates/part/bom_upload/match_parts.html:31 -#: part/templates/part/detail.html:1076 part/templates/part/detail.html:1162 +#: part/templates/part/detail.html:967 part/templates/part/detail.html:1053 #: part/templates/part/part_pricing.html:16 #: report/templates/report/inventree_build_order_base.html:114 #: report/templates/report/inventree_po_report.html:91 #: report/templates/report/inventree_so_report.html:91 #: report/templates/report/inventree_test_report_base.html:81 #: report/templates/report/inventree_test_report_base.html:139 -#: stock/forms.py:156 stock/serializers.py:286 -#: stock/templates/stock/item_base.html:256 +#: stock/forms.py:156 stock/serializers.py:291 +#: stock/templates/stock/item_base.html:174 #: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:443 #: templates/js/translated/build.js:235 templates/js/translated/build.js:435 #: templates/js/translated/build.js:629 templates/js/translated/build.js:639 #: templates/js/translated/build.js:1015 templates/js/translated/build.js:1362 #: templates/js/translated/model_renderers.js:99 -#: templates/js/translated/order.js:892 templates/js/translated/order.js:1205 -#: templates/js/translated/order.js:1283 templates/js/translated/order.js:1290 -#: templates/js/translated/order.js:1379 templates/js/translated/order.js:1479 -#: templates/js/translated/part.js:1615 templates/js/translated/part.js:1738 -#: templates/js/translated/part.js:1816 templates/js/translated/stock.js:377 -#: templates/js/translated/stock.js:2069 templates/js/translated/stock.js:2171 +#: templates/js/translated/order.js:891 templates/js/translated/order.js:1204 +#: templates/js/translated/order.js:1282 templates/js/translated/order.js:1289 +#: templates/js/translated/order.js:1378 templates/js/translated/order.js:1478 +#: templates/js/translated/part.js:843 templates/js/translated/part.js:1796 +#: templates/js/translated/part.js:1919 templates/js/translated/part.js:1997 +#: templates/js/translated/stock.js:378 templates/js/translated/stock.js:2151 +#: templates/js/translated/stock.js:2253 msgid "Quantity" msgstr "" @@ -602,8 +604,8 @@ msgid "Enter quantity for build output" msgstr "" #: build/forms.py:41 order/forms.py:96 stock/forms.py:95 -#: stock/serializers.py:307 templates/js/translated/stock.js:224 -#: templates/js/translated/stock.js:378 +#: stock/serializers.py:312 templates/js/translated/stock.js:225 +#: templates/js/translated/stock.js:379 msgid "Serial Numbers" msgstr "" @@ -646,7 +648,7 @@ msgstr "" #: build/templates/build/index.html:8 build/templates/build/index.html:12 #: order/templates/order/sales_order_detail.html:42 #: order/templates/order/so_sidebar.html:7 -#: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:221 +#: part/templates/part/part_sidebar.html:20 templates/InvenTree/index.html:221 #: templates/InvenTree/search.html:145 #: templates/InvenTree/settings/sidebar.html:42 users/models.py:44 msgid "Build Orders" @@ -662,7 +664,7 @@ msgstr "" #: report/templates/report/inventree_po_report.html:92 #: report/templates/report/inventree_so_report.html:92 #: templates/js/translated/bom.js:435 templates/js/translated/build.js:1119 -#: templates/js/translated/order.js:886 templates/js/translated/order.js:1473 +#: templates/js/translated/order.js:885 templates/js/translated/order.js:1472 msgid "Reference" msgstr "" @@ -670,7 +672,7 @@ msgstr "" msgid "Brief description of the build" msgstr "" -#: build/models.py:219 build/templates/build/build_base.html:156 +#: build/models.py:219 build/templates/build/build_base.html:164 #: build/templates/build/detail.html:88 msgid "Parent Build" msgstr "" @@ -679,7 +681,7 @@ msgstr "" msgid "BuildOrder to which this build is allocated" msgstr "" -#: build/models.py:225 build/templates/build/build_base.html:119 +#: build/models.py:225 build/templates/build/build_base.html:77 #: build/templates/build/detail.html:30 company/models.py:705 #: order/models.py:789 order/models.py:860 #: order/templates/order/order_wizard/select_parts.html:32 part/models.py:357 @@ -700,10 +702,10 @@ msgstr "" #: templates/js/translated/build.js:988 templates/js/translated/build.js:1359 #: templates/js/translated/build.js:1626 templates/js/translated/company.js:489 #: templates/js/translated/company.js:746 templates/js/translated/order.js:426 -#: templates/js/translated/order.js:840 templates/js/translated/order.js:1457 -#: templates/js/translated/part.js:737 templates/js/translated/part.js:818 -#: templates/js/translated/part.js:985 templates/js/translated/stock.js:508 -#: templates/js/translated/stock.js:1108 templates/js/translated/stock.js:2159 +#: templates/js/translated/order.js:839 templates/js/translated/order.js:1456 +#: templates/js/translated/part.js:918 templates/js/translated/part.js:999 +#: templates/js/translated/part.js:1166 templates/js/translated/stock.js:590 +#: templates/js/translated/stock.js:1190 templates/js/translated/stock.js:2241 msgid "Part" msgstr "" @@ -751,7 +753,7 @@ msgstr "" msgid "Number of stock items which have been completed" msgstr "" -#: build/models.py:277 part/templates/part/part_base.html:216 +#: build/models.py:277 part/templates/part/part_base.html:234 msgid "Build Status" msgstr "" @@ -759,7 +761,7 @@ msgstr "" msgid "Build status code" msgstr "" -#: build/models.py:285 stock/models.py:544 +#: build/models.py:285 stock/models.py:534 msgid "Batch Code" msgstr "" @@ -768,7 +770,7 @@ msgid "Batch code for this build output" msgstr "" #: build/models.py:292 order/models.py:165 part/models.py:936 -#: part/templates/part/detail.html:86 templates/js/translated/order.js:1104 +#: part/templates/part/part_base.html:313 templates/js/translated/order.js:1103 msgid "Creation Date" msgstr "" @@ -797,12 +799,12 @@ msgstr "" msgid "User who issued this build order" msgstr "" -#: build/models.py:323 build/templates/build/build_base.html:177 +#: build/models.py:323 build/templates/build/build_base.html:185 #: build/templates/build/detail.html:116 order/models.py:179 -#: order/templates/order/order_base.html:154 -#: order/templates/order/sales_order_base.html:161 part/models.py:940 +#: order/templates/order/order_base.html:158 +#: order/templates/order/sales_order_base.html:162 part/models.py:940 #: report/templates/report/inventree_build_order_base.html:159 -#: templates/js/translated/build.js:1680 templates/js/translated/order.js:700 +#: templates/js/translated/build.js:1680 templates/js/translated/order.js:699 msgid "Responsible" msgstr "" @@ -811,10 +813,10 @@ msgid "User responsible for this build order" msgstr "" #: build/models.py:329 build/templates/build/detail.html:102 -#: company/templates/company/manufacturer_part.html:87 -#: company/templates/company/supplier_part.html:88 -#: part/templates/part/detail.html:80 stock/models.py:538 -#: stock/templates/stock/item_base.html:346 +#: company/templates/company/manufacturer_part.html:102 +#: company/templates/company/supplier_part.html:126 +#: part/templates/part/part_base.html:354 stock/models.py:528 +#: stock/templates/stock/item_base.html:374 msgid "External Link" msgstr "" @@ -824,15 +826,15 @@ msgstr "" #: order/models.py:183 order/models.py:738 #: order/templates/order/po_sidebar.html:11 #: order/templates/order/so_sidebar.html:11 part/models.py:925 -#: part/templates/part/detail.html:223 part/templates/part/part_sidebar.html:52 +#: part/templates/part/detail.html:116 part/templates/part/part_sidebar.html:50 #: report/templates/report/inventree_build_order_base.html:173 -#: stock/forms.py:154 stock/forms.py:204 stock/forms.py:238 stock/models.py:610 -#: stock/models.py:1774 stock/models.py:1880 stock/serializers.py:325 -#: stock/serializers.py:583 stock/templates/stock/stock_sidebar.html:21 +#: stock/forms.py:154 stock/forms.py:204 stock/forms.py:238 stock/models.py:600 +#: stock/models.py:1764 stock/models.py:1870 stock/serializers.py:330 +#: stock/serializers.py:588 stock/templates/stock/stock_sidebar.html:21 #: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:599 -#: templates/js/translated/company.js:842 templates/js/translated/order.js:985 -#: templates/js/translated/order.js:1583 templates/js/translated/stock.js:891 -#: templates/js/translated/stock.js:1370 +#: templates/js/translated/company.js:842 templates/js/translated/order.js:984 +#: templates/js/translated/order.js:1582 templates/js/translated/stock.js:973 +#: templates/js/translated/stock.js:1452 msgid "Notes" msgstr "" @@ -877,7 +879,7 @@ msgstr "" msgid "Selected stock item not found in BOM" msgstr "" -#: build/models.py:1253 stock/templates/stock/item_base.html:318 +#: build/models.py:1253 stock/templates/stock/item_base.html:346 #: templates/InvenTree/search.html:143 templates/js/translated/build.js:1599 #: templates/navbar.html:33 msgid "Build" @@ -890,11 +892,11 @@ msgstr "" #: build/models.py:1270 build/serializers.py:328 #: stock/templates/stock/item_base.html:8 #: stock/templates/stock/item_base.html:16 -#: stock/templates/stock/item_base.html:340 +#: stock/templates/stock/item_base.html:368 #: templates/js/translated/build.js:408 templates/js/translated/build.js:413 #: templates/js/translated/build.js:1361 templates/js/translated/build.js:1742 -#: templates/js/translated/order.js:1178 templates/js/translated/order.js:1183 -#: templates/js/translated/stock.js:2020 +#: templates/js/translated/order.js:1177 templates/js/translated/order.js:1182 +#: templates/js/translated/stock.js:2102 msgid "Stock Item" msgstr "" @@ -934,16 +936,16 @@ msgstr "" msgid "This build output is not fully allocated" msgstr "" -#: build/serializers.py:190 order/serializers.py:219 order/serializers.py:287 -#: stock/forms.py:236 stock/serializers.py:318 stock/serializers.py:685 -#: stock/templates/stock/item_base.html:286 +#: build/serializers.py:190 order/serializers.py:228 order/serializers.py:296 +#: stock/forms.py:236 stock/serializers.py:323 stock/serializers.py:690 +#: stock/templates/stock/item_base.html:314 #: templates/js/translated/barcode.js:384 #: templates/js/translated/barcode.js:557 templates/js/translated/build.js:420 #: templates/js/translated/build.js:1027 templates/js/translated/order.js:348 -#: templates/js/translated/order.js:1190 templates/js/translated/order.js:1298 -#: templates/js/translated/order.js:1304 templates/js/translated/part.js:181 -#: templates/js/translated/stock.js:510 templates/js/translated/stock.js:1251 -#: templates/js/translated/stock.js:1961 +#: templates/js/translated/order.js:1189 templates/js/translated/order.js:1297 +#: templates/js/translated/order.js:1303 templates/js/translated/part.js:177 +#: templates/js/translated/stock.js:592 templates/js/translated/stock.js:1333 +#: templates/js/translated/stock.js:2043 msgid "Location" msgstr "" @@ -951,13 +953,13 @@ msgstr "" msgid "Location for completed build outputs" msgstr "" -#: build/serializers.py:197 build/templates/build/build_base.html:129 +#: build/serializers.py:197 build/templates/build/build_base.html:137 #: build/templates/build/detail.html:63 order/models.py:572 -#: order/serializers.py:240 stock/templates/stock/item_base.html:409 +#: order/serializers.py:249 stock/templates/stock/item_base.html:180 #: templates/js/translated/barcode.js:140 templates/js/translated/build.js:1655 -#: templates/js/translated/order.js:431 templates/js/translated/order.js:677 -#: templates/js/translated/order.js:1096 templates/js/translated/stock.js:1226 -#: templates/js/translated/stock.js:2038 templates/js/translated/stock.js:2187 +#: templates/js/translated/order.js:431 templates/js/translated/order.js:1095 +#: templates/js/translated/stock.js:1308 templates/js/translated/stock.js:2120 +#: templates/js/translated/stock.js:2269 msgid "Status" msgstr "" @@ -986,8 +988,8 @@ msgstr "" msgid "Item must be in stock" msgstr "" -#: build/serializers.py:348 order/models.py:316 order/serializers.py:233 -#: stock/models.py:381 stock/models.py:1103 stock/serializers.py:298 +#: build/serializers.py:348 order/models.py:316 order/serializers.py:242 +#: stock/models.py:371 stock/models.py:1093 stock/serializers.py:303 msgid "Quantity must be greater than zero" msgstr "" @@ -1031,7 +1033,7 @@ msgid "Edit Build" msgstr "" #: build/templates/build/build_base.html:56 -#: build/templates/build/build_base.html:207 build/views.py:56 +#: build/templates/build/build_base.html:215 build/views.py:56 msgid "Cancel Build" msgstr "" @@ -1041,93 +1043,95 @@ msgstr "" #: build/templates/build/build_base.html:64 #: build/templates/build/build_base.html:65 -#: build/templates/build/build_base.html:223 +#: build/templates/build/build_base.html:231 msgid "Complete Build" msgstr "" -#: build/templates/build/build_base.html:79 +#: build/templates/build/build_base.html:82 +msgid "Build Description" +msgstr "" + +#: build/templates/build/build_base.html:91 #, python-format msgid "This Build Order is allocated to Sales Order %(link)s" msgstr "" -#: build/templates/build/build_base.html:86 +#: build/templates/build/build_base.html:98 #, python-format msgid "This Build Order is a child of Build Order %(link)s" msgstr "" -#: build/templates/build/build_base.html:93 +#: build/templates/build/build_base.html:105 msgid "Build Order is ready to mark as completed" msgstr "" -#: build/templates/build/build_base.html:98 +#: build/templates/build/build_base.html:110 msgid "Build Order cannot be completed as outstanding outputs remain" msgstr "" -#: build/templates/build/build_base.html:103 +#: build/templates/build/build_base.html:115 msgid "Required build quantity has not yet been completed" msgstr "" -#: build/templates/build/build_base.html:108 +#: build/templates/build/build_base.html:120 msgid "Stock has not been fully allocated to this Build Order" msgstr "" -#: build/templates/build/build_base.html:138 +#: build/templates/build/build_base.html:146 #: build/templates/build/detail.html:132 -#: order/templates/order/order_base.html:140 -#: order/templates/order/sales_order_base.html:140 +#: order/templates/order/order_base.html:144 +#: order/templates/order/sales_order_base.html:141 #: report/templates/report/inventree_build_order_base.html:126 -#: templates/js/translated/build.js:1692 templates/js/translated/order.js:690 -#: templates/js/translated/order.js:1109 +#: templates/js/translated/build.js:1692 templates/js/translated/order.js:689 +#: templates/js/translated/order.js:1108 msgid "Target Date" msgstr "" -#: build/templates/build/build_base.html:143 +#: build/templates/build/build_base.html:151 #, python-format msgid "This build was due on %(target)s" msgstr "" -#: build/templates/build/build_base.html:143 -#: build/templates/build/build_base.html:188 -#: order/templates/order/order_base.html:81 -#: order/templates/order/order_base.html:102 -#: order/templates/order/sales_order_base.html:78 -#: order/templates/order/sales_order_base.html:107 +#: build/templates/build/build_base.html:151 +#: build/templates/build/build_base.html:196 +#: order/templates/order/order_base.html:98 +#: order/templates/order/sales_order_base.html:93 #: templates/js/translated/table_filters.js:294 #: templates/js/translated/table_filters.js:322 #: templates/js/translated/table_filters.js:339 msgid "Overdue" msgstr "" -#: build/templates/build/build_base.html:150 +#: build/templates/build/build_base.html:158 #: build/templates/build/detail.html:68 build/templates/build/detail.html:143 #: templates/js/translated/build.js:1641 #: templates/js/translated/table_filters.js:304 msgid "Completed" msgstr "" -#: build/templates/build/build_base.html:163 +#: build/templates/build/build_base.html:171 #: build/templates/build/detail.html:95 order/models.py:857 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: order/templates/order/sales_order_ship.html:25 #: report/templates/report/inventree_build_order_base.html:136 #: report/templates/report/inventree_so_report.html:77 -#: stock/templates/stock/item_base.html:280 -#: templates/js/translated/order.js:1051 +#: stock/templates/stock/item_base.html:308 +#: templates/js/translated/order.js:1050 msgid "Sales Order" msgstr "" -#: build/templates/build/build_base.html:170 +#: build/templates/build/build_base.html:178 #: build/templates/build/detail.html:109 #: report/templates/report/inventree_build_order_base.html:153 msgid "Issued By" msgstr "" -#: build/templates/build/build_base.html:215 +#: build/templates/build/build_base.html:223 msgid "Incomplete Outputs" msgstr "" -#: build/templates/build/build_base.html:216 +#: build/templates/build/build_base.html:224 msgid "Build Order cannot be completed as incomplete build outputs remain" msgstr "" @@ -1188,7 +1192,7 @@ msgid "Stock can be taken from any available location." msgstr "" #: build/templates/build/detail.html:50 order/models.py:811 stock/forms.py:150 -#: templates/js/translated/order.js:432 templates/js/translated/order.js:974 +#: templates/js/translated/order.js:432 templates/js/translated/order.js:973 msgid "Destination" msgstr "" @@ -1201,16 +1205,16 @@ msgid "Allocated Parts" msgstr "" #: build/templates/build/detail.html:81 -#: stock/templates/stock/item_base.html:304 -#: templates/js/translated/stock.js:1240 templates/js/translated/stock.js:2194 +#: stock/templates/stock/item_base.html:332 +#: templates/js/translated/stock.js:1322 templates/js/translated/stock.js:2276 #: templates/js/translated/table_filters.js:151 #: templates/js/translated/table_filters.js:233 msgid "Batch" msgstr "" #: build/templates/build/detail.html:127 -#: order/templates/order/order_base.html:127 -#: order/templates/order/sales_order_base.html:134 +#: order/templates/order/order_base.html:131 +#: order/templates/order/sales_order_base.html:135 #: templates/js/translated/build.js:1663 msgid "Created" msgstr "" @@ -1254,7 +1258,7 @@ msgstr "" #: build/templates/build/detail.html:185 #: company/templates/company/detail.html:38 #: company/templates/company/detail.html:85 order/views.py:509 -#: part/templates/part/category.html:166 +#: part/templates/part/category.html:173 msgid "Order Parts" msgstr "" @@ -1306,8 +1310,8 @@ msgstr "" #: order/templates/order/po_sidebar.html:9 #: order/templates/order/purchase_order_detail.html:60 #: order/templates/order/sales_order_detail.html:52 -#: order/templates/order/so_sidebar.html:9 part/templates/part/detail.html:300 -#: part/templates/part/part_sidebar.html:50 stock/templates/stock/item.html:95 +#: order/templates/order/so_sidebar.html:9 part/templates/part/detail.html:193 +#: part/templates/part/part_sidebar.html:48 stock/templates/stock/item.html:95 #: stock/templates/stock/stock_sidebar.html:19 msgid "Attachments" msgstr "" @@ -1323,7 +1327,7 @@ msgstr "" #: order/templates/order/purchase_order_detail.html:108 #: order/templates/order/sales_order_detail.html:72 #: order/templates/order/sales_order_detail.html:99 -#: part/templates/part/detail.html:227 stock/templates/stock/item.html:115 +#: part/templates/part/detail.html:120 stock/templates/stock/item.html:115 #: stock/templates/stock/item.html:205 msgid "Edit Notes" msgstr "" @@ -1336,7 +1340,7 @@ msgstr "" msgid "All untracked stock items have been allocated" msgstr "" -#: build/templates/build/index.html:18 part/templates/part/detail.html:407 +#: build/templates/build/index.html:18 part/templates/part/detail.html:300 msgid "New Build Order" msgstr "" @@ -1380,7 +1384,7 @@ msgstr "" msgid "Maximum output quantity is " msgstr "" -#: build/views.py:122 stock/serializers.py:356 stock/views.py:1290 +#: build/views.py:122 stock/serializers.py:361 stock/views.py:1290 msgid "Serial numbers already exist" msgstr "" @@ -1675,7 +1679,7 @@ msgid "Parts are trackable by default" msgstr "" #: common/models.py:745 part/models.py:920 -#: part/templates/part/part_base.html:144 +#: part/templates/part/part_base.html:147 #: templates/js/translated/table_filters.js:42 msgid "Virtual" msgstr "" @@ -2142,7 +2146,7 @@ msgstr "" #: common/models.py:1233 company/serializers.py:264 #: company/templates/company/supplier_part.html:256 -#: templates/js/translated/part.js:1620 +#: templates/js/translated/part.js:852 templates/js/translated/part.js:1801 msgid "Price" msgstr "" @@ -2206,7 +2210,7 @@ msgstr "" msgid "Description of the company" msgstr "" -#: company/models.py:112 company/templates/company/company_base.html:70 +#: company/models.py:112 company/templates/company/company_base.html:97 #: templates/js/translated/company.js:349 msgid "Website" msgstr "" @@ -2215,7 +2219,7 @@ msgstr "" msgid "Company website URL" msgstr "" -#: company/models.py:117 company/templates/company/company_base.html:88 +#: company/models.py:117 company/templates/company/company_base.html:115 msgid "Address" msgstr "" @@ -2231,7 +2235,7 @@ msgstr "" msgid "Contact phone number" msgstr "" -#: company/models.py:125 company/templates/company/company_base.html:102 +#: company/models.py:125 company/templates/company/company_base.html:129 #: templates/InvenTree/settings/user.html:47 msgid "Email" msgstr "" @@ -2240,7 +2244,7 @@ msgstr "" msgid "Contact email address" msgstr "" -#: company/models.py:128 company/templates/company/company_base.html:109 +#: company/models.py:128 company/templates/company/company_base.html:136 msgid "Contact" msgstr "" @@ -2281,7 +2285,7 @@ msgid "Does this company manufacture parts?" msgstr "" #: company/models.py:152 company/serializers.py:270 -#: company/templates/company/company_base.html:76 stock/serializers.py:172 +#: company/templates/company/company_base.html:103 stock/serializers.py:177 msgid "Currency" msgstr "" @@ -2289,8 +2293,8 @@ msgstr "" msgid "Default currency used for this company" msgstr "" -#: company/models.py:320 company/models.py:535 stock/models.py:484 -#: stock/templates/stock/item_base.html:224 +#: company/models.py:320 company/models.py:535 stock/models.py:474 +#: stock/templates/stock/item_base.html:135 msgid "Base Part" msgstr "" @@ -2298,29 +2302,29 @@ msgstr "" msgid "Select part" msgstr "" -#: company/models.py:335 company/templates/company/company_base.html:116 -#: company/templates/company/manufacturer_part.html:93 -#: company/templates/company/supplier_part.html:104 -#: stock/templates/stock/item_base.html:353 +#: company/models.py:335 company/templates/company/company_base.html:73 +#: company/templates/company/manufacturer_part.html:91 +#: company/templates/company/supplier_part.html:97 +#: stock/templates/stock/item_base.html:381 #: templates/js/translated/company.js:333 #: templates/js/translated/company.js:514 -#: templates/js/translated/company.js:797 templates/js/translated/part.js:229 +#: templates/js/translated/company.js:797 templates/js/translated/part.js:232 msgid "Manufacturer" msgstr "" -#: company/models.py:336 templates/js/translated/part.js:230 +#: company/models.py:336 templates/js/translated/part.js:233 msgid "Select manufacturer" msgstr "" -#: company/models.py:342 company/templates/company/manufacturer_part.html:97 -#: company/templates/company/supplier_part.html:112 +#: company/models.py:342 company/templates/company/manufacturer_part.html:96 +#: company/templates/company/supplier_part.html:105 #: templates/js/translated/company.js:530 -#: templates/js/translated/company.js:815 templates/js/translated/order.js:874 -#: templates/js/translated/part.js:240 +#: templates/js/translated/company.js:815 templates/js/translated/order.js:873 +#: templates/js/translated/part.js:243 templates/js/translated/part.js:832 msgid "MPN" msgstr "" -#: company/models.py:343 templates/js/translated/part.js:241 +#: company/models.py:343 templates/js/translated/part.js:244 msgid "Manufacturer Part Number" msgstr "" @@ -2335,7 +2339,7 @@ msgstr "" #: company/models.py:409 company/models.py:558 #: company/templates/company/manufacturer_part.html:6 #: company/templates/company/manufacturer_part.html:23 -#: stock/templates/stock/item_base.html:363 +#: stock/templates/stock/item_base.html:391 msgid "Manufacturer Part" msgstr "" @@ -2345,8 +2349,8 @@ msgstr "" #: company/models.py:422 #: report/templates/report/inventree_test_report_base.html:95 -#: stock/models.py:1867 templates/js/translated/company.js:644 -#: templates/js/translated/part.js:645 templates/js/translated/stock.js:878 +#: stock/models.py:1857 templates/js/translated/company.js:644 +#: templates/js/translated/part.js:652 templates/js/translated/stock.js:960 msgid "Value" msgstr "" @@ -2355,9 +2359,9 @@ msgid "Parameter value" msgstr "" #: company/models.py:429 part/models.py:882 part/models.py:2397 -#: part/templates/part/detail.html:59 +#: part/templates/part/part_base.html:288 #: templates/InvenTree/settings/settings.html:264 -#: templates/js/translated/company.js:650 templates/js/translated/part.js:651 +#: templates/js/translated/company.js:650 templates/js/translated/part.js:658 msgid "Units" msgstr "" @@ -2369,28 +2373,28 @@ msgstr "" msgid "Linked manufacturer part must reference the same base part" msgstr "" -#: company/models.py:545 company/templates/company/company_base.html:121 -#: company/templates/company/supplier_part.html:94 order/models.py:263 -#: order/templates/order/order_base.html:108 +#: company/models.py:545 company/templates/company/company_base.html:78 +#: company/templates/company/supplier_part.html:87 order/models.py:263 +#: order/templates/order/order_base.html:112 #: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:219 -#: part/bom.py:247 stock/templates/stock/item_base.html:370 +#: part/bom.py:247 stock/templates/stock/item_base.html:398 #: templates/js/translated/company.js:337 -#: templates/js/translated/company.js:771 templates/js/translated/order.js:660 -#: templates/js/translated/part.js:210 +#: templates/js/translated/company.js:771 templates/js/translated/order.js:667 +#: templates/js/translated/part.js:213 templates/js/translated/part.js:800 msgid "Supplier" msgstr "" -#: company/models.py:546 templates/js/translated/part.js:211 +#: company/models.py:546 templates/js/translated/part.js:214 msgid "Select supplier" msgstr "" -#: company/models.py:551 company/templates/company/supplier_part.html:98 -#: part/bom.py:220 part/bom.py:248 templates/js/translated/order.js:861 -#: templates/js/translated/part.js:221 +#: company/models.py:551 company/templates/company/supplier_part.html:91 +#: part/bom.py:220 part/bom.py:248 templates/js/translated/order.js:860 +#: templates/js/translated/part.js:224 templates/js/translated/part.js:818 msgid "SKU" msgstr "" -#: company/models.py:552 templates/js/translated/part.js:222 +#: company/models.py:552 templates/js/translated/part.js:225 msgid "Supplier stock keeping unit" msgstr "" @@ -2406,7 +2410,7 @@ msgstr "" msgid "Supplier part description" msgstr "" -#: company/models.py:576 company/templates/company/supplier_part.html:126 +#: company/models.py:576 company/templates/company/supplier_part.html:119 #: part/models.py:2588 report/templates/report/inventree_po_report.html:93 #: report/templates/report/inventree_so_report.html:93 msgid "Note" @@ -2420,9 +2424,9 @@ msgstr "" msgid "Minimum charge (e.g. stocking fee)" msgstr "" -#: company/models.py:582 company/templates/company/supplier_part.html:119 -#: stock/models.py:507 stock/templates/stock/item_base.html:311 -#: templates/js/translated/company.js:847 templates/js/translated/stock.js:1366 +#: company/models.py:582 company/templates/company/supplier_part.html:112 +#: stock/models.py:497 stock/templates/stock/item_base.html:339 +#: templates/js/translated/company.js:847 templates/js/translated/stock.js:1448 msgid "Packaging" msgstr "" @@ -2457,43 +2461,56 @@ msgstr "" msgid "Create Purchase Order" msgstr "" -#: company/templates/company/company_base.html:27 +#: company/templates/company/company_base.html:26 +msgid "Company actions" +msgstr "" + +#: company/templates/company/company_base.html:31 msgid "Edit company information" msgstr "" #: company/templates/company/company_base.html:32 -#: company/templates/company/company_base.html:148 +#: templates/js/translated/company.js:265 +msgid "Edit Company" +msgstr "" + +#: company/templates/company/company_base.html:36 +msgid "Delete company" +msgstr "" + +#: company/templates/company/company_base.html:37 +#: company/templates/company/company_base.html:159 msgid "Delete Company" msgstr "" -#: company/templates/company/company_base.html:48 +#: company/templates/company/company_base.html:53 #: part/templates/part/part_thumb.html:12 msgid "Upload new image" msgstr "" -#: company/templates/company/company_base.html:51 +#: company/templates/company/company_base.html:56 #: part/templates/part/part_thumb.html:14 msgid "Download image from URL" msgstr "" -#: company/templates/company/company_base.html:81 -msgid "Uses default currency" -msgstr "" - -#: company/templates/company/company_base.html:95 -msgid "Phone" -msgstr "" - -#: company/templates/company/company_base.html:126 order/models.py:567 -#: order/templates/order/sales_order_base.html:114 stock/models.py:525 -#: stock/models.py:526 stock/templates/stock/item_base.html:263 -#: templates/js/translated/company.js:329 templates/js/translated/order.js:1073 -#: templates/js/translated/stock.js:2002 +#: company/templates/company/company_base.html:83 order/models.py:567 +#: order/templates/order/sales_order_base.html:115 stock/models.py:515 +#: stock/models.py:516 stock/templates/stock/item_base.html:291 +#: templates/js/translated/company.js:329 templates/js/translated/order.js:1072 +#: templates/js/translated/stock.js:2084 msgid "Customer" msgstr "" -#: company/templates/company/company_base.html:194 -#: part/templates/part/part_base.html:342 +#: company/templates/company/company_base.html:108 +msgid "Uses default currency" +msgstr "" + +#: company/templates/company/company_base.html:122 +msgid "Phone" +msgstr "" + +#: company/templates/company/company_base.html:205 +#: part/templates/part/part_base.html:471 msgid "Upload Image" msgstr "" @@ -2509,23 +2526,23 @@ msgid "Create new supplier part" msgstr "" #: company/templates/company/detail.html:20 -#: company/templates/company/manufacturer_part.html:112 -#: part/templates/part/detail.html:440 +#: company/templates/company/manufacturer_part.html:118 +#: part/templates/part/detail.html:333 msgid "New Supplier Part" msgstr "" #: company/templates/company/detail.html:32 #: company/templates/company/detail.html:79 -#: company/templates/company/manufacturer_part.html:121 -#: company/templates/company/manufacturer_part.html:150 -#: part/templates/part/category.html:160 part/templates/part/detail.html:449 -#: part/templates/part/detail.html:477 +#: company/templates/company/manufacturer_part.html:127 +#: company/templates/company/manufacturer_part.html:156 +#: part/templates/part/category.html:167 part/templates/part/detail.html:342 +#: part/templates/part/detail.html:370 msgid "Options" msgstr "" #: company/templates/company/detail.html:37 #: company/templates/company/detail.html:84 -#: part/templates/part/category.html:166 +#: part/templates/part/category.html:173 msgid "Order parts" msgstr "" @@ -2547,7 +2564,7 @@ msgstr "" msgid "Create new manufacturer part" msgstr "" -#: company/templates/company/detail.html:67 part/templates/part/detail.html:467 +#: company/templates/company/detail.html:67 part/templates/part/detail.html:360 msgid "New Manufacturer Part" msgstr "" @@ -2561,7 +2578,7 @@ msgstr "" #: order/templates/order/order_base.html:13 #: order/templates/order/purchase_orders.html:8 #: order/templates/order/purchase_orders.html:12 -#: part/templates/part/detail.html:171 part/templates/part/part_sidebar.html:35 +#: part/templates/part/detail.html:64 part/templates/part/part_sidebar.html:33 #: templates/InvenTree/index.html:252 templates/InvenTree/search.html:203 #: templates/InvenTree/settings/sidebar.html:44 templates/navbar.html:45 #: users/models.py:45 @@ -2583,7 +2600,7 @@ msgstr "" #: order/templates/order/sales_order_base.html:13 #: order/templates/order/sales_orders.html:8 #: order/templates/order/sales_orders.html:15 -#: part/templates/part/detail.html:194 part/templates/part/part_sidebar.html:39 +#: part/templates/part/detail.html:87 part/templates/part/part_sidebar.html:37 #: templates/InvenTree/index.html:283 templates/InvenTree/search.html:223 #: templates/InvenTree/settings/sidebar.html:46 templates/navbar.html:56 #: users/models.py:46 @@ -2610,14 +2627,14 @@ msgid "Company Notes" msgstr "" #: company/templates/company/detail.html:383 -#: company/templates/company/manufacturer_part.html:209 -#: part/templates/part/detail.html:520 +#: company/templates/company/manufacturer_part.html:215 +#: part/templates/part/detail.html:413 msgid "Delete Supplier Parts?" msgstr "" #: company/templates/company/detail.html:384 -#: company/templates/company/manufacturer_part.html:210 -#: part/templates/part/detail.html:521 +#: company/templates/company/manufacturer_part.html:216 +#: part/templates/part/detail.html:414 msgid "All selected supplier parts will be deleted" msgstr "" @@ -2634,7 +2651,7 @@ msgstr "" #: company/templates/company/manufacturer_part.html:35 #: company/templates/company/supplier_part.html:34 #: company/templates/company/supplier_part.html:159 -#: part/templates/part/detail.html:174 part/templates/part/part_base.html:76 +#: part/templates/part/detail.html:67 part/templates/part/part_base.html:76 msgid "Order part" msgstr "" @@ -2648,60 +2665,60 @@ msgstr "" msgid "Delete manufacturer part" msgstr "" -#: company/templates/company/manufacturer_part.html:70 -#: company/templates/company/supplier_part.html:71 +#: company/templates/company/manufacturer_part.html:66 +#: company/templates/company/supplier_part.html:63 msgid "Internal Part" msgstr "" -#: company/templates/company/manufacturer_part.html:108 +#: company/templates/company/manufacturer_part.html:114 #: company/templates/company/supplier_part.html:15 company/views.py:49 -#: part/templates/part/part_sidebar.html:33 part/templates/part/prices.html:163 +#: part/templates/part/part_sidebar.html:31 part/templates/part/prices.html:163 #: templates/InvenTree/search.html:194 templates/navbar.html:43 msgid "Suppliers" msgstr "" -#: company/templates/company/manufacturer_part.html:123 -#: part/templates/part/detail.html:451 +#: company/templates/company/manufacturer_part.html:129 +#: part/templates/part/detail.html:344 msgid "Delete supplier parts" msgstr "" -#: company/templates/company/manufacturer_part.html:123 -#: company/templates/company/manufacturer_part.html:152 -#: company/templates/company/manufacturer_part.html:248 -#: part/templates/part/detail.html:451 part/templates/part/detail.html:479 +#: company/templates/company/manufacturer_part.html:129 +#: company/templates/company/manufacturer_part.html:158 +#: company/templates/company/manufacturer_part.html:254 +#: part/templates/part/detail.html:344 part/templates/part/detail.html:372 #: templates/js/translated/company.js:425 templates/js/translated/helpers.js:31 #: users/models.py:204 msgid "Delete" msgstr "" -#: company/templates/company/manufacturer_part.html:137 +#: company/templates/company/manufacturer_part.html:143 #: company/templates/company/manufacturer_part_sidebar.html:5 #: part/templates/part/category_sidebar.html:17 -#: part/templates/part/detail.html:277 part/templates/part/part_sidebar.html:10 +#: part/templates/part/detail.html:170 part/templates/part/part_sidebar.html:8 msgid "Parameters" msgstr "" -#: company/templates/company/manufacturer_part.html:141 -#: part/templates/part/detail.html:282 +#: company/templates/company/manufacturer_part.html:147 +#: part/templates/part/detail.html:175 #: templates/InvenTree/settings/category.html:12 #: templates/InvenTree/settings/part.html:65 msgid "New Parameter" msgstr "" -#: company/templates/company/manufacturer_part.html:152 +#: company/templates/company/manufacturer_part.html:158 msgid "Delete parameters" msgstr "" -#: company/templates/company/manufacturer_part.html:185 -#: part/templates/part/detail.html:976 +#: company/templates/company/manufacturer_part.html:191 +#: part/templates/part/detail.html:867 msgid "Add Parameter" msgstr "" -#: company/templates/company/manufacturer_part.html:233 +#: company/templates/company/manufacturer_part.html:239 msgid "Selected parameters will be deleted" msgstr "" -#: company/templates/company/manufacturer_part.html:245 +#: company/templates/company/manufacturer_part.html:251 msgid "Delete Parameters" msgstr "" @@ -2722,9 +2739,9 @@ msgid "Assigned Stock Items" msgstr "" #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 stock/models.py:492 -#: stock/templates/stock/item_base.html:375 -#: templates/js/translated/company.js:787 templates/js/translated/stock.js:1323 +#: company/templates/company/supplier_part.html:24 stock/models.py:482 +#: stock/templates/stock/item_base.html:403 +#: templates/js/translated/company.js:787 templates/js/translated/stock.js:1405 msgid "Supplier Part" msgstr "" @@ -2744,13 +2761,13 @@ msgid "Supplier Part Stock" msgstr "" #: company/templates/company/supplier_part.html:141 -#: part/templates/part/detail.html:127 stock/templates/stock/location.html:147 +#: part/templates/part/detail.html:20 stock/templates/stock/location.html:162 msgid "Create new stock item" msgstr "" #: company/templates/company/supplier_part.html:142 -#: part/templates/part/detail.html:128 stock/templates/stock/location.html:148 -#: templates/js/translated/stock.js:354 +#: part/templates/part/detail.html:21 stock/templates/stock/location.html:163 +#: templates/js/translated/stock.js:355 msgid "New Stock Item" msgstr "" @@ -2760,7 +2777,7 @@ msgid "Supplier Part Orders" msgstr "" #: company/templates/company/supplier_part.html:160 -#: part/templates/part/detail.html:175 +#: part/templates/part/detail.html:68 msgid "Order Part" msgstr "" @@ -2796,15 +2813,15 @@ msgid "Delete price break" msgstr "" #: company/templates/company/supplier_part_navbar.html:15 -#: part/templates/part/part_sidebar.html:16 +#: part/templates/part/part_sidebar.html:14 #: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:14 #: stock/templates/stock/stock_app_base.html:10 #: templates/InvenTree/search.html:156 #: templates/InvenTree/settings/sidebar.html:40 -#: templates/js/translated/bom.js:216 templates/js/translated/part.js:427 -#: templates/js/translated/part.js:562 templates/js/translated/part.js:878 -#: templates/js/translated/part.js:1039 templates/js/translated/stock.js:509 -#: templates/js/translated/stock.js:1162 templates/navbar.html:26 +#: templates/js/translated/bom.js:216 templates/js/translated/part.js:434 +#: templates/js/translated/part.js:569 templates/js/translated/part.js:1059 +#: templates/js/translated/part.js:1220 templates/js/translated/stock.js:591 +#: templates/js/translated/stock.js:1244 templates/navbar.html:26 msgid "Stock" msgstr "" @@ -2818,16 +2835,16 @@ msgid "Supplier Part Pricing" msgstr "" #: company/templates/company/supplier_part_navbar.html:29 -#: part/templates/part/part_sidebar.html:30 +#: part/templates/part/part_sidebar.html:28 msgid "Pricing" msgstr "" #: company/templates/company/supplier_part_sidebar.html:5 -#: stock/templates/stock/location.html:118 -#: stock/templates/stock/location.html:132 -#: stock/templates/stock/location.html:144 +#: stock/templates/stock/location.html:133 +#: stock/templates/stock/location.html:147 +#: stock/templates/stock/location.html:159 #: stock/templates/stock/location_sidebar.html:7 -#: templates/InvenTree/search.html:158 templates/js/translated/stock.js:1901 +#: templates/InvenTree/search.html:158 templates/js/translated/stock.js:1983 #: templates/stats.html:93 templates/stats.html:102 users/models.py:43 msgid "Stock Items" msgstr "" @@ -2947,7 +2964,7 @@ msgstr "" msgid "Place order" msgstr "" -#: order/forms.py:37 order/templates/order/order_base.html:59 +#: order/forms.py:37 order/templates/order/order_base.html:60 msgid "Mark order as complete" msgstr "" @@ -3000,8 +3017,8 @@ msgstr "" msgid "Company from which the items are being ordered" msgstr "" -#: order/models.py:267 order/templates/order/order_base.html:114 -#: templates/js/translated/order.js:669 +#: order/models.py:267 order/templates/order/order_base.html:118 +#: templates/js/translated/order.js:676 msgid "Supplier Reference" msgstr "" @@ -3061,7 +3078,7 @@ msgstr "" msgid "Target date for order completion. Order will be overdue after this date." msgstr "" -#: order/models.py:582 templates/js/translated/order.js:1114 +#: order/models.py:582 templates/js/translated/order.js:1113 msgid "Shipment Date" msgstr "" @@ -3086,16 +3103,16 @@ msgid "Line item notes" msgstr "" #: order/models.py:768 order/models.py:856 -#: templates/js/translated/order.js:1166 +#: templates/js/translated/order.js:1165 msgid "Order" msgstr "" #: order/models.py:769 order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_po_report.html:77 -#: stock/templates/stock/item_base.html:325 -#: templates/js/translated/order.js:638 templates/js/translated/stock.js:1300 -#: templates/js/translated/stock.js:1983 +#: stock/templates/stock/item_base.html:353 +#: templates/js/translated/order.js:638 templates/js/translated/part.js:775 +#: templates/js/translated/stock.js:1382 templates/js/translated/stock.js:2065 msgid "Purchase Order" msgstr "" @@ -3103,9 +3120,10 @@ msgstr "" msgid "Supplier part" msgstr "" -#: order/models.py:797 order/templates/order/order_base.html:147 -#: order/templates/order/sales_order_base.html:154 -#: templates/js/translated/order.js:429 templates/js/translated/order.js:954 +#: order/models.py:797 order/templates/order/order_base.html:151 +#: order/templates/order/sales_order_base.html:155 +#: templates/js/translated/order.js:429 templates/js/translated/order.js:953 +#: templates/js/translated/part.js:847 templates/js/translated/part.js:873 msgid "Received" msgstr "" @@ -3113,9 +3131,9 @@ msgstr "" msgid "Number of items received" msgstr "" -#: order/models.py:805 part/templates/part/prices.html:176 stock/models.py:619 -#: stock/serializers.py:163 stock/templates/stock/item_base.html:332 -#: templates/js/translated/stock.js:1354 +#: order/models.py:805 part/templates/part/prices.html:176 stock/models.py:609 +#: stock/serializers.py:168 stock/templates/stock/item_base.html:360 +#: templates/js/translated/stock.js:1436 msgid "Purchase Price" msgstr "" @@ -3176,47 +3194,47 @@ msgstr "" msgid "Enter stock allocation quantity" msgstr "" -#: order/serializers.py:169 +#: order/serializers.py:175 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:204 +#: order/serializers.py:213 msgid "Line Item" msgstr "" -#: order/serializers.py:210 +#: order/serializers.py:219 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:220 order/serializers.py:288 +#: order/serializers.py:229 order/serializers.py:297 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:244 +#: order/serializers.py:253 msgid "Barcode Hash" msgstr "" -#: order/serializers.py:245 +#: order/serializers.py:254 msgid "Unique identifier field" msgstr "" -#: order/serializers.py:262 +#: order/serializers.py:271 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:300 +#: order/serializers.py:309 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:317 +#: order/serializers.py:326 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:328 +#: order/serializers.py:337 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:569 +#: order/serializers.py:578 msgid "Sale price currency" msgstr "" @@ -3248,22 +3266,36 @@ msgstr "" msgid "Receive items" msgstr "" -#: order/templates/order/order_base.html:93 -#: order/templates/order/sales_order_base.html:98 +#: order/templates/order/order_base.html:58 +#: order/templates/order/purchase_order_detail.html:31 +msgid "Receive Items" +msgstr "" + +#: order/templates/order/order_base.html:62 order/views.py:185 +msgid "Complete Order" +msgstr "" + +#: order/templates/order/order_base.html:84 +#: order/templates/order/sales_order_base.html:79 msgid "Order Reference" msgstr "" -#: order/templates/order/order_base.html:98 -#: order/templates/order/sales_order_base.html:103 +#: order/templates/order/order_base.html:89 +#: order/templates/order/sales_order_base.html:84 +msgid "Order Description" +msgstr "" + +#: order/templates/order/order_base.html:94 +#: order/templates/order/sales_order_base.html:89 msgid "Order Status" msgstr "" -#: order/templates/order/order_base.html:133 +#: order/templates/order/order_base.html:137 #: report/templates/report/inventree_build_order_base.html:122 msgid "Issued" msgstr "" -#: order/templates/order/order_base.html:203 +#: order/templates/order/order_base.html:207 msgid "Edit Purchase Order" msgstr "" @@ -3421,7 +3453,7 @@ msgid "Select existing purchase orders, or create new orders." msgstr "" #: order/templates/order/order_wizard/select_pos.html:31 -#: templates/js/translated/order.js:695 templates/js/translated/order.js:1119 +#: templates/js/translated/order.js:694 templates/js/translated/order.js:1118 msgid "Items" msgstr "" @@ -3465,10 +3497,6 @@ msgstr "" msgid "Receive selected items" msgstr "" -#: order/templates/order/purchase_order_detail.html:31 -msgid "Receive Items" -msgstr "" - #: order/templates/order/purchase_order_detail.html:50 msgid "Received Items" msgstr "" @@ -3496,16 +3524,16 @@ msgstr "" msgid "Ship Order" msgstr "" -#: order/templates/order/sales_order_base.html:86 +#: order/templates/order/sales_order_base.html:102 msgid "This Sales Order has not been fully allocated" msgstr "" -#: order/templates/order/sales_order_base.html:121 -#: templates/js/translated/order.js:1086 +#: order/templates/order/sales_order_base.html:122 +#: templates/js/translated/order.js:1085 msgid "Customer Reference" msgstr "" -#: order/templates/order/sales_order_base.html:194 +#: order/templates/order/sales_order_base.html:195 msgid "Edit Sales Order" msgstr "" @@ -3576,10 +3604,6 @@ msgstr "" msgid "Purchase order issued" msgstr "" -#: order/views.py:185 -msgid "Complete Order" -msgstr "" - #: order/views.py:201 msgid "Confirm order completion" msgstr "" @@ -3672,11 +3696,11 @@ msgid "This field is required" msgstr "" #: part/bom.py:125 part/models.py:81 part/models.py:816 -#: part/templates/part/category.html:90 part/templates/part/detail.html:104 +#: part/templates/part/category.html:104 part/templates/part/part_base.html:338 msgid "Default Location" msgstr "" -#: part/bom.py:126 part/templates/part/part_base.html:167 +#: part/bom.py:126 part/templates/part/part_base.html:185 msgid "Available Stock" msgstr "" @@ -3793,19 +3817,19 @@ msgstr "" msgid "Part Category" msgstr "" -#: part/models.py:96 part/templates/part/category.html:117 +#: part/models.py:96 part/templates/part/category.html:124 #: templates/InvenTree/search.html:101 templates/stats.html:84 #: users/models.py:40 msgid "Part Categories" msgstr "" #: part/models.py:358 part/templates/part/cat_link.html:3 -#: part/templates/part/category.html:13 part/templates/part/category.html:122 -#: part/templates/part/category.html:142 +#: part/templates/part/category.html:13 part/templates/part/category.html:129 +#: part/templates/part/category.html:149 #: part/templates/part/category_sidebar.html:9 #: templates/InvenTree/index.html:85 templates/InvenTree/search.html:88 #: templates/InvenTree/settings/sidebar.html:36 -#: templates/js/translated/part.js:1416 templates/navbar.html:19 +#: templates/js/translated/part.js:1597 templates/navbar.html:19 #: templates/stats.html:80 templates/stats.html:89 users/models.py:41 msgid "Parts" msgstr "" @@ -3859,8 +3883,8 @@ msgstr "" msgid "Part description" msgstr "" -#: part/models.py:770 part/templates/part/category.html:97 -#: part/templates/part/detail.html:73 +#: part/models.py:770 part/templates/part/category.html:82 +#: part/templates/part/part_base.html:302 msgid "Keywords" msgstr "" @@ -3869,9 +3893,10 @@ msgid "Part keywords to improve visibility in search results" msgstr "" #: part/models.py:778 part/models.py:2223 part/models.py:2472 -#: part/templates/part/detail.html:36 part/templates/part/set_category.html:15 +#: part/templates/part/part_base.html:265 +#: part/templates/part/set_category.html:15 #: templates/InvenTree/settings/settings.html:163 -#: templates/js/translated/part.js:1021 +#: templates/js/translated/part.js:1202 msgid "Category" msgstr "" @@ -3879,9 +3904,9 @@ msgstr "" msgid "Part category" msgstr "" -#: part/models.py:784 part/templates/part/detail.html:45 -#: templates/js/translated/part.js:550 templates/js/translated/part.js:974 -#: templates/js/translated/stock.js:1134 +#: part/models.py:784 part/templates/part/part_base.html:274 +#: templates/js/translated/part.js:557 templates/js/translated/part.js:1155 +#: templates/js/translated/stock.js:1216 msgid "IPN" msgstr "" @@ -3893,8 +3918,8 @@ msgstr "" msgid "Part revision or version number" msgstr "" -#: part/models.py:792 part/templates/part/detail.html:52 report/models.py:200 -#: templates/js/translated/part.js:554 +#: part/models.py:792 part/templates/part/part_base.html:281 +#: report/models.py:200 templates/js/translated/part.js:561 msgid "Revision" msgstr "" @@ -3902,7 +3927,7 @@ msgstr "" msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:861 part/templates/part/detail.html:113 +#: part/models.py:861 part/templates/part/part_base.html:347 msgid "Default Supplier" msgstr "" @@ -3918,7 +3943,7 @@ msgstr "" msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:875 part/templates/part/part_base.html:178 +#: part/models.py:875 part/templates/part/part_base.html:196 msgid "Minimum Stock" msgstr "" @@ -4001,8 +4026,8 @@ msgstr "" msgid "Test with this name already exists for this part" msgstr "" -#: part/models.py:2310 templates/js/translated/part.js:1467 -#: templates/js/translated/stock.js:858 +#: part/models.py:2310 templates/js/translated/part.js:1648 +#: templates/js/translated/stock.js:940 msgid "Test Name" msgstr "" @@ -4018,7 +4043,7 @@ msgstr "" msgid "Enter description for this test" msgstr "" -#: part/models.py:2322 templates/js/translated/part.js:1476 +#: part/models.py:2322 templates/js/translated/part.js:1657 #: templates/js/translated/table_filters.js:276 msgid "Required" msgstr "" @@ -4027,7 +4052,7 @@ msgstr "" msgid "Is this test required to pass?" msgstr "" -#: part/models.py:2328 templates/js/translated/part.js:1484 +#: part/models.py:2328 templates/js/translated/part.js:1665 msgid "Requires Value" msgstr "" @@ -4035,7 +4060,7 @@ msgstr "" msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:2334 templates/js/translated/part.js:1491 +#: part/models.py:2334 templates/js/translated/part.js:1672 msgid "Requires Attachment" msgstr "" @@ -4150,7 +4175,7 @@ msgstr "" msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:2686 stock/models.py:371 +#: part/models.py:2686 stock/models.py:361 msgid "Quantity must be integer value for trackable parts" msgstr "" @@ -4213,7 +4238,7 @@ msgstr "" msgid "The BOM for %(part)s has not been validated." msgstr "" -#: part/templates/part/bom.html:30 part/templates/part/detail.html:357 +#: part/templates/part/bom.html:30 part/templates/part/detail.html:250 msgid "BOM actions" msgstr "" @@ -4298,68 +4323,64 @@ msgstr "" msgid "New Category" msgstr "" -#: part/templates/part/category.html:67 -msgid "Top level part category" -msgstr "" - -#: part/templates/part/category.html:79 +#: part/templates/part/category.html:76 part/templates/part/category.html:89 msgid "Category Path" msgstr "" -#: part/templates/part/category.html:84 -msgid "Category Description" +#: part/templates/part/category.html:90 +msgid "Top level part category" msgstr "" -#: part/templates/part/category.html:103 part/templates/part/category.html:194 +#: part/templates/part/category.html:110 part/templates/part/category.html:201 #: part/templates/part/category_sidebar.html:7 msgid "Subcategories" msgstr "" -#: part/templates/part/category.html:108 +#: part/templates/part/category.html:115 msgid "Parts (Including subcategories)" msgstr "" -#: part/templates/part/category.html:145 +#: part/templates/part/category.html:152 msgid "Export Part Data" msgstr "" -#: part/templates/part/category.html:146 part/templates/part/category.html:170 +#: part/templates/part/category.html:153 part/templates/part/category.html:177 msgid "Export" msgstr "" -#: part/templates/part/category.html:149 +#: part/templates/part/category.html:156 msgid "Create new part" msgstr "" -#: part/templates/part/category.html:150 templates/js/translated/bom.js:40 +#: part/templates/part/category.html:157 templates/js/translated/bom.js:40 msgid "New Part" msgstr "" -#: part/templates/part/category.html:164 +#: part/templates/part/category.html:171 msgid "Set category" msgstr "" -#: part/templates/part/category.html:164 +#: part/templates/part/category.html:171 msgid "Set Category" msgstr "" -#: part/templates/part/category.html:168 +#: part/templates/part/category.html:175 msgid "Print Labels" msgstr "" -#: part/templates/part/category.html:170 +#: part/templates/part/category.html:177 msgid "Export Data" msgstr "" -#: part/templates/part/category.html:184 +#: part/templates/part/category.html:191 msgid "Part Parameters" msgstr "" -#: part/templates/part/category.html:261 +#: part/templates/part/category.html:268 msgid "Create Part Category" msgstr "" -#: part/templates/part/category.html:288 +#: part/templates/part/category.html:295 msgid "Create Part" msgstr "" @@ -4402,7 +4423,7 @@ msgstr "" msgid "Import Parts" msgstr "" -#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:366 +#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:373 msgid "Duplicate Part" msgstr "" @@ -4426,167 +4447,155 @@ msgstr "" msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)" msgstr "" -#: part/templates/part/detail.html:16 -msgid "Part Details" -msgstr "" - -#: part/templates/part/detail.html:66 -msgid "Minimum stock level" -msgstr "" - -#: part/templates/part/detail.html:97 -msgid "Latest Serial Number" -msgstr "" - -#: part/templates/part/detail.html:124 +#: part/templates/part/detail.html:17 msgid "Part Stock" msgstr "" -#: part/templates/part/detail.html:136 +#: part/templates/part/detail.html:29 #, python-format msgid "Showing stock for all variants of %(full_name)s" msgstr "" -#: part/templates/part/detail.html:146 +#: part/templates/part/detail.html:39 msgid "Part Test Templates" msgstr "" -#: part/templates/part/detail.html:151 +#: part/templates/part/detail.html:44 msgid "Add Test Template" msgstr "" -#: part/templates/part/detail.html:208 +#: part/templates/part/detail.html:101 msgid "Sales Order Allocations" msgstr "" -#: part/templates/part/detail.html:249 +#: part/templates/part/detail.html:142 msgid "Part Variants" msgstr "" -#: part/templates/part/detail.html:253 +#: part/templates/part/detail.html:146 msgid "Create new variant" msgstr "" -#: part/templates/part/detail.html:254 +#: part/templates/part/detail.html:147 msgid "New Variant" msgstr "" -#: part/templates/part/detail.html:281 +#: part/templates/part/detail.html:174 msgid "Add new parameter" msgstr "" -#: part/templates/part/detail.html:315 part/templates/part/part_sidebar.html:47 +#: part/templates/part/detail.html:208 part/templates/part/part_sidebar.html:45 msgid "Related Parts" msgstr "" -#: part/templates/part/detail.html:319 part/templates/part/detail.html:320 +#: part/templates/part/detail.html:212 part/templates/part/detail.html:213 msgid "Add Related" msgstr "" -#: part/templates/part/detail.html:340 part/templates/part/part_sidebar.html:19 +#: part/templates/part/detail.html:233 part/templates/part/part_sidebar.html:17 msgid "Bill of Materials" msgstr "" -#: part/templates/part/detail.html:345 +#: part/templates/part/detail.html:238 msgid "Export actions" msgstr "" -#: part/templates/part/detail.html:349 +#: part/templates/part/detail.html:242 msgid "Export BOM" msgstr "" -#: part/templates/part/detail.html:351 +#: part/templates/part/detail.html:244 msgid "Print BOM Report" msgstr "" -#: part/templates/part/detail.html:361 +#: part/templates/part/detail.html:254 msgid "Upload BOM" msgstr "" -#: part/templates/part/detail.html:363 templates/js/translated/part.js:267 +#: part/templates/part/detail.html:256 templates/js/translated/part.js:270 msgid "Copy BOM" msgstr "" -#: part/templates/part/detail.html:365 part/views.py:755 +#: part/templates/part/detail.html:258 part/views.py:755 msgid "Validate BOM" msgstr "" -#: part/templates/part/detail.html:370 +#: part/templates/part/detail.html:263 msgid "New BOM Item" msgstr "" -#: part/templates/part/detail.html:371 +#: part/templates/part/detail.html:264 msgid "Add BOM Item" msgstr "" -#: part/templates/part/detail.html:384 +#: part/templates/part/detail.html:277 msgid "Assemblies" msgstr "" -#: part/templates/part/detail.html:401 +#: part/templates/part/detail.html:294 msgid "Part Builds" msgstr "" -#: part/templates/part/detail.html:426 +#: part/templates/part/detail.html:319 msgid "Build Order Allocations" msgstr "" -#: part/templates/part/detail.html:436 +#: part/templates/part/detail.html:329 msgid "Part Suppliers" msgstr "" -#: part/templates/part/detail.html:463 +#: part/templates/part/detail.html:356 msgid "Part Manufacturers" msgstr "" -#: part/templates/part/detail.html:479 +#: part/templates/part/detail.html:372 msgid "Delete manufacturer parts" msgstr "" -#: part/templates/part/detail.html:660 +#: part/templates/part/detail.html:553 msgid "Delete selected BOM items?" msgstr "" -#: part/templates/part/detail.html:661 +#: part/templates/part/detail.html:554 msgid "All selected BOM items will be deleted" msgstr "" -#: part/templates/part/detail.html:712 +#: part/templates/part/detail.html:605 msgid "Create BOM Item" msgstr "" -#: part/templates/part/detail.html:764 +#: part/templates/part/detail.html:657 msgid "Related Part" msgstr "" -#: part/templates/part/detail.html:772 +#: part/templates/part/detail.html:665 msgid "Add Related Part" msgstr "" -#: part/templates/part/detail.html:869 +#: part/templates/part/detail.html:760 msgid "Add Test Result Template" msgstr "" -#: part/templates/part/detail.html:926 +#: part/templates/part/detail.html:817 msgid "Edit Part Notes" msgstr "" -#: part/templates/part/detail.html:1039 +#: part/templates/part/detail.html:930 #, python-format msgid "Purchase Unit Price - %(currency)s" msgstr "" -#: part/templates/part/detail.html:1051 +#: part/templates/part/detail.html:942 #, python-format msgid "Unit Price-Cost Difference - %(currency)s" msgstr "" -#: part/templates/part/detail.html:1063 +#: part/templates/part/detail.html:954 #, python-format msgid "Supplier Unit Cost - %(currency)s" msgstr "" -#: part/templates/part/detail.html:1152 +#: part/templates/part/detail.html:1043 #, python-format msgid "Unit Price - %(currency)s" msgstr "" @@ -4668,86 +4677,108 @@ msgstr "" msgid "Delete part" msgstr "" -#: part/templates/part/part_base.html:109 +#: part/templates/part/part_base.html:112 msgid "Part is a template part (variants can be made from this part)" msgstr "" -#: part/templates/part/part_base.html:113 +#: part/templates/part/part_base.html:116 msgid "Part can be assembled from other parts" msgstr "" -#: part/templates/part/part_base.html:117 +#: part/templates/part/part_base.html:120 msgid "Part can be used in assemblies" msgstr "" -#: part/templates/part/part_base.html:121 +#: part/templates/part/part_base.html:124 msgid "Part stock is tracked by serial number" msgstr "" -#: part/templates/part/part_base.html:125 +#: part/templates/part/part_base.html:128 msgid "Part can be purchased from external suppliers" msgstr "" -#: part/templates/part/part_base.html:129 +#: part/templates/part/part_base.html:132 msgid "Part can be sold to customers" msgstr "" -#: part/templates/part/part_base.html:135 -#: part/templates/part/part_base.html:143 +#: part/templates/part/part_base.html:138 +#: part/templates/part/part_base.html:146 msgid "Part is virtual (not a physical part)" msgstr "" -#: part/templates/part/part_base.html:136 +#: part/templates/part/part_base.html:139 #: templates/js/translated/company.js:505 #: templates/js/translated/company.js:762 #: templates/js/translated/model_renderers.js:175 -#: templates/js/translated/part.js:465 templates/js/translated/part.js:542 +#: templates/js/translated/part.js:472 templates/js/translated/part.js:549 msgid "Inactive" msgstr "" -#: part/templates/part/part_base.html:155 +#: part/templates/part/part_base.html:156 +#: part/templates/part/part_base.html:579 +msgid "Show Part Details" +msgstr "" + +#: part/templates/part/part_base.html:173 #, python-format msgid "This part is a variant of %(link)s" msgstr "" -#: part/templates/part/part_base.html:172 templates/js/translated/order.js:1546 +#: part/templates/part/part_base.html:190 templates/js/translated/order.js:1545 #: templates/js/translated/table_filters.js:188 msgid "In Stock" msgstr "" -#: part/templates/part/part_base.html:185 templates/js/translated/part.js:1054 +#: part/templates/part/part_base.html:203 templates/js/translated/part.js:1235 msgid "On Order" msgstr "" -#: part/templates/part/part_base.html:192 templates/InvenTree/index.html:178 +#: part/templates/part/part_base.html:210 templates/InvenTree/index.html:178 msgid "Required for Build Orders" msgstr "" -#: part/templates/part/part_base.html:199 +#: part/templates/part/part_base.html:217 msgid "Required for Sales Orders" msgstr "" -#: part/templates/part/part_base.html:206 +#: part/templates/part/part_base.html:224 msgid "Allocated to Orders" msgstr "" -#: part/templates/part/part_base.html:221 templates/js/translated/bom.js:566 +#: part/templates/part/part_base.html:239 templates/js/translated/bom.js:566 msgid "Can Build" msgstr "" -#: part/templates/part/part_base.html:227 templates/js/translated/part.js:885 -#: templates/js/translated/part.js:1058 +#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1066 +#: templates/js/translated/part.js:1239 msgid "Building" msgstr "" -#: part/templates/part/part_base.html:320 part/templates/part/prices.html:144 +#: part/templates/part/part_base.html:295 +msgid "Minimum stock level" +msgstr "" + +#: part/templates/part/part_base.html:324 +msgid "Latest Serial Number" +msgstr "" + +#: part/templates/part/part_base.html:328 +#: stock/templates/stock/item_base.html:159 +msgid "Search for serial number" +msgstr "" + +#: part/templates/part/part_base.html:449 part/templates/part/prices.html:144 msgid "Calculate" msgstr "" -#: part/templates/part/part_base.html:363 +#: part/templates/part/part_base.html:492 msgid "No matching images found" msgstr "" +#: part/templates/part/part_base.html:573 +msgid "Hide Part Details" +msgstr "" + #: part/templates/part/part_pricing.html:22 part/templates/part/prices.html:21 msgid "Supplier Pricing" msgstr "" @@ -4805,20 +4836,15 @@ msgstr "" msgid "No pricing information is available for this part." msgstr "" -#: part/templates/part/part_sidebar.html:8 -#: templates/js/translated/stock.js:1949 -msgid "Details" -msgstr "" - -#: part/templates/part/part_sidebar.html:13 +#: part/templates/part/part_sidebar.html:11 msgid "Variants" msgstr "" -#: part/templates/part/part_sidebar.html:27 +#: part/templates/part/part_sidebar.html:25 msgid "Used In" msgstr "" -#: part/templates/part/part_sidebar.html:43 +#: part/templates/part/part_sidebar.html:41 msgid "Test Templates" msgstr "" @@ -4934,8 +4960,8 @@ msgid "Set category for the following parts" msgstr "" #: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:476 -#: templates/js/translated/part.js:429 templates/js/translated/part.js:875 -#: templates/js/translated/part.js:1062 +#: templates/js/translated/part.js:436 templates/js/translated/part.js:1056 +#: templates/js/translated/part.js:1243 msgid "No Stock" msgstr "" @@ -5037,7 +5063,7 @@ msgstr "" msgid "Delete Part Parameter Template" msgstr "" -#: part/views.py:1489 templates/js/translated/part.js:310 +#: part/views.py:1489 templates/js/translated/part.js:313 msgid "Edit Part Category" msgstr "" @@ -5171,11 +5197,12 @@ msgid "Stock Item Test Report" msgstr "" #: report/templates/report/inventree_test_report_base.html:79 -#: stock/models.py:530 stock/templates/stock/item_base.html:238 +#: stock/models.py:520 stock/templates/stock/item_base.html:149 #: templates/js/translated/build.js:233 templates/js/translated/build.js:637 #: templates/js/translated/build.js:1013 #: templates/js/translated/model_renderers.js:95 -#: templates/js/translated/order.js:1288 templates/js/translated/order.js:1377 +#: templates/js/translated/order.js:1287 templates/js/translated/order.js:1376 +#: templates/js/translated/stock.js:410 msgid "Serial Number" msgstr "" @@ -5184,17 +5211,17 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:93 -#: stock/models.py:1855 +#: stock/models.py:1845 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:94 -#: stock/models.py:1861 +#: stock/models.py:1851 msgid "Result" msgstr "" #: report/templates/report/inventree_test_report_base.html:97 -#: templates/js/translated/order.js:685 templates/js/translated/stock.js:1917 +#: templates/js/translated/order.js:684 templates/js/translated/stock.js:1999 msgid "Date" msgstr "" @@ -5212,7 +5239,7 @@ msgid "Installed Items" msgstr "" #: report/templates/report/inventree_test_report_base.html:137 -#: templates/js/translated/stock.js:2177 +#: templates/js/translated/stock.js:2259 msgid "Serial" msgstr "" @@ -5220,9 +5247,9 @@ msgstr "" msgid "Quantity is required" msgstr "" -#: stock/forms.py:91 stock/forms.py:265 stock/models.py:587 -#: stock/templates/stock/item_base.html:382 -#: templates/js/translated/stock.js:1276 +#: stock/forms.py:91 stock/forms.py:265 stock/models.py:577 +#: stock/templates/stock/item_base.html:186 +#: templates/js/translated/stock.js:1358 msgid "Expiry Date" msgstr "" @@ -5270,241 +5297,241 @@ msgstr "" msgid "Confirm removal of installed stock items" msgstr "" -#: stock/models.py:60 stock/models.py:624 -#: stock/templates/stock/item_base.html:422 +#: stock/models.py:60 stock/models.py:614 +#: stock/templates/stock/item_base.html:417 msgid "Owner" msgstr "" -#: stock/models.py:61 stock/models.py:625 +#: stock/models.py:61 stock/models.py:615 msgid "Select Owner" msgstr "" -#: stock/models.py:352 +#: stock/models.py:342 msgid "StockItem with this serial number already exists" msgstr "" -#: stock/models.py:388 +#: stock/models.py:378 #, python-brace-format msgid "Part type ('{pf}') must be {pe}" msgstr "" -#: stock/models.py:398 stock/models.py:407 +#: stock/models.py:388 stock/models.py:397 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:399 +#: stock/models.py:389 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:421 +#: stock/models.py:411 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:427 +#: stock/models.py:417 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:434 +#: stock/models.py:424 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:476 +#: stock/models.py:466 msgid "Parent Stock Item" msgstr "" -#: stock/models.py:485 +#: stock/models.py:475 msgid "Base part" msgstr "" -#: stock/models.py:493 +#: stock/models.py:483 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:498 stock/templates/stock/location.html:12 +#: stock/models.py:488 stock/templates/stock/location.html:12 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" msgstr "" -#: stock/models.py:501 +#: stock/models.py:491 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:508 +#: stock/models.py:498 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:513 stock/templates/stock/item_base.html:271 +#: stock/models.py:503 stock/templates/stock/item_base.html:299 msgid "Installed In" msgstr "" -#: stock/models.py:516 +#: stock/models.py:506 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:532 +#: stock/models.py:522 msgid "Serial number for this item" msgstr "" -#: stock/models.py:546 +#: stock/models.py:536 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:550 +#: stock/models.py:540 msgid "Stock Quantity" msgstr "" -#: stock/models.py:559 +#: stock/models.py:549 msgid "Source Build" msgstr "" -#: stock/models.py:561 +#: stock/models.py:551 msgid "Build for this stock item" msgstr "" -#: stock/models.py:572 +#: stock/models.py:562 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:575 +#: stock/models.py:565 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:581 +#: stock/models.py:571 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:588 +#: stock/models.py:578 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:601 +#: stock/models.py:591 msgid "Delete on deplete" msgstr "" -#: stock/models.py:601 +#: stock/models.py:591 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:611 stock/templates/stock/item.html:111 +#: stock/models.py:601 stock/templates/stock/item.html:111 msgid "Stock Item Notes" msgstr "" -#: stock/models.py:620 +#: stock/models.py:610 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:630 +#: stock/models.py:620 msgid "Scheduled for deletion" msgstr "" -#: stock/models.py:631 +#: stock/models.py:621 msgid "This StockItem will be deleted by the background worker" msgstr "" -#: stock/models.py:1094 +#: stock/models.py:1084 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1100 +#: stock/models.py:1090 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1106 +#: stock/models.py:1096 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({n})" msgstr "" -#: stock/models.py:1109 +#: stock/models.py:1099 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1112 +#: stock/models.py:1102 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1119 +#: stock/models.py:1109 #, python-brace-format msgid "Serial numbers already exist: {exists}" msgstr "" -#: stock/models.py:1277 +#: stock/models.py:1267 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:1775 +#: stock/models.py:1765 msgid "Entry notes" msgstr "" -#: stock/models.py:1832 +#: stock/models.py:1822 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:1838 +#: stock/models.py:1828 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:1856 +#: stock/models.py:1846 msgid "Test name" msgstr "" -#: stock/models.py:1862 templates/js/translated/table_filters.js:266 +#: stock/models.py:1852 templates/js/translated/table_filters.js:266 msgid "Test result" msgstr "" -#: stock/models.py:1868 +#: stock/models.py:1858 msgid "Test output value" msgstr "" -#: stock/models.py:1875 +#: stock/models.py:1865 msgid "Test result attachment" msgstr "" -#: stock/models.py:1881 +#: stock/models.py:1871 msgid "Test notes" msgstr "" -#: stock/serializers.py:166 +#: stock/serializers.py:171 msgid "Purchase price of this stock item" msgstr "" -#: stock/serializers.py:173 +#: stock/serializers.py:178 msgid "Purchase currency of this stock item" msgstr "" -#: stock/serializers.py:287 +#: stock/serializers.py:292 msgid "Enter number of stock items to serialize" msgstr "" -#: stock/serializers.py:302 +#: stock/serializers.py:307 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "" -#: stock/serializers.py:308 +#: stock/serializers.py:313 msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:319 stock/serializers.py:686 +#: stock/serializers.py:324 stock/serializers.py:691 msgid "Destination stock location" msgstr "" -#: stock/serializers.py:326 +#: stock/serializers.py:331 msgid "Optional note field" msgstr "" -#: stock/serializers.py:339 +#: stock/serializers.py:344 msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:556 +#: stock/serializers.py:561 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:584 +#: stock/serializers.py:589 msgid "Stock transaction notes" msgstr "" -#: stock/serializers.py:594 +#: stock/serializers.py:599 msgid "A list of stock items must be provided" msgstr "" @@ -5629,125 +5656,131 @@ msgstr "" msgid "Install" msgstr "" -#: stock/templates/stock/item_base.html:106 +#: stock/templates/stock/item_base.html:108 msgid "Convert to variant" msgstr "" -#: stock/templates/stock/item_base.html:109 +#: stock/templates/stock/item_base.html:111 msgid "Duplicate stock item" msgstr "" -#: stock/templates/stock/item_base.html:111 +#: stock/templates/stock/item_base.html:113 msgid "Edit stock item" msgstr "" -#: stock/templates/stock/item_base.html:114 +#: stock/templates/stock/item_base.html:116 msgid "Delete stock item" msgstr "" -#: stock/templates/stock/item_base.html:136 -#: stock/templates/stock/item_base.html:386 -#: templates/js/translated/table_filters.js:247 -msgid "Expired" +#: stock/templates/stock/item_base.html:154 +msgid "previous page" msgstr "" -#: stock/templates/stock/item_base.html:146 -#: stock/templates/stock/item_base.html:388 -#: templates/js/translated/table_filters.js:253 -msgid "Stale" +#: stock/templates/stock/item_base.html:154 +msgid "Navigate to previous serial number" msgstr "" -#: stock/templates/stock/item_base.html:161 -msgid "You are not in the list of owners of this item. This stock item cannot be edited." +#: stock/templates/stock/item_base.html:163 +msgid "next page" msgstr "" -#: stock/templates/stock/item_base.html:168 -msgid "This stock item is in production and cannot be edited." -msgstr "" - -#: stock/templates/stock/item_base.html:169 -msgid "Edit the stock item from the build view." -msgstr "" - -#: stock/templates/stock/item_base.html:182 -msgid "This stock item has not passed all required tests" +#: stock/templates/stock/item_base.html:163 +msgid "Navigate to next serial number" msgstr "" #: stock/templates/stock/item_base.html:190 #, python-format -msgid "This stock item is allocated to Sales Order %(link)s (Quantity: %(qty)s)" -msgstr "" - -#: stock/templates/stock/item_base.html:198 -#, python-format -msgid "This stock item is allocated to Build %(link)s (Quantity: %(qty)s)" -msgstr "" - -#: stock/templates/stock/item_base.html:204 -msgid "This stock item is serialized - it has a unique serial number and the quantity cannot be adjusted." -msgstr "" - -#: stock/templates/stock/item_base.html:208 -msgid "This stock item cannot be deleted as it has child items" -msgstr "" - -#: stock/templates/stock/item_base.html:212 -msgid "This stock item will be automatically deleted when all stock is depleted." -msgstr "" - -#: stock/templates/stock/item_base.html:241 -msgid "previous page" -msgstr "" - -#: stock/templates/stock/item_base.html:247 -msgid "next page" -msgstr "" - -#: stock/templates/stock/item_base.html:290 -#: templates/js/translated/build.js:1035 -msgid "No location set" -msgstr "" - -#: stock/templates/stock/item_base.html:297 -msgid "Barcode Identifier" -msgstr "" - -#: stock/templates/stock/item_base.html:339 -msgid "Parent Item" -msgstr "" - -#: stock/templates/stock/item_base.html:357 -msgid "No manufacturer set" -msgstr "" - -#: stock/templates/stock/item_base.html:386 -#, python-format msgid "This StockItem expired on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:388 +#: stock/templates/stock/item_base.html:190 +#: templates/js/translated/table_filters.js:247 +msgid "Expired" +msgstr "" + +#: stock/templates/stock/item_base.html:192 #, python-format msgid "This StockItem expires on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:395 -#: templates/js/translated/stock.js:1289 +#: stock/templates/stock/item_base.html:192 +#: templates/js/translated/table_filters.js:253 +msgid "Stale" +msgstr "" + +#: stock/templates/stock/item_base.html:199 +#: templates/js/translated/stock.js:1371 msgid "Last Updated" msgstr "" -#: stock/templates/stock/item_base.html:400 +#: stock/templates/stock/item_base.html:204 msgid "Last Stocktake" msgstr "" -#: stock/templates/stock/item_base.html:404 +#: stock/templates/stock/item_base.html:208 msgid "No stocktake performed" msgstr "" -#: stock/templates/stock/item_base.html:415 +#: stock/templates/stock/item_base.html:226 +msgid "You are not in the list of owners of this item. This stock item cannot be edited." +msgstr "" + +#: stock/templates/stock/item_base.html:233 +msgid "This stock item is in production and cannot be edited." +msgstr "" + +#: stock/templates/stock/item_base.html:234 +msgid "Edit the stock item from the build view." +msgstr "" + +#: stock/templates/stock/item_base.html:247 +msgid "This stock item has not passed all required tests" +msgstr "" + +#: stock/templates/stock/item_base.html:255 +#, python-format +msgid "This stock item is allocated to Sales Order %(link)s (Quantity: %(qty)s)" +msgstr "" + +#: stock/templates/stock/item_base.html:263 +#, python-format +msgid "This stock item is allocated to Build %(link)s (Quantity: %(qty)s)" +msgstr "" + +#: stock/templates/stock/item_base.html:269 +msgid "This stock item is serialized - it has a unique serial number and the quantity cannot be adjusted." +msgstr "" + +#: stock/templates/stock/item_base.html:273 +msgid "This stock item cannot be deleted as it has child items" +msgstr "" + +#: stock/templates/stock/item_base.html:277 +msgid "This stock item will be automatically deleted when all stock is depleted." +msgstr "" + +#: stock/templates/stock/item_base.html:318 +#: templates/js/translated/build.js:1035 +msgid "No location set" +msgstr "" + +#: stock/templates/stock/item_base.html:325 +msgid "Barcode Identifier" +msgstr "" + +#: stock/templates/stock/item_base.html:367 +msgid "Parent Item" +msgstr "" + +#: stock/templates/stock/item_base.html:385 +msgid "No manufacturer set" +msgstr "" + +#: stock/templates/stock/item_base.html:410 msgid "Tests" msgstr "" -#: stock/templates/stock/item_base.html:505 +#: stock/templates/stock/item_base.html:500 msgid "Edit Stock Status" msgstr "" @@ -5825,30 +5858,35 @@ msgstr "" msgid "New Location" msgstr "" -#: stock/templates/stock/location.html:86 +#: stock/templates/stock/location.html:95 +#: stock/templates/stock/location.html:101 +msgid "Location Path" +msgstr "" + +#: stock/templates/stock/location.html:102 msgid "Top level stock location" msgstr "" -#: stock/templates/stock/location.html:95 +#: stock/templates/stock/location.html:115 msgid "You are not in the list of owners of this location. This stock location cannot be edited." msgstr "" -#: stock/templates/stock/location.html:113 -#: stock/templates/stock/location.html:160 +#: stock/templates/stock/location.html:128 +#: stock/templates/stock/location.html:175 #: stock/templates/stock/location_sidebar.html:5 msgid "Sublocations" msgstr "" -#: stock/templates/stock/location.html:127 templates/InvenTree/search.html:170 +#: stock/templates/stock/location.html:142 templates/InvenTree/search.html:170 #: templates/stats.html:97 users/models.py:42 msgid "Stock Locations" msgstr "" -#: stock/templates/stock/location.html:167 templates/stock_table.html:30 +#: stock/templates/stock/location.html:182 templates/stock_table.html:30 msgid "Printing Actions" msgstr "" -#: stock/templates/stock/location.html:171 templates/stock_table.html:34 +#: stock/templates/stock/location.html:186 templates/stock_table.html:34 msgid "Print labels" msgstr "" @@ -5942,7 +5980,7 @@ msgstr "" msgid "Uninstall Stock Items" msgstr "" -#: stock/views.py:760 templates/js/translated/stock.js:648 +#: stock/views.py:760 templates/js/translated/stock.js:730 msgid "Confirm stock adjustment" msgstr "" @@ -5950,7 +5988,7 @@ msgstr "" msgid "Uninstalled stock items" msgstr "" -#: stock/views.py:793 templates/js/translated/stock.js:318 +#: stock/views.py:793 templates/js/translated/stock.js:319 msgid "Edit Stock Item" msgstr "" @@ -5962,7 +6000,7 @@ msgstr "" msgid "Create new Stock Item" msgstr "" -#: stock/views.py:1186 templates/js/translated/stock.js:298 +#: stock/views.py:1186 templates/js/translated/stock.js:299 msgid "Duplicate Stock Item" msgstr "" @@ -6868,7 +6906,7 @@ msgstr "" msgid "Unlink" msgstr "" -#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:600 +#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:682 msgid "Remove stock item" msgstr "" @@ -6963,7 +7001,7 @@ msgid "View BOM" msgstr "" #: templates/js/translated/bom.js:608 templates/js/translated/build.js:1183 -#: templates/js/translated/order.js:1320 +#: templates/js/translated/order.js:1319 msgid "Actions" msgstr "" @@ -7055,7 +7093,7 @@ msgstr "" msgid "No build order allocations found" msgstr "" -#: templates/js/translated/build.js:424 templates/js/translated/order.js:1194 +#: templates/js/translated/build.js:424 templates/js/translated/order.js:1193 msgid "Location not specified" msgstr "" @@ -7064,12 +7102,12 @@ msgid "No active build outputs found" msgstr "" #: templates/js/translated/build.js:1052 templates/js/translated/build.js:1760 -#: templates/js/translated/order.js:1327 +#: templates/js/translated/order.js:1326 msgid "Edit stock allocation" msgstr "" #: templates/js/translated/build.js:1054 templates/js/translated/build.js:1761 -#: templates/js/translated/order.js:1328 +#: templates/js/translated/order.js:1327 msgid "Delete stock allocation" msgstr "" @@ -7090,11 +7128,11 @@ msgid "Quantity Per" msgstr "" #: templates/js/translated/build.js:1134 templates/js/translated/build.js:1360 -#: templates/js/translated/build.js:1756 templates/js/translated/order.js:1557 +#: templates/js/translated/build.js:1756 templates/js/translated/order.js:1556 msgid "Allocated" msgstr "" -#: templates/js/translated/build.js:1190 templates/js/translated/order.js:1611 +#: templates/js/translated/build.js:1190 templates/js/translated/order.js:1610 msgid "Build stock" msgstr "" @@ -7102,7 +7140,7 @@ msgstr "" msgid "Order stock" msgstr "" -#: templates/js/translated/build.js:1197 templates/js/translated/order.js:1604 +#: templates/js/translated/build.js:1197 templates/js/translated/order.js:1603 msgid "Allocate stock" msgstr "" @@ -7143,9 +7181,9 @@ msgstr "" msgid "No builds matching query" msgstr "" -#: templates/js/translated/build.js:1593 templates/js/translated/part.js:966 -#: templates/js/translated/part.js:1377 templates/js/translated/stock.js:1094 -#: templates/js/translated/stock.js:1871 +#: templates/js/translated/build.js:1593 templates/js/translated/part.js:1147 +#: templates/js/translated/part.js:1558 templates/js/translated/stock.js:1176 +#: templates/js/translated/stock.js:1953 msgid "Select" msgstr "" @@ -7153,7 +7191,7 @@ msgstr "" msgid "Build order is overdue" msgstr "" -#: templates/js/translated/build.js:1674 templates/js/translated/stock.js:2090 +#: templates/js/translated/build.js:1674 templates/js/translated/stock.js:2172 msgid "No user information" msgstr "" @@ -7197,10 +7235,6 @@ msgstr "" msgid "Delete Supplier Part" msgstr "" -#: templates/js/translated/company.js:265 -msgid "Edit Company" -msgstr "" - #: templates/js/translated/company.js:286 msgid "Add new Company" msgstr "" @@ -7230,34 +7264,34 @@ msgid "No manufacturer parts found" msgstr "" #: templates/js/translated/company.js:497 -#: templates/js/translated/company.js:754 templates/js/translated/part.js:449 -#: templates/js/translated/part.js:534 +#: templates/js/translated/company.js:754 templates/js/translated/part.js:456 +#: templates/js/translated/part.js:541 msgid "Template part" msgstr "" #: templates/js/translated/company.js:501 -#: templates/js/translated/company.js:758 templates/js/translated/part.js:453 -#: templates/js/translated/part.js:538 +#: templates/js/translated/company.js:758 templates/js/translated/part.js:460 +#: templates/js/translated/part.js:545 msgid "Assembled part" msgstr "" -#: templates/js/translated/company.js:628 templates/js/translated/part.js:626 +#: templates/js/translated/company.js:628 templates/js/translated/part.js:633 msgid "No parameters found" msgstr "" -#: templates/js/translated/company.js:665 templates/js/translated/part.js:668 +#: templates/js/translated/company.js:665 templates/js/translated/part.js:675 msgid "Edit parameter" msgstr "" -#: templates/js/translated/company.js:666 templates/js/translated/part.js:669 +#: templates/js/translated/company.js:666 templates/js/translated/part.js:676 msgid "Delete parameter" msgstr "" -#: templates/js/translated/company.js:685 templates/js/translated/part.js:686 +#: templates/js/translated/company.js:685 templates/js/translated/part.js:693 msgid "Edit Parameter" msgstr "" -#: templates/js/translated/company.js:696 templates/js/translated/part.js:698 +#: templates/js/translated/company.js:696 templates/js/translated/part.js:705 msgid "Delete Parameter" msgstr "" @@ -7346,7 +7380,7 @@ msgid "NO" msgstr "" #: templates/js/translated/label.js:29 templates/js/translated/report.js:118 -#: templates/js/translated/stock.js:624 +#: templates/js/translated/stock.js:706 msgid "Select Stock Items" msgstr "" @@ -7502,11 +7536,11 @@ msgstr "" msgid "Export Order" msgstr "" -#: templates/js/translated/order.js:211 templates/js/translated/stock.js:423 +#: templates/js/translated/order.js:211 templates/js/translated/stock.js:505 msgid "Format" msgstr "" -#: templates/js/translated/order.js:212 templates/js/translated/stock.js:424 +#: templates/js/translated/order.js:212 templates/js/translated/stock.js:506 msgid "Select file format" msgstr "" @@ -7522,7 +7556,7 @@ msgstr "" msgid "Quantity to receive" msgstr "" -#: templates/js/translated/order.js:360 templates/js/translated/stock.js:1673 +#: templates/js/translated/order.js:360 templates/js/translated/stock.js:1755 msgid "Stock Status" msgstr "" @@ -7546,321 +7580,321 @@ msgstr "" msgid "Receive Purchase Order Items" msgstr "" -#: templates/js/translated/order.js:627 +#: templates/js/translated/order.js:627 templates/js/translated/part.js:746 msgid "No purchase orders found" msgstr "" -#: templates/js/translated/order.js:652 templates/js/translated/order.js:1063 +#: templates/js/translated/order.js:659 templates/js/translated/order.js:1062 msgid "Order is overdue" msgstr "" -#: templates/js/translated/order.js:772 templates/js/translated/order.js:1646 +#: templates/js/translated/order.js:771 templates/js/translated/order.js:1645 msgid "Edit Line Item" msgstr "" -#: templates/js/translated/order.js:784 templates/js/translated/order.js:1657 +#: templates/js/translated/order.js:783 templates/js/translated/order.js:1656 msgid "Delete Line Item" msgstr "" -#: templates/js/translated/order.js:823 +#: templates/js/translated/order.js:822 msgid "No line items found" msgstr "" -#: templates/js/translated/order.js:850 templates/js/translated/order.js:1467 +#: templates/js/translated/order.js:849 templates/js/translated/order.js:1466 msgid "Total" msgstr "" -#: templates/js/translated/order.js:904 templates/js/translated/order.js:1492 -#: templates/js/translated/part.js:1594 templates/js/translated/part.js:1805 +#: templates/js/translated/order.js:903 templates/js/translated/order.js:1491 +#: templates/js/translated/part.js:1775 templates/js/translated/part.js:1986 msgid "Unit Price" msgstr "" -#: templates/js/translated/order.js:919 templates/js/translated/order.js:1508 +#: templates/js/translated/order.js:918 templates/js/translated/order.js:1507 msgid "Total Price" msgstr "" -#: templates/js/translated/order.js:997 templates/js/translated/order.js:1617 +#: templates/js/translated/order.js:996 templates/js/translated/order.js:1616 msgid "Edit line item" msgstr "" -#: templates/js/translated/order.js:998 +#: templates/js/translated/order.js:997 msgid "Delete line item" msgstr "" -#: templates/js/translated/order.js:1002 +#: templates/js/translated/order.js:1001 templates/js/translated/part.js:878 msgid "Receive line item" msgstr "" -#: templates/js/translated/order.js:1039 +#: templates/js/translated/order.js:1038 msgid "No sales orders found" msgstr "" -#: templates/js/translated/order.js:1077 +#: templates/js/translated/order.js:1076 msgid "Invalid Customer" msgstr "" -#: templates/js/translated/order.js:1155 +#: templates/js/translated/order.js:1154 msgid "No sales order allocations found" msgstr "" -#: templates/js/translated/order.js:1248 +#: templates/js/translated/order.js:1247 msgid "Edit Stock Allocation" msgstr "" -#: templates/js/translated/order.js:1265 +#: templates/js/translated/order.js:1264 msgid "Confirm Delete Operation" msgstr "" -#: templates/js/translated/order.js:1266 +#: templates/js/translated/order.js:1265 msgid "Delete Stock Allocation" msgstr "" -#: templates/js/translated/order.js:1308 +#: templates/js/translated/order.js:1307 msgid "Stock location not specified" msgstr "" -#: templates/js/translated/order.js:1557 +#: templates/js/translated/order.js:1556 msgid "Fulfilled" msgstr "" -#: templates/js/translated/order.js:1601 +#: templates/js/translated/order.js:1600 msgid "Allocate serial numbers" msgstr "" -#: templates/js/translated/order.js:1607 +#: templates/js/translated/order.js:1606 msgid "Purchase stock" msgstr "" -#: templates/js/translated/order.js:1614 templates/js/translated/order.js:1793 +#: templates/js/translated/order.js:1613 templates/js/translated/order.js:1792 msgid "Calculate price" msgstr "" -#: templates/js/translated/order.js:1618 +#: templates/js/translated/order.js:1617 msgid "Delete line item " msgstr "" -#: templates/js/translated/order.js:1741 +#: templates/js/translated/order.js:1740 msgid "Allocate Stock Item" msgstr "" -#: templates/js/translated/order.js:1801 +#: templates/js/translated/order.js:1800 msgid "Update Unit Price" msgstr "" -#: templates/js/translated/order.js:1815 +#: templates/js/translated/order.js:1814 msgid "No matching line items" msgstr "" -#: templates/js/translated/part.js:51 +#: templates/js/translated/part.js:52 msgid "Part Attributes" msgstr "" -#: templates/js/translated/part.js:55 +#: templates/js/translated/part.js:56 msgid "Part Creation Options" msgstr "" -#: templates/js/translated/part.js:59 +#: templates/js/translated/part.js:60 msgid "Part Duplication Options" msgstr "" -#: templates/js/translated/part.js:63 +#: templates/js/translated/part.js:64 msgid "Supplier Options" msgstr "" -#: templates/js/translated/part.js:77 +#: templates/js/translated/part.js:78 msgid "Add Part Category" msgstr "" -#: templates/js/translated/part.js:166 +#: templates/js/translated/part.js:162 msgid "Create Initial Stock" msgstr "" -#: templates/js/translated/part.js:167 +#: templates/js/translated/part.js:163 msgid "Create an initial stock item for this part" msgstr "" -#: templates/js/translated/part.js:174 +#: templates/js/translated/part.js:170 msgid "Initial Stock Quantity" msgstr "" -#: templates/js/translated/part.js:175 +#: templates/js/translated/part.js:171 msgid "Specify initial stock quantity for this part" msgstr "" -#: templates/js/translated/part.js:182 +#: templates/js/translated/part.js:178 msgid "Select destination stock location" msgstr "" -#: templates/js/translated/part.js:193 +#: templates/js/translated/part.js:196 msgid "Copy Category Parameters" msgstr "" -#: templates/js/translated/part.js:194 +#: templates/js/translated/part.js:197 msgid "Copy parameter templates from selected part category" msgstr "" -#: templates/js/translated/part.js:202 +#: templates/js/translated/part.js:205 msgid "Add Supplier Data" msgstr "" -#: templates/js/translated/part.js:203 +#: templates/js/translated/part.js:206 msgid "Create initial supplier data for this part" msgstr "" -#: templates/js/translated/part.js:259 +#: templates/js/translated/part.js:262 msgid "Copy Image" msgstr "" -#: templates/js/translated/part.js:260 +#: templates/js/translated/part.js:263 msgid "Copy image from original part" msgstr "" -#: templates/js/translated/part.js:268 +#: templates/js/translated/part.js:271 msgid "Copy bill of materials from original part" msgstr "" -#: templates/js/translated/part.js:275 +#: templates/js/translated/part.js:278 msgid "Copy Parameters" msgstr "" -#: templates/js/translated/part.js:276 +#: templates/js/translated/part.js:279 msgid "Copy parameter data from original part" msgstr "" -#: templates/js/translated/part.js:289 +#: templates/js/translated/part.js:292 msgid "Parent part category" msgstr "" -#: templates/js/translated/part.js:333 +#: templates/js/translated/part.js:336 msgid "Edit Part" msgstr "" -#: templates/js/translated/part.js:335 +#: templates/js/translated/part.js:338 msgid "Part edited" msgstr "" -#: templates/js/translated/part.js:403 +#: templates/js/translated/part.js:410 msgid "You are subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:405 +#: templates/js/translated/part.js:412 msgid "You have subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:410 +#: templates/js/translated/part.js:417 msgid "Subscribe to notifications for this item" msgstr "" -#: templates/js/translated/part.js:412 +#: templates/js/translated/part.js:419 msgid "You have unsubscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:441 templates/js/translated/part.js:526 +#: templates/js/translated/part.js:448 templates/js/translated/part.js:533 msgid "Trackable part" msgstr "" -#: templates/js/translated/part.js:445 templates/js/translated/part.js:530 +#: templates/js/translated/part.js:452 templates/js/translated/part.js:537 msgid "Virtual part" msgstr "" -#: templates/js/translated/part.js:457 +#: templates/js/translated/part.js:464 msgid "Subscribed part" msgstr "" -#: templates/js/translated/part.js:461 +#: templates/js/translated/part.js:468 msgid "Salable part" msgstr "" -#: templates/js/translated/part.js:576 +#: templates/js/translated/part.js:583 msgid "No variants found" msgstr "" -#: templates/js/translated/part.js:765 +#: templates/js/translated/part.js:946 msgid "Delete part relationship" msgstr "" -#: templates/js/translated/part.js:789 +#: templates/js/translated/part.js:970 msgid "Delete Part Relationship" msgstr "" -#: templates/js/translated/part.js:856 templates/js/translated/part.js:1116 +#: templates/js/translated/part.js:1037 templates/js/translated/part.js:1297 msgid "No parts found" msgstr "" -#: templates/js/translated/part.js:1026 +#: templates/js/translated/part.js:1207 msgid "No category" msgstr "" -#: templates/js/translated/part.js:1049 +#: templates/js/translated/part.js:1230 #: templates/js/translated/table_filters.js:381 msgid "Low stock" msgstr "" -#: templates/js/translated/part.js:1140 templates/js/translated/part.js:1312 -#: templates/js/translated/stock.js:1832 +#: templates/js/translated/part.js:1321 templates/js/translated/part.js:1493 +#: templates/js/translated/stock.js:1914 msgid "Display as list" msgstr "" -#: templates/js/translated/part.js:1156 +#: templates/js/translated/part.js:1337 msgid "Display as grid" msgstr "" -#: templates/js/translated/part.js:1331 templates/js/translated/stock.js:1851 +#: templates/js/translated/part.js:1512 templates/js/translated/stock.js:1933 msgid "Display as tree" msgstr "" -#: templates/js/translated/part.js:1395 +#: templates/js/translated/part.js:1576 msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:1409 templates/js/translated/stock.js:1895 +#: templates/js/translated/part.js:1590 templates/js/translated/stock.js:1977 msgid "Path" msgstr "" -#: templates/js/translated/part.js:1453 +#: templates/js/translated/part.js:1634 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:1504 templates/js/translated/stock.js:816 +#: templates/js/translated/part.js:1685 templates/js/translated/stock.js:898 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:1505 templates/js/translated/stock.js:817 +#: templates/js/translated/part.js:1686 templates/js/translated/stock.js:899 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:1511 +#: templates/js/translated/part.js:1692 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:1533 +#: templates/js/translated/part.js:1714 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:1547 +#: templates/js/translated/part.js:1728 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:1572 +#: templates/js/translated/part.js:1753 #, python-brace-format msgid "No ${human_name} information found" msgstr "" -#: templates/js/translated/part.js:1627 +#: templates/js/translated/part.js:1808 #, python-brace-format msgid "Edit ${human_name}" msgstr "" -#: templates/js/translated/part.js:1628 +#: templates/js/translated/part.js:1809 #, python-brace-format msgid "Delete ${human_name}" msgstr "" -#: templates/js/translated/part.js:1729 +#: templates/js/translated/part.js:1910 msgid "Single Price" msgstr "" -#: templates/js/translated/part.js:1748 +#: templates/js/translated/part.js:1929 msgid "Single Price Difference" msgstr "" @@ -7930,276 +7964,300 @@ msgstr "" msgid "Sales Order(s) must be selected before printing report" msgstr "" -#: templates/js/translated/stock.js:70 +#: templates/js/translated/stock.js:71 msgid "Serialize Stock Item" msgstr "" -#: templates/js/translated/stock.js:88 templates/js/translated/stock.js:167 +#: templates/js/translated/stock.js:89 templates/js/translated/stock.js:168 msgid "Next available serial number" msgstr "" -#: templates/js/translated/stock.js:90 templates/js/translated/stock.js:169 +#: templates/js/translated/stock.js:91 templates/js/translated/stock.js:170 msgid "Latest serial number" msgstr "" -#: templates/js/translated/stock.js:104 +#: templates/js/translated/stock.js:105 msgid "Parent stock location" msgstr "" -#: templates/js/translated/stock.js:140 +#: templates/js/translated/stock.js:141 msgid "New Stock Location" msgstr "" -#: templates/js/translated/stock.js:180 +#: templates/js/translated/stock.js:181 msgid "This part cannot be serialized" msgstr "" -#: templates/js/translated/stock.js:219 +#: templates/js/translated/stock.js:220 msgid "Enter initial quantity for this stock item" msgstr "" -#: templates/js/translated/stock.js:225 +#: templates/js/translated/stock.js:226 msgid "Enter serial numbers for new stock (or leave blank)" msgstr "" -#: templates/js/translated/stock.js:368 +#: templates/js/translated/stock.js:369 msgid "Created new stock item" msgstr "" -#: templates/js/translated/stock.js:381 +#: templates/js/translated/stock.js:382 msgid "Created multiple stock items" msgstr "" -#: templates/js/translated/stock.js:420 +#: templates/js/translated/stock.js:407 +msgid "Find Serial Number" +msgstr "" + +#: templates/js/translated/stock.js:411 templates/js/translated/stock.js:412 +msgid "Enter serial number" +msgstr "" + +#: templates/js/translated/stock.js:428 +msgid "Enter a serial number" +msgstr "" + +#: templates/js/translated/stock.js:448 +msgid "No matching serial number" +msgstr "" + +#: templates/js/translated/stock.js:457 +msgid "More than one matching result found" +msgstr "" + +#: templates/js/translated/stock.js:502 msgid "Export Stock" msgstr "" -#: templates/js/translated/stock.js:431 +#: templates/js/translated/stock.js:513 msgid "Include Sublocations" msgstr "" -#: templates/js/translated/stock.js:432 +#: templates/js/translated/stock.js:514 msgid "Include stock items in sublocations" msgstr "" -#: templates/js/translated/stock.js:474 +#: templates/js/translated/stock.js:556 msgid "Transfer Stock" msgstr "" -#: templates/js/translated/stock.js:475 +#: templates/js/translated/stock.js:557 msgid "Move" msgstr "" -#: templates/js/translated/stock.js:481 +#: templates/js/translated/stock.js:563 msgid "Count Stock" msgstr "" -#: templates/js/translated/stock.js:482 +#: templates/js/translated/stock.js:564 msgid "Count" msgstr "" -#: templates/js/translated/stock.js:486 +#: templates/js/translated/stock.js:568 msgid "Remove Stock" msgstr "" -#: templates/js/translated/stock.js:487 +#: templates/js/translated/stock.js:569 msgid "Take" msgstr "" -#: templates/js/translated/stock.js:491 +#: templates/js/translated/stock.js:573 msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:492 users/models.py:200 +#: templates/js/translated/stock.js:574 users/models.py:200 msgid "Add" msgstr "" -#: templates/js/translated/stock.js:496 templates/stock_table.html:56 +#: templates/js/translated/stock.js:578 templates/stock_table.html:56 msgid "Delete Stock" msgstr "" -#: templates/js/translated/stock.js:585 +#: templates/js/translated/stock.js:667 msgid "Quantity cannot be adjusted for serialized stock" msgstr "" -#: templates/js/translated/stock.js:585 +#: templates/js/translated/stock.js:667 msgid "Specify stock quantity" msgstr "" -#: templates/js/translated/stock.js:625 +#: templates/js/translated/stock.js:707 msgid "You must select at least one available stock item" msgstr "" -#: templates/js/translated/stock.js:783 +#: templates/js/translated/stock.js:865 msgid "PASS" msgstr "" -#: templates/js/translated/stock.js:785 +#: templates/js/translated/stock.js:867 msgid "FAIL" msgstr "" -#: templates/js/translated/stock.js:790 +#: templates/js/translated/stock.js:872 msgid "NO RESULT" msgstr "" -#: templates/js/translated/stock.js:812 +#: templates/js/translated/stock.js:894 msgid "Add test result" msgstr "" -#: templates/js/translated/stock.js:838 +#: templates/js/translated/stock.js:920 msgid "No test results found" msgstr "" -#: templates/js/translated/stock.js:895 +#: templates/js/translated/stock.js:977 msgid "Test Date" msgstr "" -#: templates/js/translated/stock.js:1002 +#: templates/js/translated/stock.js:1084 msgid "In production" msgstr "" -#: templates/js/translated/stock.js:1006 +#: templates/js/translated/stock.js:1088 msgid "Installed in Stock Item" msgstr "" -#: templates/js/translated/stock.js:1010 +#: templates/js/translated/stock.js:1092 msgid "Shipped to customer" msgstr "" -#: templates/js/translated/stock.js:1014 +#: templates/js/translated/stock.js:1096 msgid "Assigned to Sales Order" msgstr "" -#: templates/js/translated/stock.js:1020 +#: templates/js/translated/stock.js:1102 msgid "No stock location set" msgstr "" -#: templates/js/translated/stock.js:1178 +#: templates/js/translated/stock.js:1260 msgid "Stock item is in production" msgstr "" -#: templates/js/translated/stock.js:1183 +#: templates/js/translated/stock.js:1265 msgid "Stock item assigned to sales order" msgstr "" -#: templates/js/translated/stock.js:1186 +#: templates/js/translated/stock.js:1268 msgid "Stock item assigned to customer" msgstr "" -#: templates/js/translated/stock.js:1190 +#: templates/js/translated/stock.js:1272 msgid "Stock item has expired" msgstr "" -#: templates/js/translated/stock.js:1192 +#: templates/js/translated/stock.js:1274 msgid "Stock item will expire soon" msgstr "" -#: templates/js/translated/stock.js:1196 +#: templates/js/translated/stock.js:1278 msgid "Stock item has been allocated" msgstr "" -#: templates/js/translated/stock.js:1200 +#: templates/js/translated/stock.js:1282 msgid "Stock item has been installed in another item" msgstr "" -#: templates/js/translated/stock.js:1207 +#: templates/js/translated/stock.js:1289 msgid "Stock item has been rejected" msgstr "" -#: templates/js/translated/stock.js:1209 +#: templates/js/translated/stock.js:1291 msgid "Stock item is lost" msgstr "" -#: templates/js/translated/stock.js:1211 +#: templates/js/translated/stock.js:1293 msgid "Stock item is destroyed" msgstr "" -#: templates/js/translated/stock.js:1215 +#: templates/js/translated/stock.js:1297 #: templates/js/translated/table_filters.js:183 msgid "Depleted" msgstr "" -#: templates/js/translated/stock.js:1265 +#: templates/js/translated/stock.js:1347 msgid "Stocktake" msgstr "" -#: templates/js/translated/stock.js:1338 +#: templates/js/translated/stock.js:1420 msgid "Supplier part not specified" msgstr "" -#: templates/js/translated/stock.js:1376 +#: templates/js/translated/stock.js:1458 msgid "No stock items matching query" msgstr "" -#: templates/js/translated/stock.js:1397 templates/js/translated/stock.js:1445 +#: templates/js/translated/stock.js:1479 templates/js/translated/stock.js:1527 msgid "items" msgstr "" -#: templates/js/translated/stock.js:1485 +#: templates/js/translated/stock.js:1567 msgid "batches" msgstr "" -#: templates/js/translated/stock.js:1512 +#: templates/js/translated/stock.js:1594 msgid "locations" msgstr "" -#: templates/js/translated/stock.js:1514 +#: templates/js/translated/stock.js:1596 msgid "Undefined location" msgstr "" -#: templates/js/translated/stock.js:1688 +#: templates/js/translated/stock.js:1770 msgid "Set Stock Status" msgstr "" -#: templates/js/translated/stock.js:1702 +#: templates/js/translated/stock.js:1784 msgid "Select Status Code" msgstr "" -#: templates/js/translated/stock.js:1703 +#: templates/js/translated/stock.js:1785 msgid "Status code must be selected" msgstr "" -#: templates/js/translated/stock.js:1927 +#: templates/js/translated/stock.js:2009 msgid "Invalid date" msgstr "" -#: templates/js/translated/stock.js:1974 +#: templates/js/translated/stock.js:2031 +msgid "Details" +msgstr "" + +#: templates/js/translated/stock.js:2056 msgid "Location no longer exists" msgstr "" -#: templates/js/translated/stock.js:1993 +#: templates/js/translated/stock.js:2075 msgid "Purchase order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2012 +#: templates/js/translated/stock.js:2094 msgid "Customer no longer exists" msgstr "" -#: templates/js/translated/stock.js:2030 +#: templates/js/translated/stock.js:2112 msgid "Stock item no longer exists" msgstr "" -#: templates/js/translated/stock.js:2053 +#: templates/js/translated/stock.js:2135 msgid "Added" msgstr "" -#: templates/js/translated/stock.js:2061 +#: templates/js/translated/stock.js:2143 msgid "Removed" msgstr "" -#: templates/js/translated/stock.js:2102 +#: templates/js/translated/stock.js:2184 msgid "Edit tracking entry" msgstr "" -#: templates/js/translated/stock.js:2103 +#: templates/js/translated/stock.js:2185 msgid "Delete tracking entry" msgstr "" -#: templates/js/translated/stock.js:2154 +#: templates/js/translated/stock.js:2236 msgid "No installed items" msgstr "" -#: templates/js/translated/stock.js:2205 +#: templates/js/translated/stock.js:2287 msgid "Uninstall Stock Item" msgstr "" diff --git a/InvenTree/locale/nl/LC_MESSAGES/django.po b/InvenTree/locale/nl/LC_MESSAGES/django.po index 5491eac020..7208eb54a1 100644 --- a/InvenTree/locale/nl/LC_MESSAGES/django.po +++ b/InvenTree/locale/nl/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-11-30 21:49+0000\n" -"PO-Revision-Date: 2021-11-30 21:51\n" +"POT-Creation-Date: 2021-12-03 10:37+0000\n" +"PO-Revision-Date: 2021-12-03 11:25\n" "Last-Translator: \n" "Language-Team: Dutch\n" "Language: nl_NL\n" @@ -70,15 +70,15 @@ msgstr "Categorie selecteren" #: InvenTree/forms.py:230 msgid "Email (again)" -msgstr "" +msgstr "E-mailadres (opnieuw)" #: InvenTree/forms.py:234 msgid "Email address confirmation" -msgstr "" +msgstr "E-mailadres bevestiging" #: InvenTree/forms.py:254 msgid "You must type the same email each time." -msgstr "" +msgstr "U moet elke keer hetzelfde e-mailadres invoeren." #: InvenTree/helpers.py:430 #, python-brace-format @@ -114,129 +114,130 @@ msgstr "Geen serienummers gevonden" msgid "Number of unique serial number ({s}) must match quantity ({q})" msgstr "Aantal unieke serienummer ({s}) moet overeenkomen met de hoeveelheid ({q})" -#: InvenTree/models.py:114 +#: InvenTree/models.py:120 msgid "Missing file" -msgstr "" +msgstr "Ontbrekend bestand" -#: InvenTree/models.py:115 +#: InvenTree/models.py:121 msgid "Missing external link" -msgstr "" +msgstr "Externe link ontbreekt" -#: InvenTree/models.py:126 stock/models.py:1874 +#: InvenTree/models.py:132 stock/models.py:1864 #: templates/js/translated/attachment.js:117 msgid "Attachment" msgstr "Bijlage" -#: InvenTree/models.py:127 +#: InvenTree/models.py:133 msgid "Select file to attach" msgstr "Bestand als bijlage selecteren" -#: InvenTree/models.py:133 company/models.py:131 company/models.py:348 +#: InvenTree/models.py:139 company/models.py:131 company/models.py:348 #: company/models.py:564 order/models.py:163 part/models.py:797 #: report/templates/report/inventree_build_order_base.html:165 #: templates/js/translated/company.js:537 -#: templates/js/translated/company.js:826 templates/js/translated/part.js:1077 +#: templates/js/translated/company.js:826 templates/js/translated/part.js:1258 msgid "Link" -msgstr "" +msgstr "Link" -#: InvenTree/models.py:134 build/models.py:330 part/models.py:798 -#: stock/models.py:540 +#: InvenTree/models.py:140 build/models.py:330 part/models.py:798 +#: stock/models.py:530 msgid "Link to external URL" msgstr "Link naar externe URL" -#: InvenTree/models.py:137 templates/js/translated/attachment.js:161 +#: InvenTree/models.py:143 templates/js/translated/attachment.js:161 msgid "Comment" msgstr "Opmerking" -#: InvenTree/models.py:137 +#: InvenTree/models.py:143 msgid "File comment" msgstr "Bijlage opmerking" -#: InvenTree/models.py:143 InvenTree/models.py:144 common/models.py:1185 +#: InvenTree/models.py:149 InvenTree/models.py:150 common/models.py:1185 #: common/models.py:1186 part/models.py:2205 part/models.py:2225 #: report/templates/report/inventree_test_report_base.html:96 -#: templates/js/translated/stock.js:2084 +#: templates/js/translated/stock.js:2166 msgid "User" msgstr "Gebruiker" -#: InvenTree/models.py:147 +#: InvenTree/models.py:153 msgid "upload date" msgstr "uploaddatum" -#: InvenTree/models.py:170 +#: InvenTree/models.py:176 msgid "Filename must not be empty" msgstr "Bestandsnaam mag niet leeg zijn" -#: InvenTree/models.py:193 +#: InvenTree/models.py:199 msgid "Invalid attachment directory" msgstr "Fout bijlagemap" -#: InvenTree/models.py:203 +#: InvenTree/models.py:209 #, python-brace-format msgid "Filename contains illegal character '{c}'" msgstr "Bestandsnaam bevat illegale teken '{c}'" -#: InvenTree/models.py:206 +#: InvenTree/models.py:212 msgid "Filename missing extension" msgstr "Bestandsnaam mist extensie" -#: InvenTree/models.py:213 +#: InvenTree/models.py:219 msgid "Attachment with this filename already exists" msgstr "Bijlage met deze bestandsnaam bestaat al" -#: InvenTree/models.py:220 +#: InvenTree/models.py:226 msgid "Error renaming file" msgstr "Fout bij hernoemen bestand" -#: InvenTree/models.py:255 +#: InvenTree/models.py:261 msgid "Invalid choice" msgstr "Ongeldige keuze" -#: InvenTree/models.py:271 InvenTree/models.py:272 company/models.py:415 +#: InvenTree/models.py:277 InvenTree/models.py:278 company/models.py:415 #: label/models.py:112 part/models.py:741 part/models.py:2389 -#: part/templates/part/detail.html:25 report/models.py:181 -#: templates/InvenTree/settings/settings.html:259 -#: templates/js/translated/company.js:638 templates/js/translated/part.js:499 -#: templates/js/translated/part.js:636 templates/js/translated/part.js:1384 -#: templates/js/translated/stock.js:1877 +#: report/models.py:181 templates/InvenTree/settings/settings.html:259 +#: templates/js/translated/company.js:638 templates/js/translated/part.js:506 +#: templates/js/translated/part.js:643 templates/js/translated/part.js:1565 +#: templates/js/translated/stock.js:1959 msgid "Name" msgstr "Naam" -#: InvenTree/models.py:278 build/models.py:207 +#: InvenTree/models.py:284 build/models.py:207 #: build/templates/build/detail.html:25 company/models.py:354 -#: company/models.py:570 company/templates/company/manufacturer_part.html:80 -#: company/templates/company/supplier_part.html:81 label/models.py:119 -#: order/models.py:161 part/models.py:764 part/templates/part/detail.html:30 +#: company/models.py:570 company/templates/company/company_base.html:68 +#: company/templates/company/manufacturer_part.html:76 +#: company/templates/company/supplier_part.html:73 label/models.py:119 +#: order/models.py:161 part/models.py:764 part/templates/part/category.html:70 +#: part/templates/part/part_base.html:163 #: part/templates/part/set_category.html:14 report/models.py:194 #: report/models.py:553 report/models.py:592 #: report/templates/report/inventree_build_order_base.html:118 -#: stock/templates/stock/location.html:108 templates/js/translated/bom.js:215 +#: stock/templates/stock/location.html:89 templates/js/translated/bom.js:215 #: templates/js/translated/bom.js:428 templates/js/translated/build.js:1621 #: templates/js/translated/company.js:345 #: templates/js/translated/company.js:548 -#: templates/js/translated/company.js:837 templates/js/translated/order.js:673 -#: templates/js/translated/order.js:855 templates/js/translated/order.js:1091 -#: templates/js/translated/part.js:558 templates/js/translated/part.js:752 -#: templates/js/translated/part.js:837 templates/js/translated/part.js:1007 -#: templates/js/translated/part.js:1403 templates/js/translated/part.js:1472 -#: templates/js/translated/stock.js:1151 templates/js/translated/stock.js:1889 -#: templates/js/translated/stock.js:1934 +#: templates/js/translated/company.js:837 templates/js/translated/order.js:680 +#: templates/js/translated/order.js:854 templates/js/translated/order.js:1090 +#: templates/js/translated/part.js:565 templates/js/translated/part.js:933 +#: templates/js/translated/part.js:1018 templates/js/translated/part.js:1188 +#: templates/js/translated/part.js:1584 templates/js/translated/part.js:1653 +#: templates/js/translated/stock.js:1233 templates/js/translated/stock.js:1971 +#: templates/js/translated/stock.js:2016 msgid "Description" msgstr "Omschrijving" -#: InvenTree/models.py:279 +#: InvenTree/models.py:285 msgid "Description (optional)" msgstr "Omschrijving (optioneel)" -#: InvenTree/models.py:287 +#: InvenTree/models.py:293 msgid "parent" msgstr "overkoepelend" -#: InvenTree/serializers.py:62 part/models.py:2674 +#: InvenTree/serializers.py:65 part/models.py:2674 msgid "Must be a valid number" msgstr "Moet een geldig nummer zijn" -#: InvenTree/serializers.py:285 +#: InvenTree/serializers.py:299 msgid "Filename" msgstr "Bestandsnaam" @@ -258,7 +259,7 @@ msgstr "Spaans" #: InvenTree/settings.py:674 msgid "Spanish (Mexican)" -msgstr "" +msgstr "Spaans (Mexicaans)" #: InvenTree/settings.py:675 msgid "French" @@ -294,7 +295,7 @@ msgstr "Pools" #: InvenTree/settings.py:683 msgid "Portugese" -msgstr "" +msgstr "Portugees" #: InvenTree/settings.py:684 msgid "Russian" @@ -361,7 +362,7 @@ msgid "Returned" msgstr "Retour" #: InvenTree/status_codes.py:143 -#: order/templates/order/sales_order_base.html:147 +#: order/templates/order/sales_order_base.html:148 msgid "Shipped" msgstr "Verzonden" @@ -566,7 +567,7 @@ msgid "Barcode associated with StockItem" msgstr "Barcode gekoppeld aan StockItem" #: build/forms.py:36 build/models.py:1283 -#: build/templates/build/build_base.html:124 +#: build/templates/build/build_base.html:132 #: build/templates/build/detail.html:35 common/models.py:1225 #: company/forms.py:42 company/templates/company/supplier_part.html:251 #: order/forms.py:102 order/models.py:729 order/models.py:991 @@ -574,26 +575,27 @@ msgstr "Barcode gekoppeld aan StockItem" #: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:223 #: part/forms.py:239 part/forms.py:255 part/models.py:2576 #: part/templates/part/bom_upload/match_parts.html:31 -#: part/templates/part/detail.html:1076 part/templates/part/detail.html:1162 +#: part/templates/part/detail.html:967 part/templates/part/detail.html:1053 #: part/templates/part/part_pricing.html:16 #: report/templates/report/inventree_build_order_base.html:114 #: report/templates/report/inventree_po_report.html:91 #: report/templates/report/inventree_so_report.html:91 #: report/templates/report/inventree_test_report_base.html:81 #: report/templates/report/inventree_test_report_base.html:139 -#: stock/forms.py:156 stock/serializers.py:286 -#: stock/templates/stock/item_base.html:256 +#: stock/forms.py:156 stock/serializers.py:291 +#: stock/templates/stock/item_base.html:174 #: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:443 #: templates/js/translated/build.js:235 templates/js/translated/build.js:435 #: templates/js/translated/build.js:629 templates/js/translated/build.js:639 #: templates/js/translated/build.js:1015 templates/js/translated/build.js:1362 #: templates/js/translated/model_renderers.js:99 -#: templates/js/translated/order.js:892 templates/js/translated/order.js:1205 -#: templates/js/translated/order.js:1283 templates/js/translated/order.js:1290 -#: templates/js/translated/order.js:1379 templates/js/translated/order.js:1479 -#: templates/js/translated/part.js:1615 templates/js/translated/part.js:1738 -#: templates/js/translated/part.js:1816 templates/js/translated/stock.js:377 -#: templates/js/translated/stock.js:2069 templates/js/translated/stock.js:2171 +#: templates/js/translated/order.js:891 templates/js/translated/order.js:1204 +#: templates/js/translated/order.js:1282 templates/js/translated/order.js:1289 +#: templates/js/translated/order.js:1378 templates/js/translated/order.js:1478 +#: templates/js/translated/part.js:843 templates/js/translated/part.js:1796 +#: templates/js/translated/part.js:1919 templates/js/translated/part.js:1997 +#: templates/js/translated/stock.js:378 templates/js/translated/stock.js:2151 +#: templates/js/translated/stock.js:2253 msgid "Quantity" msgstr "Aantal" @@ -602,8 +604,8 @@ msgid "Enter quantity for build output" msgstr "Voer hoeveelheid in voor build-output" #: build/forms.py:41 order/forms.py:96 stock/forms.py:95 -#: stock/serializers.py:307 templates/js/translated/stock.js:224 -#: templates/js/translated/stock.js:378 +#: stock/serializers.py:312 templates/js/translated/stock.js:225 +#: templates/js/translated/stock.js:379 msgid "Serial Numbers" msgstr "Serienummers" @@ -646,7 +648,7 @@ msgstr "Bouwopdracht" #: build/templates/build/index.html:8 build/templates/build/index.html:12 #: order/templates/order/sales_order_detail.html:42 #: order/templates/order/so_sidebar.html:7 -#: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:221 +#: part/templates/part/part_sidebar.html:20 templates/InvenTree/index.html:221 #: templates/InvenTree/search.html:145 #: templates/InvenTree/settings/sidebar.html:42 users/models.py:44 msgid "Build Orders" @@ -662,7 +664,7 @@ msgstr "Bouwopdracht referentie" #: report/templates/report/inventree_po_report.html:92 #: report/templates/report/inventree_so_report.html:92 #: templates/js/translated/bom.js:435 templates/js/translated/build.js:1119 -#: templates/js/translated/order.js:886 templates/js/translated/order.js:1473 +#: templates/js/translated/order.js:885 templates/js/translated/order.js:1472 msgid "Reference" msgstr "Referentie" @@ -670,7 +672,7 @@ msgstr "Referentie" msgid "Brief description of the build" msgstr "Korte beschrijving van de build" -#: build/models.py:219 build/templates/build/build_base.html:156 +#: build/models.py:219 build/templates/build/build_base.html:164 #: build/templates/build/detail.html:88 msgid "Parent Build" msgstr "Bovenliggende bouw" @@ -679,7 +681,7 @@ msgstr "Bovenliggende bouw" msgid "BuildOrder to which this build is allocated" msgstr "BuildOrder waaraan deze build is toegewezen" -#: build/models.py:225 build/templates/build/build_base.html:119 +#: build/models.py:225 build/templates/build/build_base.html:77 #: build/templates/build/detail.html:30 company/models.py:705 #: order/models.py:789 order/models.py:860 #: order/templates/order/order_wizard/select_parts.html:32 part/models.py:357 @@ -700,10 +702,10 @@ msgstr "BuildOrder waaraan deze build is toegewezen" #: templates/js/translated/build.js:988 templates/js/translated/build.js:1359 #: templates/js/translated/build.js:1626 templates/js/translated/company.js:489 #: templates/js/translated/company.js:746 templates/js/translated/order.js:426 -#: templates/js/translated/order.js:840 templates/js/translated/order.js:1457 -#: templates/js/translated/part.js:737 templates/js/translated/part.js:818 -#: templates/js/translated/part.js:985 templates/js/translated/stock.js:508 -#: templates/js/translated/stock.js:1108 templates/js/translated/stock.js:2159 +#: templates/js/translated/order.js:839 templates/js/translated/order.js:1456 +#: templates/js/translated/part.js:918 templates/js/translated/part.js:999 +#: templates/js/translated/part.js:1166 templates/js/translated/stock.js:590 +#: templates/js/translated/stock.js:1190 templates/js/translated/stock.js:2241 msgid "Part" msgstr "Onderdeel" @@ -741,7 +743,7 @@ msgstr "Bouwkwaliteit" #: build/models.py:267 msgid "Number of stock items to build" -msgstr "" +msgstr "Aantal voorraaditems om te bouwen" #: build/models.py:271 msgid "Completed items" @@ -751,7 +753,7 @@ msgstr "Voltooide voorraadartikelen" msgid "Number of stock items which have been completed" msgstr "Aantal voorraadartikelen die zijn voltooid" -#: build/models.py:277 part/templates/part/part_base.html:216 +#: build/models.py:277 part/templates/part/part_base.html:234 msgid "Build Status" msgstr "Bouwstatus" @@ -759,7 +761,7 @@ msgstr "Bouwstatus" msgid "Build status code" msgstr "Bouwstatuscode" -#: build/models.py:285 stock/models.py:544 +#: build/models.py:285 stock/models.py:534 msgid "Batch Code" msgstr "" @@ -768,7 +770,7 @@ msgid "Batch code for this build output" msgstr "" #: build/models.py:292 order/models.py:165 part/models.py:936 -#: part/templates/part/detail.html:86 templates/js/translated/order.js:1104 +#: part/templates/part/part_base.html:313 templates/js/translated/order.js:1103 msgid "Creation Date" msgstr "Aanmaakdatum" @@ -797,12 +799,12 @@ msgstr "" msgid "User who issued this build order" msgstr "Gebruiker die bouwopdracht heeft gegeven" -#: build/models.py:323 build/templates/build/build_base.html:177 +#: build/models.py:323 build/templates/build/build_base.html:185 #: build/templates/build/detail.html:116 order/models.py:179 -#: order/templates/order/order_base.html:154 -#: order/templates/order/sales_order_base.html:161 part/models.py:940 +#: order/templates/order/order_base.html:158 +#: order/templates/order/sales_order_base.html:162 part/models.py:940 #: report/templates/report/inventree_build_order_base.html:159 -#: templates/js/translated/build.js:1680 templates/js/translated/order.js:700 +#: templates/js/translated/build.js:1680 templates/js/translated/order.js:699 msgid "Responsible" msgstr "Verantwoordelijke" @@ -811,10 +813,10 @@ msgid "User responsible for this build order" msgstr "Gebruiker verantwoordelijk voor deze bouwopdracht" #: build/models.py:329 build/templates/build/detail.html:102 -#: company/templates/company/manufacturer_part.html:87 -#: company/templates/company/supplier_part.html:88 -#: part/templates/part/detail.html:80 stock/models.py:538 -#: stock/templates/stock/item_base.html:346 +#: company/templates/company/manufacturer_part.html:102 +#: company/templates/company/supplier_part.html:126 +#: part/templates/part/part_base.html:354 stock/models.py:528 +#: stock/templates/stock/item_base.html:374 msgid "External Link" msgstr "Externe Link" @@ -824,15 +826,15 @@ msgstr "Externe Link" #: order/models.py:183 order/models.py:738 #: order/templates/order/po_sidebar.html:11 #: order/templates/order/so_sidebar.html:11 part/models.py:925 -#: part/templates/part/detail.html:223 part/templates/part/part_sidebar.html:52 +#: part/templates/part/detail.html:116 part/templates/part/part_sidebar.html:50 #: report/templates/report/inventree_build_order_base.html:173 -#: stock/forms.py:154 stock/forms.py:204 stock/forms.py:238 stock/models.py:610 -#: stock/models.py:1774 stock/models.py:1880 stock/serializers.py:325 -#: stock/serializers.py:583 stock/templates/stock/stock_sidebar.html:21 +#: stock/forms.py:154 stock/forms.py:204 stock/forms.py:238 stock/models.py:600 +#: stock/models.py:1764 stock/models.py:1870 stock/serializers.py:330 +#: stock/serializers.py:588 stock/templates/stock/stock_sidebar.html:21 #: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:599 -#: templates/js/translated/company.js:842 templates/js/translated/order.js:985 -#: templates/js/translated/order.js:1583 templates/js/translated/stock.js:891 -#: templates/js/translated/stock.js:1370 +#: templates/js/translated/company.js:842 templates/js/translated/order.js:984 +#: templates/js/translated/order.js:1582 templates/js/translated/stock.js:973 +#: templates/js/translated/stock.js:1452 msgid "Notes" msgstr "Opmerkingen" @@ -877,7 +879,7 @@ msgstr "" msgid "Selected stock item not found in BOM" msgstr "" -#: build/models.py:1253 stock/templates/stock/item_base.html:318 +#: build/models.py:1253 stock/templates/stock/item_base.html:346 #: templates/InvenTree/search.html:143 templates/js/translated/build.js:1599 #: templates/navbar.html:33 msgid "Build" @@ -890,11 +892,11 @@ msgstr "Bouw om onderdelen toe te wijzen" #: build/models.py:1270 build/serializers.py:328 #: stock/templates/stock/item_base.html:8 #: stock/templates/stock/item_base.html:16 -#: stock/templates/stock/item_base.html:340 +#: stock/templates/stock/item_base.html:368 #: templates/js/translated/build.js:408 templates/js/translated/build.js:413 #: templates/js/translated/build.js:1361 templates/js/translated/build.js:1742 -#: templates/js/translated/order.js:1178 templates/js/translated/order.js:1183 -#: templates/js/translated/stock.js:2020 +#: templates/js/translated/order.js:1177 templates/js/translated/order.js:1182 +#: templates/js/translated/stock.js:2102 msgid "Stock Item" msgstr "Voorraadartikel" @@ -934,16 +936,16 @@ msgstr "" msgid "This build output is not fully allocated" msgstr "" -#: build/serializers.py:190 order/serializers.py:219 order/serializers.py:287 -#: stock/forms.py:236 stock/serializers.py:318 stock/serializers.py:685 -#: stock/templates/stock/item_base.html:286 +#: build/serializers.py:190 order/serializers.py:228 order/serializers.py:296 +#: stock/forms.py:236 stock/serializers.py:323 stock/serializers.py:690 +#: stock/templates/stock/item_base.html:314 #: templates/js/translated/barcode.js:384 #: templates/js/translated/barcode.js:557 templates/js/translated/build.js:420 #: templates/js/translated/build.js:1027 templates/js/translated/order.js:348 -#: templates/js/translated/order.js:1190 templates/js/translated/order.js:1298 -#: templates/js/translated/order.js:1304 templates/js/translated/part.js:181 -#: templates/js/translated/stock.js:510 templates/js/translated/stock.js:1251 -#: templates/js/translated/stock.js:1961 +#: templates/js/translated/order.js:1189 templates/js/translated/order.js:1297 +#: templates/js/translated/order.js:1303 templates/js/translated/part.js:177 +#: templates/js/translated/stock.js:592 templates/js/translated/stock.js:1333 +#: templates/js/translated/stock.js:2043 msgid "Location" msgstr "Locatie" @@ -951,13 +953,13 @@ msgstr "Locatie" msgid "Location for completed build outputs" msgstr "" -#: build/serializers.py:197 build/templates/build/build_base.html:129 +#: build/serializers.py:197 build/templates/build/build_base.html:137 #: build/templates/build/detail.html:63 order/models.py:572 -#: order/serializers.py:240 stock/templates/stock/item_base.html:409 +#: order/serializers.py:249 stock/templates/stock/item_base.html:180 #: templates/js/translated/barcode.js:140 templates/js/translated/build.js:1655 -#: templates/js/translated/order.js:431 templates/js/translated/order.js:677 -#: templates/js/translated/order.js:1096 templates/js/translated/stock.js:1226 -#: templates/js/translated/stock.js:2038 templates/js/translated/stock.js:2187 +#: templates/js/translated/order.js:431 templates/js/translated/order.js:1095 +#: templates/js/translated/stock.js:1308 templates/js/translated/stock.js:2120 +#: templates/js/translated/stock.js:2269 msgid "Status" msgstr "Status" @@ -986,8 +988,8 @@ msgstr "" msgid "Item must be in stock" msgstr "" -#: build/serializers.py:348 order/models.py:316 order/serializers.py:233 -#: stock/models.py:381 stock/models.py:1103 stock/serializers.py:298 +#: build/serializers.py:348 order/models.py:316 order/serializers.py:242 +#: stock/models.py:371 stock/models.py:1093 stock/serializers.py:303 msgid "Quantity must be greater than zero" msgstr "" @@ -1031,7 +1033,7 @@ msgid "Edit Build" msgstr "Bewerk Build" #: build/templates/build/build_base.html:56 -#: build/templates/build/build_base.html:207 build/views.py:56 +#: build/templates/build/build_base.html:215 build/views.py:56 msgid "Cancel Build" msgstr "Annuleer Build" @@ -1041,93 +1043,95 @@ msgstr "Verwijder bouw" #: build/templates/build/build_base.html:64 #: build/templates/build/build_base.html:65 -#: build/templates/build/build_base.html:223 +#: build/templates/build/build_base.html:231 msgid "Complete Build" msgstr "Voltooi Build" -#: build/templates/build/build_base.html:79 +#: build/templates/build/build_base.html:82 +msgid "Build Description" +msgstr "" + +#: build/templates/build/build_base.html:91 #, python-format msgid "This Build Order is allocated to Sales Order %(link)s" msgstr "Deze bouwopdracht is toegewezen aan verkooporder %(link)s" -#: build/templates/build/build_base.html:86 +#: build/templates/build/build_base.html:98 #, python-format msgid "This Build Order is a child of Build Order %(link)s" msgstr "Deze bouwopdracht is een onderdeel van bouwopdracht %(link)s" -#: build/templates/build/build_base.html:93 +#: build/templates/build/build_base.html:105 msgid "Build Order is ready to mark as completed" msgstr "Bouwopdracht is gereed om te markeren als voltooid" -#: build/templates/build/build_base.html:98 +#: build/templates/build/build_base.html:110 msgid "Build Order cannot be completed as outstanding outputs remain" msgstr "Bouwopdracht kan niet worden voltooid omdat openstaande outputs blijven" -#: build/templates/build/build_base.html:103 +#: build/templates/build/build_base.html:115 msgid "Required build quantity has not yet been completed" msgstr "Vereiste bouwhoeveelheid is nog niet bereikt" -#: build/templates/build/build_base.html:108 +#: build/templates/build/build_base.html:120 msgid "Stock has not been fully allocated to this Build Order" msgstr "Voorraad is niet volledig toegewezen aan deze bouwopdracht" -#: build/templates/build/build_base.html:138 +#: build/templates/build/build_base.html:146 #: build/templates/build/detail.html:132 -#: order/templates/order/order_base.html:140 -#: order/templates/order/sales_order_base.html:140 +#: order/templates/order/order_base.html:144 +#: order/templates/order/sales_order_base.html:141 #: report/templates/report/inventree_build_order_base.html:126 -#: templates/js/translated/build.js:1692 templates/js/translated/order.js:690 -#: templates/js/translated/order.js:1109 +#: templates/js/translated/build.js:1692 templates/js/translated/order.js:689 +#: templates/js/translated/order.js:1108 msgid "Target Date" msgstr "Streefdatum" -#: build/templates/build/build_base.html:143 +#: build/templates/build/build_base.html:151 #, python-format msgid "This build was due on %(target)s" msgstr "Deze bouw was verwacht op %(target)s" -#: build/templates/build/build_base.html:143 -#: build/templates/build/build_base.html:188 -#: order/templates/order/order_base.html:81 -#: order/templates/order/order_base.html:102 -#: order/templates/order/sales_order_base.html:78 -#: order/templates/order/sales_order_base.html:107 +#: build/templates/build/build_base.html:151 +#: build/templates/build/build_base.html:196 +#: order/templates/order/order_base.html:98 +#: order/templates/order/sales_order_base.html:93 #: templates/js/translated/table_filters.js:294 #: templates/js/translated/table_filters.js:322 #: templates/js/translated/table_filters.js:339 msgid "Overdue" msgstr "Achterstallig" -#: build/templates/build/build_base.html:150 +#: build/templates/build/build_base.html:158 #: build/templates/build/detail.html:68 build/templates/build/detail.html:143 #: templates/js/translated/build.js:1641 #: templates/js/translated/table_filters.js:304 msgid "Completed" msgstr "" -#: build/templates/build/build_base.html:163 +#: build/templates/build/build_base.html:171 #: build/templates/build/detail.html:95 order/models.py:857 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: order/templates/order/sales_order_ship.html:25 #: report/templates/report/inventree_build_order_base.html:136 #: report/templates/report/inventree_so_report.html:77 -#: stock/templates/stock/item_base.html:280 -#: templates/js/translated/order.js:1051 +#: stock/templates/stock/item_base.html:308 +#: templates/js/translated/order.js:1050 msgid "Sales Order" msgstr "Verkoop Order" -#: build/templates/build/build_base.html:170 +#: build/templates/build/build_base.html:178 #: build/templates/build/detail.html:109 #: report/templates/report/inventree_build_order_base.html:153 msgid "Issued By" msgstr "Uitgegeven door" -#: build/templates/build/build_base.html:215 +#: build/templates/build/build_base.html:223 msgid "Incomplete Outputs" msgstr "Onvolledige bouwuitvoer" -#: build/templates/build/build_base.html:216 +#: build/templates/build/build_base.html:224 msgid "Build Order cannot be completed as incomplete build outputs remain" msgstr "Bouwopdracht kan niet worden voltooid omdat onvolledige bouwuitvoer blijft bestaan" @@ -1188,7 +1192,7 @@ msgid "Stock can be taken from any available location." msgstr "" #: build/templates/build/detail.html:50 order/models.py:811 stock/forms.py:150 -#: templates/js/translated/order.js:432 templates/js/translated/order.js:974 +#: templates/js/translated/order.js:432 templates/js/translated/order.js:973 msgid "Destination" msgstr "" @@ -1201,16 +1205,16 @@ msgid "Allocated Parts" msgstr "" #: build/templates/build/detail.html:81 -#: stock/templates/stock/item_base.html:304 -#: templates/js/translated/stock.js:1240 templates/js/translated/stock.js:2194 +#: stock/templates/stock/item_base.html:332 +#: templates/js/translated/stock.js:1322 templates/js/translated/stock.js:2276 #: templates/js/translated/table_filters.js:151 #: templates/js/translated/table_filters.js:233 msgid "Batch" msgstr "Batch" #: build/templates/build/detail.html:127 -#: order/templates/order/order_base.html:127 -#: order/templates/order/sales_order_base.html:134 +#: order/templates/order/order_base.html:131 +#: order/templates/order/sales_order_base.html:135 #: templates/js/translated/build.js:1663 msgid "Created" msgstr "Gecreëerd" @@ -1254,7 +1258,7 @@ msgstr "" #: build/templates/build/detail.html:185 #: company/templates/company/detail.html:38 #: company/templates/company/detail.html:85 order/views.py:509 -#: part/templates/part/category.html:166 +#: part/templates/part/category.html:173 msgid "Order Parts" msgstr "Bestel onderdelen" @@ -1268,7 +1272,7 @@ msgstr "" #: build/templates/build/detail.html:208 msgid "Allocate selected items" -msgstr "" +msgstr "Geselecteerde items toewijzen" #: build/templates/build/detail.html:218 msgid "This Build Order does not have any associated untracked BOM items" @@ -1306,8 +1310,8 @@ msgstr "" #: order/templates/order/po_sidebar.html:9 #: order/templates/order/purchase_order_detail.html:60 #: order/templates/order/sales_order_detail.html:52 -#: order/templates/order/so_sidebar.html:9 part/templates/part/detail.html:300 -#: part/templates/part/part_sidebar.html:50 stock/templates/stock/item.html:95 +#: order/templates/order/so_sidebar.html:9 part/templates/part/detail.html:193 +#: part/templates/part/part_sidebar.html:48 stock/templates/stock/item.html:95 #: stock/templates/stock/stock_sidebar.html:19 msgid "Attachments" msgstr "Bijlagen" @@ -1323,7 +1327,7 @@ msgstr "Bouw notities" #: order/templates/order/purchase_order_detail.html:108 #: order/templates/order/sales_order_detail.html:72 #: order/templates/order/sales_order_detail.html:99 -#: part/templates/part/detail.html:227 stock/templates/stock/item.html:115 +#: part/templates/part/detail.html:120 stock/templates/stock/item.html:115 #: stock/templates/stock/item.html:205 msgid "Edit Notes" msgstr "Notities Bewerken" @@ -1336,7 +1340,7 @@ msgstr "" msgid "All untracked stock items have been allocated" msgstr "" -#: build/templates/build/index.html:18 part/templates/part/detail.html:407 +#: build/templates/build/index.html:18 part/templates/part/detail.html:300 msgid "New Build Order" msgstr "" @@ -1380,7 +1384,7 @@ msgstr "" msgid "Maximum output quantity is " msgstr "" -#: build/views.py:122 stock/serializers.py:356 stock/views.py:1290 +#: build/views.py:122 stock/serializers.py:361 stock/views.py:1290 msgid "Serial numbers already exist" msgstr "" @@ -1631,11 +1635,11 @@ msgstr "" #: templates/js/translated/table_filters.js:168 #: templates/js/translated/table_filters.js:385 msgid "Assembly" -msgstr "" +msgstr "Samenstelling" #: common/models.py:711 msgid "Parts can be assembled from other components by default" -msgstr "" +msgstr "Onderdelen kunnen standaard vanuit andere delen worden samengesteld" #: common/models.py:717 part/models.py:894 #: templates/js/translated/table_filters.js:389 @@ -1675,7 +1679,7 @@ msgid "Parts are trackable by default" msgstr "" #: common/models.py:745 part/models.py:920 -#: part/templates/part/part_base.html:144 +#: part/templates/part/part_base.html:147 #: templates/js/translated/table_filters.js:42 msgid "Virtual" msgstr "" @@ -2142,7 +2146,7 @@ msgstr "" #: common/models.py:1233 company/serializers.py:264 #: company/templates/company/supplier_part.html:256 -#: templates/js/translated/part.js:1620 +#: templates/js/translated/part.js:852 templates/js/translated/part.js:1801 msgid "Price" msgstr "" @@ -2206,7 +2210,7 @@ msgstr "" msgid "Description of the company" msgstr "" -#: company/models.py:112 company/templates/company/company_base.html:70 +#: company/models.py:112 company/templates/company/company_base.html:97 #: templates/js/translated/company.js:349 msgid "Website" msgstr "" @@ -2215,7 +2219,7 @@ msgstr "" msgid "Company website URL" msgstr "" -#: company/models.py:117 company/templates/company/company_base.html:88 +#: company/models.py:117 company/templates/company/company_base.html:115 msgid "Address" msgstr "" @@ -2231,7 +2235,7 @@ msgstr "" msgid "Contact phone number" msgstr "" -#: company/models.py:125 company/templates/company/company_base.html:102 +#: company/models.py:125 company/templates/company/company_base.html:129 #: templates/InvenTree/settings/user.html:47 msgid "Email" msgstr "" @@ -2240,7 +2244,7 @@ msgstr "" msgid "Contact email address" msgstr "" -#: company/models.py:128 company/templates/company/company_base.html:109 +#: company/models.py:128 company/templates/company/company_base.html:136 msgid "Contact" msgstr "" @@ -2274,14 +2278,14 @@ msgstr "" #: company/models.py:148 msgid "is manufacturer" -msgstr "" +msgstr "is fabrikant" #: company/models.py:148 msgid "Does this company manufacture parts?" -msgstr "" +msgstr "Fabriceert dit bedrijf onderdelen?" #: company/models.py:152 company/serializers.py:270 -#: company/templates/company/company_base.html:76 stock/serializers.py:172 +#: company/templates/company/company_base.html:103 stock/serializers.py:177 msgid "Currency" msgstr "" @@ -2289,8 +2293,8 @@ msgstr "" msgid "Default currency used for this company" msgstr "" -#: company/models.py:320 company/models.py:535 stock/models.py:484 -#: stock/templates/stock/item_base.html:224 +#: company/models.py:320 company/models.py:535 stock/models.py:474 +#: stock/templates/stock/item_base.html:135 msgid "Base Part" msgstr "" @@ -2298,46 +2302,46 @@ msgstr "" msgid "Select part" msgstr "" -#: company/models.py:335 company/templates/company/company_base.html:116 -#: company/templates/company/manufacturer_part.html:93 -#: company/templates/company/supplier_part.html:104 -#: stock/templates/stock/item_base.html:353 +#: company/models.py:335 company/templates/company/company_base.html:73 +#: company/templates/company/manufacturer_part.html:91 +#: company/templates/company/supplier_part.html:97 +#: stock/templates/stock/item_base.html:381 #: templates/js/translated/company.js:333 #: templates/js/translated/company.js:514 -#: templates/js/translated/company.js:797 templates/js/translated/part.js:229 +#: templates/js/translated/company.js:797 templates/js/translated/part.js:232 msgid "Manufacturer" -msgstr "" +msgstr "Fabrikant" -#: company/models.py:336 templates/js/translated/part.js:230 +#: company/models.py:336 templates/js/translated/part.js:233 msgid "Select manufacturer" -msgstr "" +msgstr "Fabrikant selecteren" -#: company/models.py:342 company/templates/company/manufacturer_part.html:97 -#: company/templates/company/supplier_part.html:112 +#: company/models.py:342 company/templates/company/manufacturer_part.html:96 +#: company/templates/company/supplier_part.html:105 #: templates/js/translated/company.js:530 -#: templates/js/translated/company.js:815 templates/js/translated/order.js:874 -#: templates/js/translated/part.js:240 +#: templates/js/translated/company.js:815 templates/js/translated/order.js:873 +#: templates/js/translated/part.js:243 templates/js/translated/part.js:832 msgid "MPN" -msgstr "" +msgstr "MPN" -#: company/models.py:343 templates/js/translated/part.js:241 +#: company/models.py:343 templates/js/translated/part.js:244 msgid "Manufacturer Part Number" -msgstr "" +msgstr "Fabrikant artikel nummer (MPN)" #: company/models.py:349 msgid "URL for external manufacturer part link" -msgstr "" +msgstr "URL voor externe link van het fabrikant onderdeel" #: company/models.py:355 msgid "Manufacturer part description" -msgstr "" +msgstr "Omschrijving onderdeel fabrikant" #: company/models.py:409 company/models.py:558 #: company/templates/company/manufacturer_part.html:6 #: company/templates/company/manufacturer_part.html:23 -#: stock/templates/stock/item_base.html:363 +#: stock/templates/stock/item_base.html:391 msgid "Manufacturer Part" -msgstr "" +msgstr "Fabrikant onderdeel" #: company/models.py:416 msgid "Parameter name" @@ -2345,8 +2349,8 @@ msgstr "" #: company/models.py:422 #: report/templates/report/inventree_test_report_base.html:95 -#: stock/models.py:1867 templates/js/translated/company.js:644 -#: templates/js/translated/part.js:645 templates/js/translated/stock.js:878 +#: stock/models.py:1857 templates/js/translated/company.js:644 +#: templates/js/translated/part.js:652 templates/js/translated/stock.js:960 msgid "Value" msgstr "" @@ -2355,9 +2359,9 @@ msgid "Parameter value" msgstr "" #: company/models.py:429 part/models.py:882 part/models.py:2397 -#: part/templates/part/detail.html:59 +#: part/templates/part/part_base.html:288 #: templates/InvenTree/settings/settings.html:264 -#: templates/js/translated/company.js:650 templates/js/translated/part.js:651 +#: templates/js/translated/company.js:650 templates/js/translated/part.js:658 msgid "Units" msgstr "" @@ -2367,36 +2371,36 @@ msgstr "" #: company/models.py:502 msgid "Linked manufacturer part must reference the same base part" -msgstr "" +msgstr "Gekoppeld fabrikant onderdeel moet verwijzen naar hetzelfde basis onderdeel" -#: company/models.py:545 company/templates/company/company_base.html:121 -#: company/templates/company/supplier_part.html:94 order/models.py:263 -#: order/templates/order/order_base.html:108 +#: company/models.py:545 company/templates/company/company_base.html:78 +#: company/templates/company/supplier_part.html:87 order/models.py:263 +#: order/templates/order/order_base.html:112 #: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:219 -#: part/bom.py:247 stock/templates/stock/item_base.html:370 +#: part/bom.py:247 stock/templates/stock/item_base.html:398 #: templates/js/translated/company.js:337 -#: templates/js/translated/company.js:771 templates/js/translated/order.js:660 -#: templates/js/translated/part.js:210 +#: templates/js/translated/company.js:771 templates/js/translated/order.js:667 +#: templates/js/translated/part.js:213 templates/js/translated/part.js:800 msgid "Supplier" msgstr "" -#: company/models.py:546 templates/js/translated/part.js:211 +#: company/models.py:546 templates/js/translated/part.js:214 msgid "Select supplier" msgstr "" -#: company/models.py:551 company/templates/company/supplier_part.html:98 -#: part/bom.py:220 part/bom.py:248 templates/js/translated/order.js:861 -#: templates/js/translated/part.js:221 +#: company/models.py:551 company/templates/company/supplier_part.html:91 +#: part/bom.py:220 part/bom.py:248 templates/js/translated/order.js:860 +#: templates/js/translated/part.js:224 templates/js/translated/part.js:818 msgid "SKU" msgstr "" -#: company/models.py:552 templates/js/translated/part.js:222 +#: company/models.py:552 templates/js/translated/part.js:225 msgid "Supplier stock keeping unit" msgstr "" #: company/models.py:559 msgid "Select manufacturer part" -msgstr "" +msgstr "Selecteer fabrikant onderdeel" #: company/models.py:565 msgid "URL for external supplier part link" @@ -2406,7 +2410,7 @@ msgstr "" msgid "Supplier part description" msgstr "" -#: company/models.py:576 company/templates/company/supplier_part.html:126 +#: company/models.py:576 company/templates/company/supplier_part.html:119 #: part/models.py:2588 report/templates/report/inventree_po_report.html:93 #: report/templates/report/inventree_so_report.html:93 msgid "Note" @@ -2420,9 +2424,9 @@ msgstr "" msgid "Minimum charge (e.g. stocking fee)" msgstr "" -#: company/models.py:582 company/templates/company/supplier_part.html:119 -#: stock/models.py:507 stock/templates/stock/item_base.html:311 -#: templates/js/translated/company.js:847 templates/js/translated/stock.js:1366 +#: company/models.py:582 company/templates/company/supplier_part.html:112 +#: stock/models.py:497 stock/templates/stock/item_base.html:339 +#: templates/js/translated/company.js:847 templates/js/translated/stock.js:1448 msgid "Packaging" msgstr "" @@ -2457,43 +2461,56 @@ msgstr "" msgid "Create Purchase Order" msgstr "" -#: company/templates/company/company_base.html:27 +#: company/templates/company/company_base.html:26 +msgid "Company actions" +msgstr "" + +#: company/templates/company/company_base.html:31 msgid "Edit company information" msgstr "" #: company/templates/company/company_base.html:32 -#: company/templates/company/company_base.html:148 +#: templates/js/translated/company.js:265 +msgid "Edit Company" +msgstr "" + +#: company/templates/company/company_base.html:36 +msgid "Delete company" +msgstr "" + +#: company/templates/company/company_base.html:37 +#: company/templates/company/company_base.html:159 msgid "Delete Company" msgstr "" -#: company/templates/company/company_base.html:48 +#: company/templates/company/company_base.html:53 #: part/templates/part/part_thumb.html:12 msgid "Upload new image" msgstr "" -#: company/templates/company/company_base.html:51 +#: company/templates/company/company_base.html:56 #: part/templates/part/part_thumb.html:14 msgid "Download image from URL" msgstr "" -#: company/templates/company/company_base.html:81 -msgid "Uses default currency" -msgstr "" - -#: company/templates/company/company_base.html:95 -msgid "Phone" -msgstr "" - -#: company/templates/company/company_base.html:126 order/models.py:567 -#: order/templates/order/sales_order_base.html:114 stock/models.py:525 -#: stock/models.py:526 stock/templates/stock/item_base.html:263 -#: templates/js/translated/company.js:329 templates/js/translated/order.js:1073 -#: templates/js/translated/stock.js:2002 +#: company/templates/company/company_base.html:83 order/models.py:567 +#: order/templates/order/sales_order_base.html:115 stock/models.py:515 +#: stock/models.py:516 stock/templates/stock/item_base.html:291 +#: templates/js/translated/company.js:329 templates/js/translated/order.js:1072 +#: templates/js/translated/stock.js:2084 msgid "Customer" msgstr "" -#: company/templates/company/company_base.html:194 -#: part/templates/part/part_base.html:342 +#: company/templates/company/company_base.html:108 +msgid "Uses default currency" +msgstr "" + +#: company/templates/company/company_base.html:122 +msgid "Phone" +msgstr "" + +#: company/templates/company/company_base.html:205 +#: part/templates/part/part_base.html:471 msgid "Upload Image" msgstr "" @@ -2509,23 +2526,23 @@ msgid "Create new supplier part" msgstr "" #: company/templates/company/detail.html:20 -#: company/templates/company/manufacturer_part.html:112 -#: part/templates/part/detail.html:440 +#: company/templates/company/manufacturer_part.html:118 +#: part/templates/part/detail.html:333 msgid "New Supplier Part" msgstr "" #: company/templates/company/detail.html:32 #: company/templates/company/detail.html:79 -#: company/templates/company/manufacturer_part.html:121 -#: company/templates/company/manufacturer_part.html:150 -#: part/templates/part/category.html:160 part/templates/part/detail.html:449 -#: part/templates/part/detail.html:477 +#: company/templates/company/manufacturer_part.html:127 +#: company/templates/company/manufacturer_part.html:156 +#: part/templates/part/category.html:167 part/templates/part/detail.html:342 +#: part/templates/part/detail.html:370 msgid "Options" msgstr "" #: company/templates/company/detail.html:37 #: company/templates/company/detail.html:84 -#: part/templates/part/category.html:166 +#: part/templates/part/category.html:173 msgid "Order parts" msgstr "" @@ -2541,15 +2558,15 @@ msgstr "" #: company/templates/company/detail.html:62 templates/InvenTree/search.html:109 msgid "Manufacturer Parts" -msgstr "" +msgstr "Fabrikant onderdelen" #: company/templates/company/detail.html:66 msgid "Create new manufacturer part" -msgstr "" +msgstr "Maak nieuw fabrikant onderdeel" -#: company/templates/company/detail.html:67 part/templates/part/detail.html:467 +#: company/templates/company/detail.html:67 part/templates/part/detail.html:360 msgid "New Manufacturer Part" -msgstr "" +msgstr "Nieuw fabrikant onderdeel" #: company/templates/company/detail.html:107 msgid "Supplier Stock" @@ -2561,7 +2578,7 @@ msgstr "" #: order/templates/order/order_base.html:13 #: order/templates/order/purchase_orders.html:8 #: order/templates/order/purchase_orders.html:12 -#: part/templates/part/detail.html:171 part/templates/part/part_sidebar.html:35 +#: part/templates/part/detail.html:64 part/templates/part/part_sidebar.html:33 #: templates/InvenTree/index.html:252 templates/InvenTree/search.html:203 #: templates/InvenTree/settings/sidebar.html:44 templates/navbar.html:45 #: users/models.py:45 @@ -2583,7 +2600,7 @@ msgstr "" #: order/templates/order/sales_order_base.html:13 #: order/templates/order/sales_orders.html:8 #: order/templates/order/sales_orders.html:15 -#: part/templates/part/detail.html:194 part/templates/part/part_sidebar.html:39 +#: part/templates/part/detail.html:87 part/templates/part/part_sidebar.html:37 #: templates/InvenTree/index.html:283 templates/InvenTree/search.html:223 #: templates/InvenTree/settings/sidebar.html:46 templates/navbar.html:56 #: users/models.py:46 @@ -2610,14 +2627,14 @@ msgid "Company Notes" msgstr "" #: company/templates/company/detail.html:383 -#: company/templates/company/manufacturer_part.html:209 -#: part/templates/part/detail.html:520 +#: company/templates/company/manufacturer_part.html:215 +#: part/templates/part/detail.html:413 msgid "Delete Supplier Parts?" msgstr "" #: company/templates/company/detail.html:384 -#: company/templates/company/manufacturer_part.html:210 -#: part/templates/part/detail.html:521 +#: company/templates/company/manufacturer_part.html:216 +#: part/templates/part/detail.html:414 msgid "All selected supplier parts will be deleted" msgstr "" @@ -2629,85 +2646,85 @@ msgstr "" #: part/templates/part/prices.html:167 templates/InvenTree/search.html:184 #: templates/navbar.html:44 msgid "Manufacturers" -msgstr "" +msgstr "Fabrikanten" #: company/templates/company/manufacturer_part.html:35 #: company/templates/company/supplier_part.html:34 #: company/templates/company/supplier_part.html:159 -#: part/templates/part/detail.html:174 part/templates/part/part_base.html:76 +#: part/templates/part/detail.html:67 part/templates/part/part_base.html:76 msgid "Order part" msgstr "" #: company/templates/company/manufacturer_part.html:40 #: templates/js/translated/company.js:562 msgid "Edit manufacturer part" -msgstr "" +msgstr "Fabrikant onderdeel bewerken" #: company/templates/company/manufacturer_part.html:44 #: templates/js/translated/company.js:563 msgid "Delete manufacturer part" -msgstr "" +msgstr "Fabrikant onderdeel verwijderen" -#: company/templates/company/manufacturer_part.html:70 -#: company/templates/company/supplier_part.html:71 +#: company/templates/company/manufacturer_part.html:66 +#: company/templates/company/supplier_part.html:63 msgid "Internal Part" msgstr "" -#: company/templates/company/manufacturer_part.html:108 +#: company/templates/company/manufacturer_part.html:114 #: company/templates/company/supplier_part.html:15 company/views.py:49 -#: part/templates/part/part_sidebar.html:33 part/templates/part/prices.html:163 +#: part/templates/part/part_sidebar.html:31 part/templates/part/prices.html:163 #: templates/InvenTree/search.html:194 templates/navbar.html:43 msgid "Suppliers" msgstr "" -#: company/templates/company/manufacturer_part.html:123 -#: part/templates/part/detail.html:451 +#: company/templates/company/manufacturer_part.html:129 +#: part/templates/part/detail.html:344 msgid "Delete supplier parts" msgstr "" -#: company/templates/company/manufacturer_part.html:123 -#: company/templates/company/manufacturer_part.html:152 -#: company/templates/company/manufacturer_part.html:248 -#: part/templates/part/detail.html:451 part/templates/part/detail.html:479 +#: company/templates/company/manufacturer_part.html:129 +#: company/templates/company/manufacturer_part.html:158 +#: company/templates/company/manufacturer_part.html:254 +#: part/templates/part/detail.html:344 part/templates/part/detail.html:372 #: templates/js/translated/company.js:425 templates/js/translated/helpers.js:31 #: users/models.py:204 msgid "Delete" msgstr "" -#: company/templates/company/manufacturer_part.html:137 +#: company/templates/company/manufacturer_part.html:143 #: company/templates/company/manufacturer_part_sidebar.html:5 #: part/templates/part/category_sidebar.html:17 -#: part/templates/part/detail.html:277 part/templates/part/part_sidebar.html:10 +#: part/templates/part/detail.html:170 part/templates/part/part_sidebar.html:8 msgid "Parameters" msgstr "" -#: company/templates/company/manufacturer_part.html:141 -#: part/templates/part/detail.html:282 +#: company/templates/company/manufacturer_part.html:147 +#: part/templates/part/detail.html:175 #: templates/InvenTree/settings/category.html:12 #: templates/InvenTree/settings/part.html:65 msgid "New Parameter" msgstr "" -#: company/templates/company/manufacturer_part.html:152 +#: company/templates/company/manufacturer_part.html:158 msgid "Delete parameters" msgstr "" -#: company/templates/company/manufacturer_part.html:185 -#: part/templates/part/detail.html:976 +#: company/templates/company/manufacturer_part.html:191 +#: part/templates/part/detail.html:867 msgid "Add Parameter" msgstr "" -#: company/templates/company/manufacturer_part.html:233 +#: company/templates/company/manufacturer_part.html:239 msgid "Selected parameters will be deleted" msgstr "" -#: company/templates/company/manufacturer_part.html:245 +#: company/templates/company/manufacturer_part.html:251 msgid "Delete Parameters" msgstr "" #: company/templates/company/sidebar.html:6 msgid "Manufactured Parts" -msgstr "" +msgstr "Gefabriceerde onderdelen" #: company/templates/company/sidebar.html:10 msgid "Supplied Parts" @@ -2722,9 +2739,9 @@ msgid "Assigned Stock Items" msgstr "" #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 stock/models.py:492 -#: stock/templates/stock/item_base.html:375 -#: templates/js/translated/company.js:787 templates/js/translated/stock.js:1323 +#: company/templates/company/supplier_part.html:24 stock/models.py:482 +#: stock/templates/stock/item_base.html:403 +#: templates/js/translated/company.js:787 templates/js/translated/stock.js:1405 msgid "Supplier Part" msgstr "" @@ -2744,13 +2761,13 @@ msgid "Supplier Part Stock" msgstr "" #: company/templates/company/supplier_part.html:141 -#: part/templates/part/detail.html:127 stock/templates/stock/location.html:147 +#: part/templates/part/detail.html:20 stock/templates/stock/location.html:162 msgid "Create new stock item" msgstr "" #: company/templates/company/supplier_part.html:142 -#: part/templates/part/detail.html:128 stock/templates/stock/location.html:148 -#: templates/js/translated/stock.js:354 +#: part/templates/part/detail.html:21 stock/templates/stock/location.html:163 +#: templates/js/translated/stock.js:355 msgid "New Stock Item" msgstr "" @@ -2760,7 +2777,7 @@ msgid "Supplier Part Orders" msgstr "" #: company/templates/company/supplier_part.html:160 -#: part/templates/part/detail.html:175 +#: part/templates/part/detail.html:68 msgid "Order Part" msgstr "" @@ -2796,15 +2813,15 @@ msgid "Delete price break" msgstr "" #: company/templates/company/supplier_part_navbar.html:15 -#: part/templates/part/part_sidebar.html:16 +#: part/templates/part/part_sidebar.html:14 #: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:14 #: stock/templates/stock/stock_app_base.html:10 #: templates/InvenTree/search.html:156 #: templates/InvenTree/settings/sidebar.html:40 -#: templates/js/translated/bom.js:216 templates/js/translated/part.js:427 -#: templates/js/translated/part.js:562 templates/js/translated/part.js:878 -#: templates/js/translated/part.js:1039 templates/js/translated/stock.js:509 -#: templates/js/translated/stock.js:1162 templates/navbar.html:26 +#: templates/js/translated/bom.js:216 templates/js/translated/part.js:434 +#: templates/js/translated/part.js:569 templates/js/translated/part.js:1059 +#: templates/js/translated/part.js:1220 templates/js/translated/stock.js:591 +#: templates/js/translated/stock.js:1244 templates/navbar.html:26 msgid "Stock" msgstr "" @@ -2818,16 +2835,16 @@ msgid "Supplier Part Pricing" msgstr "" #: company/templates/company/supplier_part_navbar.html:29 -#: part/templates/part/part_sidebar.html:30 +#: part/templates/part/part_sidebar.html:28 msgid "Pricing" msgstr "" #: company/templates/company/supplier_part_sidebar.html:5 -#: stock/templates/stock/location.html:118 -#: stock/templates/stock/location.html:132 -#: stock/templates/stock/location.html:144 +#: stock/templates/stock/location.html:133 +#: stock/templates/stock/location.html:147 +#: stock/templates/stock/location.html:159 #: stock/templates/stock/location_sidebar.html:7 -#: templates/InvenTree/search.html:158 templates/js/translated/stock.js:1901 +#: templates/InvenTree/search.html:158 templates/js/translated/stock.js:1983 #: templates/stats.html:93 templates/stats.html:102 users/models.py:43 msgid "Stock Items" msgstr "" @@ -2838,7 +2855,7 @@ msgstr "" #: company/views.py:56 msgid "New Manufacturer" -msgstr "" +msgstr "Nieuwe fabrikant" #: company/views.py:61 templates/InvenTree/search.html:214 #: templates/navbar.html:55 @@ -2947,7 +2964,7 @@ msgstr "" msgid "Place order" msgstr "" -#: order/forms.py:37 order/templates/order/order_base.html:59 +#: order/forms.py:37 order/templates/order/order_base.html:60 msgid "Mark order as complete" msgstr "" @@ -3000,8 +3017,8 @@ msgstr "" msgid "Company from which the items are being ordered" msgstr "" -#: order/models.py:267 order/templates/order/order_base.html:114 -#: templates/js/translated/order.js:669 +#: order/models.py:267 order/templates/order/order_base.html:118 +#: templates/js/translated/order.js:676 msgid "Supplier Reference" msgstr "" @@ -3061,7 +3078,7 @@ msgstr "" msgid "Target date for order completion. Order will be overdue after this date." msgstr "" -#: order/models.py:582 templates/js/translated/order.js:1114 +#: order/models.py:582 templates/js/translated/order.js:1113 msgid "Shipment Date" msgstr "" @@ -3086,16 +3103,16 @@ msgid "Line item notes" msgstr "" #: order/models.py:768 order/models.py:856 -#: templates/js/translated/order.js:1166 +#: templates/js/translated/order.js:1165 msgid "Order" msgstr "" #: order/models.py:769 order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_po_report.html:77 -#: stock/templates/stock/item_base.html:325 -#: templates/js/translated/order.js:638 templates/js/translated/stock.js:1300 -#: templates/js/translated/stock.js:1983 +#: stock/templates/stock/item_base.html:353 +#: templates/js/translated/order.js:638 templates/js/translated/part.js:775 +#: templates/js/translated/stock.js:1382 templates/js/translated/stock.js:2065 msgid "Purchase Order" msgstr "" @@ -3103,9 +3120,10 @@ msgstr "" msgid "Supplier part" msgstr "" -#: order/models.py:797 order/templates/order/order_base.html:147 -#: order/templates/order/sales_order_base.html:154 -#: templates/js/translated/order.js:429 templates/js/translated/order.js:954 +#: order/models.py:797 order/templates/order/order_base.html:151 +#: order/templates/order/sales_order_base.html:155 +#: templates/js/translated/order.js:429 templates/js/translated/order.js:953 +#: templates/js/translated/part.js:847 templates/js/translated/part.js:873 msgid "Received" msgstr "" @@ -3113,9 +3131,9 @@ msgstr "" msgid "Number of items received" msgstr "" -#: order/models.py:805 part/templates/part/prices.html:176 stock/models.py:619 -#: stock/serializers.py:163 stock/templates/stock/item_base.html:332 -#: templates/js/translated/stock.js:1354 +#: order/models.py:805 part/templates/part/prices.html:176 stock/models.py:609 +#: stock/serializers.py:168 stock/templates/stock/item_base.html:360 +#: templates/js/translated/stock.js:1436 msgid "Purchase Price" msgstr "" @@ -3176,47 +3194,47 @@ msgstr "" msgid "Enter stock allocation quantity" msgstr "" -#: order/serializers.py:169 +#: order/serializers.py:175 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:204 +#: order/serializers.py:213 msgid "Line Item" msgstr "" -#: order/serializers.py:210 +#: order/serializers.py:219 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:220 order/serializers.py:288 +#: order/serializers.py:229 order/serializers.py:297 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:244 +#: order/serializers.py:253 msgid "Barcode Hash" msgstr "" -#: order/serializers.py:245 +#: order/serializers.py:254 msgid "Unique identifier field" msgstr "" -#: order/serializers.py:262 +#: order/serializers.py:271 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:300 +#: order/serializers.py:309 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:317 +#: order/serializers.py:326 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:328 +#: order/serializers.py:337 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:569 +#: order/serializers.py:578 msgid "Sale price currency" msgstr "" @@ -3248,22 +3266,36 @@ msgstr "" msgid "Receive items" msgstr "" -#: order/templates/order/order_base.html:93 -#: order/templates/order/sales_order_base.html:98 +#: order/templates/order/order_base.html:58 +#: order/templates/order/purchase_order_detail.html:31 +msgid "Receive Items" +msgstr "" + +#: order/templates/order/order_base.html:62 order/views.py:185 +msgid "Complete Order" +msgstr "" + +#: order/templates/order/order_base.html:84 +#: order/templates/order/sales_order_base.html:79 msgid "Order Reference" msgstr "" -#: order/templates/order/order_base.html:98 -#: order/templates/order/sales_order_base.html:103 +#: order/templates/order/order_base.html:89 +#: order/templates/order/sales_order_base.html:84 +msgid "Order Description" +msgstr "" + +#: order/templates/order/order_base.html:94 +#: order/templates/order/sales_order_base.html:89 msgid "Order Status" msgstr "" -#: order/templates/order/order_base.html:133 +#: order/templates/order/order_base.html:137 #: report/templates/report/inventree_build_order_base.html:122 msgid "Issued" msgstr "" -#: order/templates/order/order_base.html:203 +#: order/templates/order/order_base.html:207 msgid "Edit Purchase Order" msgstr "" @@ -3421,7 +3453,7 @@ msgid "Select existing purchase orders, or create new orders." msgstr "" #: order/templates/order/order_wizard/select_pos.html:31 -#: templates/js/translated/order.js:695 templates/js/translated/order.js:1119 +#: templates/js/translated/order.js:694 templates/js/translated/order.js:1118 msgid "Items" msgstr "" @@ -3465,10 +3497,6 @@ msgstr "" msgid "Receive selected items" msgstr "" -#: order/templates/order/purchase_order_detail.html:31 -msgid "Receive Items" -msgstr "" - #: order/templates/order/purchase_order_detail.html:50 msgid "Received Items" msgstr "" @@ -3496,16 +3524,16 @@ msgstr "" msgid "Ship Order" msgstr "" -#: order/templates/order/sales_order_base.html:86 +#: order/templates/order/sales_order_base.html:102 msgid "This Sales Order has not been fully allocated" msgstr "" -#: order/templates/order/sales_order_base.html:121 -#: templates/js/translated/order.js:1086 +#: order/templates/order/sales_order_base.html:122 +#: templates/js/translated/order.js:1085 msgid "Customer Reference" msgstr "" -#: order/templates/order/sales_order_base.html:194 +#: order/templates/order/sales_order_base.html:195 msgid "Edit Sales Order" msgstr "" @@ -3576,10 +3604,6 @@ msgstr "" msgid "Purchase order issued" msgstr "" -#: order/views.py:185 -msgid "Complete Order" -msgstr "" - #: order/views.py:201 msgid "Confirm order completion" msgstr "" @@ -3672,11 +3696,11 @@ msgid "This field is required" msgstr "" #: part/bom.py:125 part/models.py:81 part/models.py:816 -#: part/templates/part/category.html:90 part/templates/part/detail.html:104 +#: part/templates/part/category.html:104 part/templates/part/part_base.html:338 msgid "Default Location" msgstr "Standaard locatie" -#: part/bom.py:126 part/templates/part/part_base.html:167 +#: part/bom.py:126 part/templates/part/part_base.html:185 msgid "Available Stock" msgstr "" @@ -3722,11 +3746,11 @@ msgstr "" #: part/forms.py:73 msgid "Include Manufacturer Data" -msgstr "" +msgstr "Voeg fabrikantgegevens toe" #: part/forms.py:73 msgid "Include part manufacturer data in exported BOM" -msgstr "" +msgstr "Voeg fabrikantgegevens toe aan geëxporteerde BOM" #: part/forms.py:75 msgid "Include Supplier Data" @@ -3793,19 +3817,19 @@ msgstr "" msgid "Part Category" msgstr "" -#: part/models.py:96 part/templates/part/category.html:117 +#: part/models.py:96 part/templates/part/category.html:124 #: templates/InvenTree/search.html:101 templates/stats.html:84 #: users/models.py:40 msgid "Part Categories" msgstr "" #: part/models.py:358 part/templates/part/cat_link.html:3 -#: part/templates/part/category.html:13 part/templates/part/category.html:122 -#: part/templates/part/category.html:142 +#: part/templates/part/category.html:13 part/templates/part/category.html:129 +#: part/templates/part/category.html:149 #: part/templates/part/category_sidebar.html:9 #: templates/InvenTree/index.html:85 templates/InvenTree/search.html:88 #: templates/InvenTree/settings/sidebar.html:36 -#: templates/js/translated/part.js:1416 templates/navbar.html:19 +#: templates/js/translated/part.js:1597 templates/navbar.html:19 #: templates/stats.html:80 templates/stats.html:89 users/models.py:41 msgid "Parts" msgstr "" @@ -3859,8 +3883,8 @@ msgstr "" msgid "Part description" msgstr "" -#: part/models.py:770 part/templates/part/category.html:97 -#: part/templates/part/detail.html:73 +#: part/models.py:770 part/templates/part/category.html:82 +#: part/templates/part/part_base.html:302 msgid "Keywords" msgstr "" @@ -3869,9 +3893,10 @@ msgid "Part keywords to improve visibility in search results" msgstr "" #: part/models.py:778 part/models.py:2223 part/models.py:2472 -#: part/templates/part/detail.html:36 part/templates/part/set_category.html:15 +#: part/templates/part/part_base.html:265 +#: part/templates/part/set_category.html:15 #: templates/InvenTree/settings/settings.html:163 -#: templates/js/translated/part.js:1021 +#: templates/js/translated/part.js:1202 msgid "Category" msgstr "" @@ -3879,9 +3904,9 @@ msgstr "" msgid "Part category" msgstr "" -#: part/models.py:784 part/templates/part/detail.html:45 -#: templates/js/translated/part.js:550 templates/js/translated/part.js:974 -#: templates/js/translated/stock.js:1134 +#: part/models.py:784 part/templates/part/part_base.html:274 +#: templates/js/translated/part.js:557 templates/js/translated/part.js:1155 +#: templates/js/translated/stock.js:1216 msgid "IPN" msgstr "" @@ -3893,8 +3918,8 @@ msgstr "" msgid "Part revision or version number" msgstr "" -#: part/models.py:792 part/templates/part/detail.html:52 report/models.py:200 -#: templates/js/translated/part.js:554 +#: part/models.py:792 part/templates/part/part_base.html:281 +#: report/models.py:200 templates/js/translated/part.js:561 msgid "Revision" msgstr "" @@ -3902,7 +3927,7 @@ msgstr "" msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:861 part/templates/part/detail.html:113 +#: part/models.py:861 part/templates/part/part_base.html:347 msgid "Default Supplier" msgstr "" @@ -3918,7 +3943,7 @@ msgstr "" msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:875 part/templates/part/part_base.html:178 +#: part/models.py:875 part/templates/part/part_base.html:196 msgid "Minimum Stock" msgstr "" @@ -4001,8 +4026,8 @@ msgstr "" msgid "Test with this name already exists for this part" msgstr "" -#: part/models.py:2310 templates/js/translated/part.js:1467 -#: templates/js/translated/stock.js:858 +#: part/models.py:2310 templates/js/translated/part.js:1648 +#: templates/js/translated/stock.js:940 msgid "Test Name" msgstr "" @@ -4018,7 +4043,7 @@ msgstr "" msgid "Enter description for this test" msgstr "" -#: part/models.py:2322 templates/js/translated/part.js:1476 +#: part/models.py:2322 templates/js/translated/part.js:1657 #: templates/js/translated/table_filters.js:276 msgid "Required" msgstr "" @@ -4027,7 +4052,7 @@ msgstr "" msgid "Is this test required to pass?" msgstr "" -#: part/models.py:2328 templates/js/translated/part.js:1484 +#: part/models.py:2328 templates/js/translated/part.js:1665 msgid "Requires Value" msgstr "" @@ -4035,7 +4060,7 @@ msgstr "" msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:2334 templates/js/translated/part.js:1491 +#: part/models.py:2334 templates/js/translated/part.js:1672 msgid "Requires Attachment" msgstr "" @@ -4150,7 +4175,7 @@ msgstr "" msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:2686 stock/models.py:371 +#: part/models.py:2686 stock/models.py:361 msgid "Quantity must be integer value for trackable parts" msgstr "" @@ -4213,7 +4238,7 @@ msgstr "" msgid "The BOM for %(part)s has not been validated." msgstr "" -#: part/templates/part/bom.html:30 part/templates/part/detail.html:357 +#: part/templates/part/bom.html:30 part/templates/part/detail.html:250 msgid "BOM actions" msgstr "" @@ -4298,68 +4323,64 @@ msgstr "" msgid "New Category" msgstr "" -#: part/templates/part/category.html:67 -msgid "Top level part category" -msgstr "" - -#: part/templates/part/category.html:79 +#: part/templates/part/category.html:76 part/templates/part/category.html:89 msgid "Category Path" msgstr "" -#: part/templates/part/category.html:84 -msgid "Category Description" +#: part/templates/part/category.html:90 +msgid "Top level part category" msgstr "" -#: part/templates/part/category.html:103 part/templates/part/category.html:194 +#: part/templates/part/category.html:110 part/templates/part/category.html:201 #: part/templates/part/category_sidebar.html:7 msgid "Subcategories" msgstr "" -#: part/templates/part/category.html:108 +#: part/templates/part/category.html:115 msgid "Parts (Including subcategories)" msgstr "" -#: part/templates/part/category.html:145 +#: part/templates/part/category.html:152 msgid "Export Part Data" msgstr "" -#: part/templates/part/category.html:146 part/templates/part/category.html:170 +#: part/templates/part/category.html:153 part/templates/part/category.html:177 msgid "Export" msgstr "" -#: part/templates/part/category.html:149 +#: part/templates/part/category.html:156 msgid "Create new part" msgstr "" -#: part/templates/part/category.html:150 templates/js/translated/bom.js:40 +#: part/templates/part/category.html:157 templates/js/translated/bom.js:40 msgid "New Part" msgstr "" -#: part/templates/part/category.html:164 +#: part/templates/part/category.html:171 msgid "Set category" msgstr "" -#: part/templates/part/category.html:164 +#: part/templates/part/category.html:171 msgid "Set Category" msgstr "" -#: part/templates/part/category.html:168 +#: part/templates/part/category.html:175 msgid "Print Labels" msgstr "" -#: part/templates/part/category.html:170 +#: part/templates/part/category.html:177 msgid "Export Data" msgstr "" -#: part/templates/part/category.html:184 +#: part/templates/part/category.html:191 msgid "Part Parameters" msgstr "" -#: part/templates/part/category.html:261 +#: part/templates/part/category.html:268 msgid "Create Part Category" msgstr "" -#: part/templates/part/category.html:288 +#: part/templates/part/category.html:295 msgid "Create Part" msgstr "" @@ -4402,7 +4423,7 @@ msgstr "" msgid "Import Parts" msgstr "" -#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:366 +#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:373 msgid "Duplicate Part" msgstr "" @@ -4426,167 +4447,155 @@ msgstr "" msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)" msgstr "" -#: part/templates/part/detail.html:16 -msgid "Part Details" -msgstr "" - -#: part/templates/part/detail.html:66 -msgid "Minimum stock level" -msgstr "" - -#: part/templates/part/detail.html:97 -msgid "Latest Serial Number" -msgstr "" - -#: part/templates/part/detail.html:124 +#: part/templates/part/detail.html:17 msgid "Part Stock" msgstr "" -#: part/templates/part/detail.html:136 +#: part/templates/part/detail.html:29 #, python-format msgid "Showing stock for all variants of %(full_name)s" msgstr "" -#: part/templates/part/detail.html:146 +#: part/templates/part/detail.html:39 msgid "Part Test Templates" msgstr "" -#: part/templates/part/detail.html:151 +#: part/templates/part/detail.html:44 msgid "Add Test Template" msgstr "" -#: part/templates/part/detail.html:208 +#: part/templates/part/detail.html:101 msgid "Sales Order Allocations" msgstr "Toewijzingen verkoopopdracht" -#: part/templates/part/detail.html:249 +#: part/templates/part/detail.html:142 msgid "Part Variants" msgstr "" -#: part/templates/part/detail.html:253 +#: part/templates/part/detail.html:146 msgid "Create new variant" msgstr "" -#: part/templates/part/detail.html:254 +#: part/templates/part/detail.html:147 msgid "New Variant" msgstr "" -#: part/templates/part/detail.html:281 +#: part/templates/part/detail.html:174 msgid "Add new parameter" msgstr "" -#: part/templates/part/detail.html:315 part/templates/part/part_sidebar.html:47 +#: part/templates/part/detail.html:208 part/templates/part/part_sidebar.html:45 msgid "Related Parts" msgstr "" -#: part/templates/part/detail.html:319 part/templates/part/detail.html:320 +#: part/templates/part/detail.html:212 part/templates/part/detail.html:213 msgid "Add Related" msgstr "" -#: part/templates/part/detail.html:340 part/templates/part/part_sidebar.html:19 +#: part/templates/part/detail.html:233 part/templates/part/part_sidebar.html:17 msgid "Bill of Materials" msgstr "" -#: part/templates/part/detail.html:345 +#: part/templates/part/detail.html:238 msgid "Export actions" msgstr "" -#: part/templates/part/detail.html:349 +#: part/templates/part/detail.html:242 msgid "Export BOM" msgstr "" -#: part/templates/part/detail.html:351 +#: part/templates/part/detail.html:244 msgid "Print BOM Report" msgstr "" -#: part/templates/part/detail.html:361 +#: part/templates/part/detail.html:254 msgid "Upload BOM" msgstr "" -#: part/templates/part/detail.html:363 templates/js/translated/part.js:267 +#: part/templates/part/detail.html:256 templates/js/translated/part.js:270 msgid "Copy BOM" msgstr "" -#: part/templates/part/detail.html:365 part/views.py:755 +#: part/templates/part/detail.html:258 part/views.py:755 msgid "Validate BOM" msgstr "" -#: part/templates/part/detail.html:370 +#: part/templates/part/detail.html:263 msgid "New BOM Item" msgstr "Nieuw stuklijstitem" -#: part/templates/part/detail.html:371 +#: part/templates/part/detail.html:264 msgid "Add BOM Item" msgstr "" -#: part/templates/part/detail.html:384 +#: part/templates/part/detail.html:277 msgid "Assemblies" -msgstr "" +msgstr "Samenstellingen" -#: part/templates/part/detail.html:401 +#: part/templates/part/detail.html:294 msgid "Part Builds" msgstr "" -#: part/templates/part/detail.html:426 +#: part/templates/part/detail.html:319 msgid "Build Order Allocations" msgstr "Toewijzingen bouwopdracht" -#: part/templates/part/detail.html:436 +#: part/templates/part/detail.html:329 msgid "Part Suppliers" msgstr "" -#: part/templates/part/detail.html:463 +#: part/templates/part/detail.html:356 msgid "Part Manufacturers" -msgstr "" +msgstr "Fabrikanten" -#: part/templates/part/detail.html:479 +#: part/templates/part/detail.html:372 msgid "Delete manufacturer parts" -msgstr "" +msgstr "Fabrikant onderdeel verwijderen" -#: part/templates/part/detail.html:660 +#: part/templates/part/detail.html:553 msgid "Delete selected BOM items?" msgstr "" -#: part/templates/part/detail.html:661 +#: part/templates/part/detail.html:554 msgid "All selected BOM items will be deleted" msgstr "" -#: part/templates/part/detail.html:712 +#: part/templates/part/detail.html:605 msgid "Create BOM Item" msgstr "" -#: part/templates/part/detail.html:764 +#: part/templates/part/detail.html:657 msgid "Related Part" msgstr "" -#: part/templates/part/detail.html:772 +#: part/templates/part/detail.html:665 msgid "Add Related Part" msgstr "" -#: part/templates/part/detail.html:869 +#: part/templates/part/detail.html:760 msgid "Add Test Result Template" msgstr "" -#: part/templates/part/detail.html:926 +#: part/templates/part/detail.html:817 msgid "Edit Part Notes" msgstr "" -#: part/templates/part/detail.html:1039 +#: part/templates/part/detail.html:930 #, python-format msgid "Purchase Unit Price - %(currency)s" msgstr "" -#: part/templates/part/detail.html:1051 +#: part/templates/part/detail.html:942 #, python-format msgid "Unit Price-Cost Difference - %(currency)s" msgstr "" -#: part/templates/part/detail.html:1063 +#: part/templates/part/detail.html:954 #, python-format msgid "Supplier Unit Cost - %(currency)s" msgstr "" -#: part/templates/part/detail.html:1152 +#: part/templates/part/detail.html:1043 #, python-format msgid "Unit Price - %(currency)s" msgstr "" @@ -4668,86 +4677,108 @@ msgstr "" msgid "Delete part" msgstr "" -#: part/templates/part/part_base.html:109 +#: part/templates/part/part_base.html:112 msgid "Part is a template part (variants can be made from this part)" msgstr "" -#: part/templates/part/part_base.html:113 +#: part/templates/part/part_base.html:116 msgid "Part can be assembled from other parts" -msgstr "" +msgstr "Onderdeel kan vanuit andere delen worden samengesteld" -#: part/templates/part/part_base.html:117 +#: part/templates/part/part_base.html:120 msgid "Part can be used in assemblies" -msgstr "" +msgstr "Onderdeel kan gebruikt worden voor samenstellingen" -#: part/templates/part/part_base.html:121 +#: part/templates/part/part_base.html:124 msgid "Part stock is tracked by serial number" msgstr "" -#: part/templates/part/part_base.html:125 +#: part/templates/part/part_base.html:128 msgid "Part can be purchased from external suppliers" msgstr "" -#: part/templates/part/part_base.html:129 +#: part/templates/part/part_base.html:132 msgid "Part can be sold to customers" msgstr "" -#: part/templates/part/part_base.html:135 -#: part/templates/part/part_base.html:143 +#: part/templates/part/part_base.html:138 +#: part/templates/part/part_base.html:146 msgid "Part is virtual (not a physical part)" msgstr "" -#: part/templates/part/part_base.html:136 +#: part/templates/part/part_base.html:139 #: templates/js/translated/company.js:505 #: templates/js/translated/company.js:762 #: templates/js/translated/model_renderers.js:175 -#: templates/js/translated/part.js:465 templates/js/translated/part.js:542 +#: templates/js/translated/part.js:472 templates/js/translated/part.js:549 msgid "Inactive" msgstr "" -#: part/templates/part/part_base.html:155 +#: part/templates/part/part_base.html:156 +#: part/templates/part/part_base.html:579 +msgid "Show Part Details" +msgstr "" + +#: part/templates/part/part_base.html:173 #, python-format msgid "This part is a variant of %(link)s" msgstr "" -#: part/templates/part/part_base.html:172 templates/js/translated/order.js:1546 +#: part/templates/part/part_base.html:190 templates/js/translated/order.js:1545 #: templates/js/translated/table_filters.js:188 msgid "In Stock" msgstr "" -#: part/templates/part/part_base.html:185 templates/js/translated/part.js:1054 +#: part/templates/part/part_base.html:203 templates/js/translated/part.js:1235 msgid "On Order" msgstr "" -#: part/templates/part/part_base.html:192 templates/InvenTree/index.html:178 +#: part/templates/part/part_base.html:210 templates/InvenTree/index.html:178 msgid "Required for Build Orders" msgstr "" -#: part/templates/part/part_base.html:199 +#: part/templates/part/part_base.html:217 msgid "Required for Sales Orders" msgstr "" -#: part/templates/part/part_base.html:206 +#: part/templates/part/part_base.html:224 msgid "Allocated to Orders" msgstr "" -#: part/templates/part/part_base.html:221 templates/js/translated/bom.js:566 +#: part/templates/part/part_base.html:239 templates/js/translated/bom.js:566 msgid "Can Build" msgstr "" -#: part/templates/part/part_base.html:227 templates/js/translated/part.js:885 -#: templates/js/translated/part.js:1058 +#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1066 +#: templates/js/translated/part.js:1239 msgid "Building" msgstr "" -#: part/templates/part/part_base.html:320 part/templates/part/prices.html:144 +#: part/templates/part/part_base.html:295 +msgid "Minimum stock level" +msgstr "" + +#: part/templates/part/part_base.html:324 +msgid "Latest Serial Number" +msgstr "" + +#: part/templates/part/part_base.html:328 +#: stock/templates/stock/item_base.html:159 +msgid "Search for serial number" +msgstr "" + +#: part/templates/part/part_base.html:449 part/templates/part/prices.html:144 msgid "Calculate" msgstr "" -#: part/templates/part/part_base.html:363 +#: part/templates/part/part_base.html:492 msgid "No matching images found" msgstr "" +#: part/templates/part/part_base.html:573 +msgid "Hide Part Details" +msgstr "" + #: part/templates/part/part_pricing.html:22 part/templates/part/prices.html:21 msgid "Supplier Pricing" msgstr "" @@ -4805,20 +4836,15 @@ msgstr "" msgid "No pricing information is available for this part." msgstr "" -#: part/templates/part/part_sidebar.html:8 -#: templates/js/translated/stock.js:1949 -msgid "Details" -msgstr "" - -#: part/templates/part/part_sidebar.html:13 +#: part/templates/part/part_sidebar.html:11 msgid "Variants" msgstr "" -#: part/templates/part/part_sidebar.html:27 +#: part/templates/part/part_sidebar.html:25 msgid "Used In" msgstr "" -#: part/templates/part/part_sidebar.html:43 +#: part/templates/part/part_sidebar.html:41 msgid "Test Templates" msgstr "" @@ -4851,7 +4877,7 @@ msgstr "" #: part/templates/part/partial_delete.html:43 #, python-format msgid "There are %(count)s manufacturers defined for this part. If you delete this part, the following manufacturer parts will also be deleted:" -msgstr "" +msgstr "Er zijn %(count)s fabrikanten gedefinieerd voor dit onderdeel. Als u dit onderdeel verwijdert, worden de volgende onderdelen ook verwijderd:" #: part/templates/part/partial_delete.html:54 #, python-format @@ -4934,8 +4960,8 @@ msgid "Set category for the following parts" msgstr "" #: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:476 -#: templates/js/translated/part.js:429 templates/js/translated/part.js:875 -#: templates/js/translated/part.js:1062 +#: templates/js/translated/part.js:436 templates/js/translated/part.js:1056 +#: templates/js/translated/part.js:1243 msgid "No Stock" msgstr "" @@ -5037,7 +5063,7 @@ msgstr "" msgid "Delete Part Parameter Template" msgstr "" -#: part/views.py:1489 templates/js/translated/part.js:310 +#: part/views.py:1489 templates/js/translated/part.js:313 msgid "Edit Part Category" msgstr "" @@ -5171,11 +5197,12 @@ msgid "Stock Item Test Report" msgstr "" #: report/templates/report/inventree_test_report_base.html:79 -#: stock/models.py:530 stock/templates/stock/item_base.html:238 +#: stock/models.py:520 stock/templates/stock/item_base.html:149 #: templates/js/translated/build.js:233 templates/js/translated/build.js:637 #: templates/js/translated/build.js:1013 #: templates/js/translated/model_renderers.js:95 -#: templates/js/translated/order.js:1288 templates/js/translated/order.js:1377 +#: templates/js/translated/order.js:1287 templates/js/translated/order.js:1376 +#: templates/js/translated/stock.js:410 msgid "Serial Number" msgstr "Serienummer" @@ -5184,17 +5211,17 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:93 -#: stock/models.py:1855 +#: stock/models.py:1845 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:94 -#: stock/models.py:1861 +#: stock/models.py:1851 msgid "Result" msgstr "" #: report/templates/report/inventree_test_report_base.html:97 -#: templates/js/translated/order.js:685 templates/js/translated/stock.js:1917 +#: templates/js/translated/order.js:684 templates/js/translated/stock.js:1999 msgid "Date" msgstr "" @@ -5212,7 +5239,7 @@ msgid "Installed Items" msgstr "" #: report/templates/report/inventree_test_report_base.html:137 -#: templates/js/translated/stock.js:2177 +#: templates/js/translated/stock.js:2259 msgid "Serial" msgstr "" @@ -5220,9 +5247,9 @@ msgstr "" msgid "Quantity is required" msgstr "" -#: stock/forms.py:91 stock/forms.py:265 stock/models.py:587 -#: stock/templates/stock/item_base.html:382 -#: templates/js/translated/stock.js:1276 +#: stock/forms.py:91 stock/forms.py:265 stock/models.py:577 +#: stock/templates/stock/item_base.html:186 +#: templates/js/translated/stock.js:1358 msgid "Expiry Date" msgstr "" @@ -5270,241 +5297,241 @@ msgstr "" msgid "Confirm removal of installed stock items" msgstr "" -#: stock/models.py:60 stock/models.py:624 -#: stock/templates/stock/item_base.html:422 +#: stock/models.py:60 stock/models.py:614 +#: stock/templates/stock/item_base.html:417 msgid "Owner" msgstr "" -#: stock/models.py:61 stock/models.py:625 +#: stock/models.py:61 stock/models.py:615 msgid "Select Owner" msgstr "" -#: stock/models.py:352 +#: stock/models.py:342 msgid "StockItem with this serial number already exists" msgstr "" -#: stock/models.py:388 +#: stock/models.py:378 #, python-brace-format msgid "Part type ('{pf}') must be {pe}" msgstr "" -#: stock/models.py:398 stock/models.py:407 +#: stock/models.py:388 stock/models.py:397 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:399 +#: stock/models.py:389 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:421 +#: stock/models.py:411 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:427 +#: stock/models.py:417 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:434 +#: stock/models.py:424 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:476 +#: stock/models.py:466 msgid "Parent Stock Item" msgstr "" -#: stock/models.py:485 +#: stock/models.py:475 msgid "Base part" msgstr "" -#: stock/models.py:493 +#: stock/models.py:483 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:498 stock/templates/stock/location.html:12 +#: stock/models.py:488 stock/templates/stock/location.html:12 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" msgstr "Voorraadlocatie" -#: stock/models.py:501 +#: stock/models.py:491 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:508 +#: stock/models.py:498 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:513 stock/templates/stock/item_base.html:271 +#: stock/models.py:503 stock/templates/stock/item_base.html:299 msgid "Installed In" msgstr "" -#: stock/models.py:516 +#: stock/models.py:506 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:532 +#: stock/models.py:522 msgid "Serial number for this item" msgstr "" -#: stock/models.py:546 +#: stock/models.py:536 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:550 +#: stock/models.py:540 msgid "Stock Quantity" msgstr "" -#: stock/models.py:559 +#: stock/models.py:549 msgid "Source Build" msgstr "" -#: stock/models.py:561 +#: stock/models.py:551 msgid "Build for this stock item" msgstr "" -#: stock/models.py:572 +#: stock/models.py:562 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:575 +#: stock/models.py:565 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:581 +#: stock/models.py:571 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:588 +#: stock/models.py:578 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:601 +#: stock/models.py:591 msgid "Delete on deplete" msgstr "" -#: stock/models.py:601 +#: stock/models.py:591 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:611 stock/templates/stock/item.html:111 +#: stock/models.py:601 stock/templates/stock/item.html:111 msgid "Stock Item Notes" msgstr "" -#: stock/models.py:620 +#: stock/models.py:610 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:630 +#: stock/models.py:620 msgid "Scheduled for deletion" msgstr "" -#: stock/models.py:631 +#: stock/models.py:621 msgid "This StockItem will be deleted by the background worker" msgstr "" -#: stock/models.py:1094 +#: stock/models.py:1084 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1100 +#: stock/models.py:1090 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1106 +#: stock/models.py:1096 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({n})" msgstr "" -#: stock/models.py:1109 +#: stock/models.py:1099 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1112 +#: stock/models.py:1102 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1119 +#: stock/models.py:1109 #, python-brace-format msgid "Serial numbers already exist: {exists}" msgstr "" -#: stock/models.py:1277 +#: stock/models.py:1267 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:1775 +#: stock/models.py:1765 msgid "Entry notes" msgstr "" -#: stock/models.py:1832 +#: stock/models.py:1822 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:1838 +#: stock/models.py:1828 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:1856 +#: stock/models.py:1846 msgid "Test name" msgstr "" -#: stock/models.py:1862 templates/js/translated/table_filters.js:266 +#: stock/models.py:1852 templates/js/translated/table_filters.js:266 msgid "Test result" msgstr "" -#: stock/models.py:1868 +#: stock/models.py:1858 msgid "Test output value" msgstr "" -#: stock/models.py:1875 +#: stock/models.py:1865 msgid "Test result attachment" msgstr "" -#: stock/models.py:1881 +#: stock/models.py:1871 msgid "Test notes" msgstr "" -#: stock/serializers.py:166 +#: stock/serializers.py:171 msgid "Purchase price of this stock item" msgstr "" -#: stock/serializers.py:173 +#: stock/serializers.py:178 msgid "Purchase currency of this stock item" msgstr "" -#: stock/serializers.py:287 +#: stock/serializers.py:292 msgid "Enter number of stock items to serialize" msgstr "" -#: stock/serializers.py:302 +#: stock/serializers.py:307 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "" -#: stock/serializers.py:308 +#: stock/serializers.py:313 msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:319 stock/serializers.py:686 +#: stock/serializers.py:324 stock/serializers.py:691 msgid "Destination stock location" msgstr "" -#: stock/serializers.py:326 +#: stock/serializers.py:331 msgid "Optional note field" msgstr "" -#: stock/serializers.py:339 +#: stock/serializers.py:344 msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:556 +#: stock/serializers.py:561 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:584 +#: stock/serializers.py:589 msgid "Stock transaction notes" msgstr "" -#: stock/serializers.py:594 +#: stock/serializers.py:599 msgid "A list of stock items must be provided" msgstr "" @@ -5629,125 +5656,131 @@ msgstr "" msgid "Install" msgstr "" -#: stock/templates/stock/item_base.html:106 +#: stock/templates/stock/item_base.html:108 msgid "Convert to variant" msgstr "" -#: stock/templates/stock/item_base.html:109 +#: stock/templates/stock/item_base.html:111 msgid "Duplicate stock item" msgstr "" -#: stock/templates/stock/item_base.html:111 +#: stock/templates/stock/item_base.html:113 msgid "Edit stock item" msgstr "" -#: stock/templates/stock/item_base.html:114 +#: stock/templates/stock/item_base.html:116 msgid "Delete stock item" msgstr "" -#: stock/templates/stock/item_base.html:136 -#: stock/templates/stock/item_base.html:386 -#: templates/js/translated/table_filters.js:247 -msgid "Expired" +#: stock/templates/stock/item_base.html:154 +msgid "previous page" msgstr "" -#: stock/templates/stock/item_base.html:146 -#: stock/templates/stock/item_base.html:388 -#: templates/js/translated/table_filters.js:253 -msgid "Stale" +#: stock/templates/stock/item_base.html:154 +msgid "Navigate to previous serial number" msgstr "" -#: stock/templates/stock/item_base.html:161 -msgid "You are not in the list of owners of this item. This stock item cannot be edited." +#: stock/templates/stock/item_base.html:163 +msgid "next page" msgstr "" -#: stock/templates/stock/item_base.html:168 -msgid "This stock item is in production and cannot be edited." -msgstr "" - -#: stock/templates/stock/item_base.html:169 -msgid "Edit the stock item from the build view." -msgstr "" - -#: stock/templates/stock/item_base.html:182 -msgid "This stock item has not passed all required tests" +#: stock/templates/stock/item_base.html:163 +msgid "Navigate to next serial number" msgstr "" #: stock/templates/stock/item_base.html:190 #, python-format -msgid "This stock item is allocated to Sales Order %(link)s (Quantity: %(qty)s)" -msgstr "" - -#: stock/templates/stock/item_base.html:198 -#, python-format -msgid "This stock item is allocated to Build %(link)s (Quantity: %(qty)s)" -msgstr "" - -#: stock/templates/stock/item_base.html:204 -msgid "This stock item is serialized - it has a unique serial number and the quantity cannot be adjusted." -msgstr "" - -#: stock/templates/stock/item_base.html:208 -msgid "This stock item cannot be deleted as it has child items" -msgstr "" - -#: stock/templates/stock/item_base.html:212 -msgid "This stock item will be automatically deleted when all stock is depleted." -msgstr "" - -#: stock/templates/stock/item_base.html:241 -msgid "previous page" -msgstr "" - -#: stock/templates/stock/item_base.html:247 -msgid "next page" -msgstr "" - -#: stock/templates/stock/item_base.html:290 -#: templates/js/translated/build.js:1035 -msgid "No location set" -msgstr "Geen Locatie ingesteld" - -#: stock/templates/stock/item_base.html:297 -msgid "Barcode Identifier" -msgstr "" - -#: stock/templates/stock/item_base.html:339 -msgid "Parent Item" -msgstr "" - -#: stock/templates/stock/item_base.html:357 -msgid "No manufacturer set" -msgstr "" - -#: stock/templates/stock/item_base.html:386 -#, python-format msgid "This StockItem expired on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:388 +#: stock/templates/stock/item_base.html:190 +#: templates/js/translated/table_filters.js:247 +msgid "Expired" +msgstr "" + +#: stock/templates/stock/item_base.html:192 #, python-format msgid "This StockItem expires on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:395 -#: templates/js/translated/stock.js:1289 +#: stock/templates/stock/item_base.html:192 +#: templates/js/translated/table_filters.js:253 +msgid "Stale" +msgstr "" + +#: stock/templates/stock/item_base.html:199 +#: templates/js/translated/stock.js:1371 msgid "Last Updated" msgstr "" -#: stock/templates/stock/item_base.html:400 +#: stock/templates/stock/item_base.html:204 msgid "Last Stocktake" msgstr "" -#: stock/templates/stock/item_base.html:404 +#: stock/templates/stock/item_base.html:208 msgid "No stocktake performed" msgstr "" -#: stock/templates/stock/item_base.html:415 +#: stock/templates/stock/item_base.html:226 +msgid "You are not in the list of owners of this item. This stock item cannot be edited." +msgstr "" + +#: stock/templates/stock/item_base.html:233 +msgid "This stock item is in production and cannot be edited." +msgstr "" + +#: stock/templates/stock/item_base.html:234 +msgid "Edit the stock item from the build view." +msgstr "" + +#: stock/templates/stock/item_base.html:247 +msgid "This stock item has not passed all required tests" +msgstr "" + +#: stock/templates/stock/item_base.html:255 +#, python-format +msgid "This stock item is allocated to Sales Order %(link)s (Quantity: %(qty)s)" +msgstr "" + +#: stock/templates/stock/item_base.html:263 +#, python-format +msgid "This stock item is allocated to Build %(link)s (Quantity: %(qty)s)" +msgstr "" + +#: stock/templates/stock/item_base.html:269 +msgid "This stock item is serialized - it has a unique serial number and the quantity cannot be adjusted." +msgstr "" + +#: stock/templates/stock/item_base.html:273 +msgid "This stock item cannot be deleted as it has child items" +msgstr "" + +#: stock/templates/stock/item_base.html:277 +msgid "This stock item will be automatically deleted when all stock is depleted." +msgstr "" + +#: stock/templates/stock/item_base.html:318 +#: templates/js/translated/build.js:1035 +msgid "No location set" +msgstr "Geen Locatie ingesteld" + +#: stock/templates/stock/item_base.html:325 +msgid "Barcode Identifier" +msgstr "" + +#: stock/templates/stock/item_base.html:367 +msgid "Parent Item" +msgstr "" + +#: stock/templates/stock/item_base.html:385 +msgid "No manufacturer set" +msgstr "Geen fabrikant geselecteerd" + +#: stock/templates/stock/item_base.html:410 msgid "Tests" msgstr "" -#: stock/templates/stock/item_base.html:505 +#: stock/templates/stock/item_base.html:500 msgid "Edit Stock Status" msgstr "" @@ -5825,30 +5858,35 @@ msgstr "Maak nieuwe voorraadlocatie" msgid "New Location" msgstr "Nieuwe locatie" -#: stock/templates/stock/location.html:86 +#: stock/templates/stock/location.html:95 +#: stock/templates/stock/location.html:101 +msgid "Location Path" +msgstr "" + +#: stock/templates/stock/location.html:102 msgid "Top level stock location" msgstr "" -#: stock/templates/stock/location.html:95 +#: stock/templates/stock/location.html:115 msgid "You are not in the list of owners of this location. This stock location cannot be edited." msgstr "U staat niet in de lijst van eigenaars van deze locatie. Deze voorraadlocatie kan niet worden bewerkt." -#: stock/templates/stock/location.html:113 -#: stock/templates/stock/location.html:160 +#: stock/templates/stock/location.html:128 +#: stock/templates/stock/location.html:175 #: stock/templates/stock/location_sidebar.html:5 msgid "Sublocations" msgstr "Sublocaties" -#: stock/templates/stock/location.html:127 templates/InvenTree/search.html:170 +#: stock/templates/stock/location.html:142 templates/InvenTree/search.html:170 #: templates/stats.html:97 users/models.py:42 msgid "Stock Locations" msgstr "Voorraadlocaties" -#: stock/templates/stock/location.html:167 templates/stock_table.html:30 +#: stock/templates/stock/location.html:182 templates/stock_table.html:30 msgid "Printing Actions" msgstr "Afdrukacties" -#: stock/templates/stock/location.html:171 templates/stock_table.html:34 +#: stock/templates/stock/location.html:186 templates/stock_table.html:34 msgid "Print labels" msgstr "Labels afdrukken" @@ -5942,7 +5980,7 @@ msgstr "" msgid "Uninstall Stock Items" msgstr "" -#: stock/views.py:760 templates/js/translated/stock.js:648 +#: stock/views.py:760 templates/js/translated/stock.js:730 msgid "Confirm stock adjustment" msgstr "" @@ -5950,7 +5988,7 @@ msgstr "" msgid "Uninstalled stock items" msgstr "" -#: stock/views.py:793 templates/js/translated/stock.js:318 +#: stock/views.py:793 templates/js/translated/stock.js:319 msgid "Edit Stock Item" msgstr "" @@ -5962,7 +6000,7 @@ msgstr "Maak nieuwe voorraadlocatie" msgid "Create new Stock Item" msgstr "" -#: stock/views.py:1186 templates/js/translated/stock.js:298 +#: stock/views.py:1186 templates/js/translated/stock.js:299 msgid "Duplicate Stock Item" msgstr "" @@ -6868,7 +6906,7 @@ msgstr "" msgid "Unlink" msgstr "" -#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:600 +#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:682 msgid "Remove stock item" msgstr "" @@ -6963,7 +7001,7 @@ msgid "View BOM" msgstr "" #: templates/js/translated/bom.js:608 templates/js/translated/build.js:1183 -#: templates/js/translated/order.js:1320 +#: templates/js/translated/order.js:1319 msgid "Actions" msgstr "" @@ -7055,7 +7093,7 @@ msgstr "" msgid "No build order allocations found" msgstr "" -#: templates/js/translated/build.js:424 templates/js/translated/order.js:1194 +#: templates/js/translated/build.js:424 templates/js/translated/order.js:1193 msgid "Location not specified" msgstr "" @@ -7064,12 +7102,12 @@ msgid "No active build outputs found" msgstr "" #: templates/js/translated/build.js:1052 templates/js/translated/build.js:1760 -#: templates/js/translated/order.js:1327 +#: templates/js/translated/order.js:1326 msgid "Edit stock allocation" msgstr "" #: templates/js/translated/build.js:1054 templates/js/translated/build.js:1761 -#: templates/js/translated/order.js:1328 +#: templates/js/translated/order.js:1327 msgid "Delete stock allocation" msgstr "" @@ -7090,11 +7128,11 @@ msgid "Quantity Per" msgstr "" #: templates/js/translated/build.js:1134 templates/js/translated/build.js:1360 -#: templates/js/translated/build.js:1756 templates/js/translated/order.js:1557 +#: templates/js/translated/build.js:1756 templates/js/translated/order.js:1556 msgid "Allocated" msgstr "" -#: templates/js/translated/build.js:1190 templates/js/translated/order.js:1611 +#: templates/js/translated/build.js:1190 templates/js/translated/order.js:1610 msgid "Build stock" msgstr "" @@ -7102,7 +7140,7 @@ msgstr "" msgid "Order stock" msgstr "" -#: templates/js/translated/build.js:1197 templates/js/translated/order.js:1604 +#: templates/js/translated/build.js:1197 templates/js/translated/order.js:1603 msgid "Allocate stock" msgstr "" @@ -7143,9 +7181,9 @@ msgstr "" msgid "No builds matching query" msgstr "" -#: templates/js/translated/build.js:1593 templates/js/translated/part.js:966 -#: templates/js/translated/part.js:1377 templates/js/translated/stock.js:1094 -#: templates/js/translated/stock.js:1871 +#: templates/js/translated/build.js:1593 templates/js/translated/part.js:1147 +#: templates/js/translated/part.js:1558 templates/js/translated/stock.js:1176 +#: templates/js/translated/stock.js:1953 msgid "Select" msgstr "" @@ -7153,7 +7191,7 @@ msgstr "" msgid "Build order is overdue" msgstr "" -#: templates/js/translated/build.js:1674 templates/js/translated/stock.js:2090 +#: templates/js/translated/build.js:1674 templates/js/translated/stock.js:2172 msgid "No user information" msgstr "" @@ -7167,19 +7205,19 @@ msgstr "" #: templates/js/translated/company.js:65 msgid "Add Manufacturer" -msgstr "" +msgstr "Fabrikant toevoegen" #: templates/js/translated/company.js:78 templates/js/translated/company.js:177 msgid "Add Manufacturer Part" -msgstr "" +msgstr "Fabrikant onderdeel toevoegen" #: templates/js/translated/company.js:99 msgid "Edit Manufacturer Part" -msgstr "" +msgstr "Fabrikant onderdeel bewerken" #: templates/js/translated/company.js:108 msgid "Delete Manufacturer Part" -msgstr "" +msgstr "Fabrikant onderdeel verwijderen" #: templates/js/translated/company.js:165 templates/js/translated/order.js:90 msgid "Add Supplier" @@ -7197,10 +7235,6 @@ msgstr "" msgid "Delete Supplier Part" msgstr "" -#: templates/js/translated/company.js:265 -msgid "Edit Company" -msgstr "" - #: templates/js/translated/company.js:286 msgid "Add new Company" msgstr "" @@ -7211,7 +7245,7 @@ msgstr "" #: templates/js/translated/company.js:372 msgid "Parts Manufactured" -msgstr "" +msgstr "Gefabriceerde onderdelen" #: templates/js/translated/company.js:386 msgid "No company information found" @@ -7219,45 +7253,45 @@ msgstr "" #: templates/js/translated/company.js:405 msgid "The following manufacturer parts will be deleted" -msgstr "" +msgstr "De volgende fabricage onderdelen worden verwijderd" #: templates/js/translated/company.js:422 msgid "Delete Manufacturer Parts" -msgstr "" +msgstr "Verwijder fabricage onderdelen" #: templates/js/translated/company.js:477 msgid "No manufacturer parts found" -msgstr "" +msgstr "Geen fabricage onderdelen gevonden" #: templates/js/translated/company.js:497 -#: templates/js/translated/company.js:754 templates/js/translated/part.js:449 -#: templates/js/translated/part.js:534 +#: templates/js/translated/company.js:754 templates/js/translated/part.js:456 +#: templates/js/translated/part.js:541 msgid "Template part" msgstr "" #: templates/js/translated/company.js:501 -#: templates/js/translated/company.js:758 templates/js/translated/part.js:453 -#: templates/js/translated/part.js:538 +#: templates/js/translated/company.js:758 templates/js/translated/part.js:460 +#: templates/js/translated/part.js:545 msgid "Assembled part" -msgstr "" +msgstr "Samengesteld onderdeel" -#: templates/js/translated/company.js:628 templates/js/translated/part.js:626 +#: templates/js/translated/company.js:628 templates/js/translated/part.js:633 msgid "No parameters found" msgstr "" -#: templates/js/translated/company.js:665 templates/js/translated/part.js:668 +#: templates/js/translated/company.js:665 templates/js/translated/part.js:675 msgid "Edit parameter" msgstr "" -#: templates/js/translated/company.js:666 templates/js/translated/part.js:669 +#: templates/js/translated/company.js:666 templates/js/translated/part.js:676 msgid "Delete parameter" msgstr "" -#: templates/js/translated/company.js:685 templates/js/translated/part.js:686 +#: templates/js/translated/company.js:685 templates/js/translated/part.js:693 msgid "Edit Parameter" msgstr "" -#: templates/js/translated/company.js:696 templates/js/translated/part.js:698 +#: templates/js/translated/company.js:696 templates/js/translated/part.js:705 msgid "Delete Parameter" msgstr "" @@ -7346,7 +7380,7 @@ msgid "NO" msgstr "" #: templates/js/translated/label.js:29 templates/js/translated/report.js:118 -#: templates/js/translated/stock.js:624 +#: templates/js/translated/stock.js:706 msgid "Select Stock Items" msgstr "" @@ -7484,7 +7518,7 @@ msgstr "" #: templates/js/translated/model_renderers.js:293 msgid "Manufacturer Part ID" -msgstr "" +msgstr "Onderdeelnummer fabrikant" #: templates/js/translated/model_renderers.js:322 msgid "Supplier Part ID" @@ -7502,11 +7536,11 @@ msgstr "" msgid "Export Order" msgstr "" -#: templates/js/translated/order.js:211 templates/js/translated/stock.js:423 +#: templates/js/translated/order.js:211 templates/js/translated/stock.js:505 msgid "Format" msgstr "" -#: templates/js/translated/order.js:212 templates/js/translated/stock.js:424 +#: templates/js/translated/order.js:212 templates/js/translated/stock.js:506 msgid "Select file format" msgstr "" @@ -7522,7 +7556,7 @@ msgstr "" msgid "Quantity to receive" msgstr "" -#: templates/js/translated/order.js:360 templates/js/translated/stock.js:1673 +#: templates/js/translated/order.js:360 templates/js/translated/stock.js:1755 msgid "Stock Status" msgstr "" @@ -7546,321 +7580,321 @@ msgstr "" msgid "Receive Purchase Order Items" msgstr "" -#: templates/js/translated/order.js:627 +#: templates/js/translated/order.js:627 templates/js/translated/part.js:746 msgid "No purchase orders found" msgstr "" -#: templates/js/translated/order.js:652 templates/js/translated/order.js:1063 +#: templates/js/translated/order.js:659 templates/js/translated/order.js:1062 msgid "Order is overdue" msgstr "" -#: templates/js/translated/order.js:772 templates/js/translated/order.js:1646 +#: templates/js/translated/order.js:771 templates/js/translated/order.js:1645 msgid "Edit Line Item" msgstr "" -#: templates/js/translated/order.js:784 templates/js/translated/order.js:1657 +#: templates/js/translated/order.js:783 templates/js/translated/order.js:1656 msgid "Delete Line Item" msgstr "" -#: templates/js/translated/order.js:823 +#: templates/js/translated/order.js:822 msgid "No line items found" msgstr "" -#: templates/js/translated/order.js:850 templates/js/translated/order.js:1467 +#: templates/js/translated/order.js:849 templates/js/translated/order.js:1466 msgid "Total" msgstr "" -#: templates/js/translated/order.js:904 templates/js/translated/order.js:1492 -#: templates/js/translated/part.js:1594 templates/js/translated/part.js:1805 +#: templates/js/translated/order.js:903 templates/js/translated/order.js:1491 +#: templates/js/translated/part.js:1775 templates/js/translated/part.js:1986 msgid "Unit Price" msgstr "" -#: templates/js/translated/order.js:919 templates/js/translated/order.js:1508 +#: templates/js/translated/order.js:918 templates/js/translated/order.js:1507 msgid "Total Price" msgstr "" -#: templates/js/translated/order.js:997 templates/js/translated/order.js:1617 +#: templates/js/translated/order.js:996 templates/js/translated/order.js:1616 msgid "Edit line item" msgstr "" -#: templates/js/translated/order.js:998 +#: templates/js/translated/order.js:997 msgid "Delete line item" msgstr "" -#: templates/js/translated/order.js:1002 +#: templates/js/translated/order.js:1001 templates/js/translated/part.js:878 msgid "Receive line item" msgstr "" -#: templates/js/translated/order.js:1039 +#: templates/js/translated/order.js:1038 msgid "No sales orders found" msgstr "" -#: templates/js/translated/order.js:1077 +#: templates/js/translated/order.js:1076 msgid "Invalid Customer" msgstr "" -#: templates/js/translated/order.js:1155 +#: templates/js/translated/order.js:1154 msgid "No sales order allocations found" msgstr "" -#: templates/js/translated/order.js:1248 +#: templates/js/translated/order.js:1247 msgid "Edit Stock Allocation" msgstr "" -#: templates/js/translated/order.js:1265 +#: templates/js/translated/order.js:1264 msgid "Confirm Delete Operation" msgstr "" -#: templates/js/translated/order.js:1266 +#: templates/js/translated/order.js:1265 msgid "Delete Stock Allocation" msgstr "" -#: templates/js/translated/order.js:1308 +#: templates/js/translated/order.js:1307 msgid "Stock location not specified" msgstr "" -#: templates/js/translated/order.js:1557 +#: templates/js/translated/order.js:1556 msgid "Fulfilled" msgstr "" -#: templates/js/translated/order.js:1601 +#: templates/js/translated/order.js:1600 msgid "Allocate serial numbers" msgstr "" -#: templates/js/translated/order.js:1607 +#: templates/js/translated/order.js:1606 msgid "Purchase stock" msgstr "" -#: templates/js/translated/order.js:1614 templates/js/translated/order.js:1793 +#: templates/js/translated/order.js:1613 templates/js/translated/order.js:1792 msgid "Calculate price" msgstr "" -#: templates/js/translated/order.js:1618 +#: templates/js/translated/order.js:1617 msgid "Delete line item " msgstr "" -#: templates/js/translated/order.js:1741 +#: templates/js/translated/order.js:1740 msgid "Allocate Stock Item" msgstr "" -#: templates/js/translated/order.js:1801 +#: templates/js/translated/order.js:1800 msgid "Update Unit Price" msgstr "" -#: templates/js/translated/order.js:1815 +#: templates/js/translated/order.js:1814 msgid "No matching line items" msgstr "" -#: templates/js/translated/part.js:51 +#: templates/js/translated/part.js:52 msgid "Part Attributes" msgstr "" -#: templates/js/translated/part.js:55 +#: templates/js/translated/part.js:56 msgid "Part Creation Options" msgstr "" -#: templates/js/translated/part.js:59 +#: templates/js/translated/part.js:60 msgid "Part Duplication Options" msgstr "" -#: templates/js/translated/part.js:63 +#: templates/js/translated/part.js:64 msgid "Supplier Options" msgstr "" -#: templates/js/translated/part.js:77 +#: templates/js/translated/part.js:78 msgid "Add Part Category" msgstr "" -#: templates/js/translated/part.js:166 +#: templates/js/translated/part.js:162 msgid "Create Initial Stock" msgstr "" -#: templates/js/translated/part.js:167 +#: templates/js/translated/part.js:163 msgid "Create an initial stock item for this part" msgstr "" -#: templates/js/translated/part.js:174 +#: templates/js/translated/part.js:170 msgid "Initial Stock Quantity" msgstr "" -#: templates/js/translated/part.js:175 +#: templates/js/translated/part.js:171 msgid "Specify initial stock quantity for this part" msgstr "" -#: templates/js/translated/part.js:182 +#: templates/js/translated/part.js:178 msgid "Select destination stock location" msgstr "" -#: templates/js/translated/part.js:193 +#: templates/js/translated/part.js:196 msgid "Copy Category Parameters" msgstr "" -#: templates/js/translated/part.js:194 +#: templates/js/translated/part.js:197 msgid "Copy parameter templates from selected part category" msgstr "" -#: templates/js/translated/part.js:202 +#: templates/js/translated/part.js:205 msgid "Add Supplier Data" msgstr "" -#: templates/js/translated/part.js:203 +#: templates/js/translated/part.js:206 msgid "Create initial supplier data for this part" msgstr "" -#: templates/js/translated/part.js:259 +#: templates/js/translated/part.js:262 msgid "Copy Image" msgstr "" -#: templates/js/translated/part.js:260 +#: templates/js/translated/part.js:263 msgid "Copy image from original part" msgstr "" -#: templates/js/translated/part.js:268 +#: templates/js/translated/part.js:271 msgid "Copy bill of materials from original part" msgstr "" -#: templates/js/translated/part.js:275 +#: templates/js/translated/part.js:278 msgid "Copy Parameters" msgstr "" -#: templates/js/translated/part.js:276 +#: templates/js/translated/part.js:279 msgid "Copy parameter data from original part" msgstr "" -#: templates/js/translated/part.js:289 +#: templates/js/translated/part.js:292 msgid "Parent part category" msgstr "" -#: templates/js/translated/part.js:333 +#: templates/js/translated/part.js:336 msgid "Edit Part" msgstr "" -#: templates/js/translated/part.js:335 +#: templates/js/translated/part.js:338 msgid "Part edited" msgstr "" -#: templates/js/translated/part.js:403 +#: templates/js/translated/part.js:410 msgid "You are subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:405 +#: templates/js/translated/part.js:412 msgid "You have subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:410 +#: templates/js/translated/part.js:417 msgid "Subscribe to notifications for this item" msgstr "" -#: templates/js/translated/part.js:412 +#: templates/js/translated/part.js:419 msgid "You have unsubscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:441 templates/js/translated/part.js:526 +#: templates/js/translated/part.js:448 templates/js/translated/part.js:533 msgid "Trackable part" msgstr "" -#: templates/js/translated/part.js:445 templates/js/translated/part.js:530 +#: templates/js/translated/part.js:452 templates/js/translated/part.js:537 msgid "Virtual part" msgstr "" -#: templates/js/translated/part.js:457 +#: templates/js/translated/part.js:464 msgid "Subscribed part" msgstr "" -#: templates/js/translated/part.js:461 +#: templates/js/translated/part.js:468 msgid "Salable part" msgstr "" -#: templates/js/translated/part.js:576 +#: templates/js/translated/part.js:583 msgid "No variants found" msgstr "" -#: templates/js/translated/part.js:765 +#: templates/js/translated/part.js:946 msgid "Delete part relationship" msgstr "" -#: templates/js/translated/part.js:789 +#: templates/js/translated/part.js:970 msgid "Delete Part Relationship" msgstr "" -#: templates/js/translated/part.js:856 templates/js/translated/part.js:1116 +#: templates/js/translated/part.js:1037 templates/js/translated/part.js:1297 msgid "No parts found" msgstr "" -#: templates/js/translated/part.js:1026 +#: templates/js/translated/part.js:1207 msgid "No category" msgstr "" -#: templates/js/translated/part.js:1049 +#: templates/js/translated/part.js:1230 #: templates/js/translated/table_filters.js:381 msgid "Low stock" msgstr "" -#: templates/js/translated/part.js:1140 templates/js/translated/part.js:1312 -#: templates/js/translated/stock.js:1832 +#: templates/js/translated/part.js:1321 templates/js/translated/part.js:1493 +#: templates/js/translated/stock.js:1914 msgid "Display as list" msgstr "" -#: templates/js/translated/part.js:1156 +#: templates/js/translated/part.js:1337 msgid "Display as grid" msgstr "" -#: templates/js/translated/part.js:1331 templates/js/translated/stock.js:1851 +#: templates/js/translated/part.js:1512 templates/js/translated/stock.js:1933 msgid "Display as tree" msgstr "" -#: templates/js/translated/part.js:1395 +#: templates/js/translated/part.js:1576 msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:1409 templates/js/translated/stock.js:1895 +#: templates/js/translated/part.js:1590 templates/js/translated/stock.js:1977 msgid "Path" msgstr "" -#: templates/js/translated/part.js:1453 +#: templates/js/translated/part.js:1634 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:1504 templates/js/translated/stock.js:816 +#: templates/js/translated/part.js:1685 templates/js/translated/stock.js:898 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:1505 templates/js/translated/stock.js:817 +#: templates/js/translated/part.js:1686 templates/js/translated/stock.js:899 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:1511 +#: templates/js/translated/part.js:1692 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:1533 +#: templates/js/translated/part.js:1714 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:1547 +#: templates/js/translated/part.js:1728 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:1572 +#: templates/js/translated/part.js:1753 #, python-brace-format msgid "No ${human_name} information found" msgstr "" -#: templates/js/translated/part.js:1627 +#: templates/js/translated/part.js:1808 #, python-brace-format msgid "Edit ${human_name}" msgstr "" -#: templates/js/translated/part.js:1628 +#: templates/js/translated/part.js:1809 #, python-brace-format msgid "Delete ${human_name}" msgstr "" -#: templates/js/translated/part.js:1729 +#: templates/js/translated/part.js:1910 msgid "Single Price" msgstr "" -#: templates/js/translated/part.js:1748 +#: templates/js/translated/part.js:1929 msgid "Single Price Difference" msgstr "" @@ -7930,276 +7964,300 @@ msgstr "" msgid "Sales Order(s) must be selected before printing report" msgstr "" -#: templates/js/translated/stock.js:70 +#: templates/js/translated/stock.js:71 msgid "Serialize Stock Item" msgstr "" -#: templates/js/translated/stock.js:88 templates/js/translated/stock.js:167 +#: templates/js/translated/stock.js:89 templates/js/translated/stock.js:168 msgid "Next available serial number" msgstr "" -#: templates/js/translated/stock.js:90 templates/js/translated/stock.js:169 +#: templates/js/translated/stock.js:91 templates/js/translated/stock.js:170 msgid "Latest serial number" msgstr "" -#: templates/js/translated/stock.js:104 +#: templates/js/translated/stock.js:105 msgid "Parent stock location" msgstr "" -#: templates/js/translated/stock.js:140 +#: templates/js/translated/stock.js:141 msgid "New Stock Location" msgstr "" -#: templates/js/translated/stock.js:180 +#: templates/js/translated/stock.js:181 msgid "This part cannot be serialized" msgstr "" -#: templates/js/translated/stock.js:219 +#: templates/js/translated/stock.js:220 msgid "Enter initial quantity for this stock item" msgstr "" -#: templates/js/translated/stock.js:225 +#: templates/js/translated/stock.js:226 msgid "Enter serial numbers for new stock (or leave blank)" msgstr "" -#: templates/js/translated/stock.js:368 +#: templates/js/translated/stock.js:369 msgid "Created new stock item" msgstr "" -#: templates/js/translated/stock.js:381 +#: templates/js/translated/stock.js:382 msgid "Created multiple stock items" msgstr "" -#: templates/js/translated/stock.js:420 +#: templates/js/translated/stock.js:407 +msgid "Find Serial Number" +msgstr "" + +#: templates/js/translated/stock.js:411 templates/js/translated/stock.js:412 +msgid "Enter serial number" +msgstr "" + +#: templates/js/translated/stock.js:428 +msgid "Enter a serial number" +msgstr "" + +#: templates/js/translated/stock.js:448 +msgid "No matching serial number" +msgstr "" + +#: templates/js/translated/stock.js:457 +msgid "More than one matching result found" +msgstr "" + +#: templates/js/translated/stock.js:502 msgid "Export Stock" msgstr "" -#: templates/js/translated/stock.js:431 +#: templates/js/translated/stock.js:513 msgid "Include Sublocations" msgstr "" -#: templates/js/translated/stock.js:432 +#: templates/js/translated/stock.js:514 msgid "Include stock items in sublocations" msgstr "" -#: templates/js/translated/stock.js:474 +#: templates/js/translated/stock.js:556 msgid "Transfer Stock" msgstr "" -#: templates/js/translated/stock.js:475 +#: templates/js/translated/stock.js:557 msgid "Move" msgstr "" -#: templates/js/translated/stock.js:481 +#: templates/js/translated/stock.js:563 msgid "Count Stock" msgstr "" -#: templates/js/translated/stock.js:482 +#: templates/js/translated/stock.js:564 msgid "Count" msgstr "" -#: templates/js/translated/stock.js:486 +#: templates/js/translated/stock.js:568 msgid "Remove Stock" msgstr "" -#: templates/js/translated/stock.js:487 +#: templates/js/translated/stock.js:569 msgid "Take" msgstr "" -#: templates/js/translated/stock.js:491 +#: templates/js/translated/stock.js:573 msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:492 users/models.py:200 +#: templates/js/translated/stock.js:574 users/models.py:200 msgid "Add" msgstr "" -#: templates/js/translated/stock.js:496 templates/stock_table.html:56 +#: templates/js/translated/stock.js:578 templates/stock_table.html:56 msgid "Delete Stock" msgstr "" -#: templates/js/translated/stock.js:585 +#: templates/js/translated/stock.js:667 msgid "Quantity cannot be adjusted for serialized stock" msgstr "" -#: templates/js/translated/stock.js:585 +#: templates/js/translated/stock.js:667 msgid "Specify stock quantity" msgstr "" -#: templates/js/translated/stock.js:625 +#: templates/js/translated/stock.js:707 msgid "You must select at least one available stock item" msgstr "" -#: templates/js/translated/stock.js:783 +#: templates/js/translated/stock.js:865 msgid "PASS" msgstr "" -#: templates/js/translated/stock.js:785 +#: templates/js/translated/stock.js:867 msgid "FAIL" msgstr "" -#: templates/js/translated/stock.js:790 +#: templates/js/translated/stock.js:872 msgid "NO RESULT" msgstr "" -#: templates/js/translated/stock.js:812 +#: templates/js/translated/stock.js:894 msgid "Add test result" msgstr "" -#: templates/js/translated/stock.js:838 +#: templates/js/translated/stock.js:920 msgid "No test results found" msgstr "" -#: templates/js/translated/stock.js:895 +#: templates/js/translated/stock.js:977 msgid "Test Date" msgstr "" -#: templates/js/translated/stock.js:1002 +#: templates/js/translated/stock.js:1084 msgid "In production" msgstr "" -#: templates/js/translated/stock.js:1006 +#: templates/js/translated/stock.js:1088 msgid "Installed in Stock Item" msgstr "" -#: templates/js/translated/stock.js:1010 +#: templates/js/translated/stock.js:1092 msgid "Shipped to customer" msgstr "" -#: templates/js/translated/stock.js:1014 +#: templates/js/translated/stock.js:1096 msgid "Assigned to Sales Order" msgstr "" -#: templates/js/translated/stock.js:1020 +#: templates/js/translated/stock.js:1102 msgid "No stock location set" msgstr "Geen voorraadlocatie ingesteld" -#: templates/js/translated/stock.js:1178 +#: templates/js/translated/stock.js:1260 msgid "Stock item is in production" msgstr "" -#: templates/js/translated/stock.js:1183 +#: templates/js/translated/stock.js:1265 msgid "Stock item assigned to sales order" msgstr "" -#: templates/js/translated/stock.js:1186 +#: templates/js/translated/stock.js:1268 msgid "Stock item assigned to customer" msgstr "" -#: templates/js/translated/stock.js:1190 +#: templates/js/translated/stock.js:1272 msgid "Stock item has expired" msgstr "" -#: templates/js/translated/stock.js:1192 +#: templates/js/translated/stock.js:1274 msgid "Stock item will expire soon" msgstr "" -#: templates/js/translated/stock.js:1196 +#: templates/js/translated/stock.js:1278 msgid "Stock item has been allocated" msgstr "" -#: templates/js/translated/stock.js:1200 +#: templates/js/translated/stock.js:1282 msgid "Stock item has been installed in another item" msgstr "" -#: templates/js/translated/stock.js:1207 +#: templates/js/translated/stock.js:1289 msgid "Stock item has been rejected" msgstr "" -#: templates/js/translated/stock.js:1209 +#: templates/js/translated/stock.js:1291 msgid "Stock item is lost" msgstr "" -#: templates/js/translated/stock.js:1211 +#: templates/js/translated/stock.js:1293 msgid "Stock item is destroyed" msgstr "" -#: templates/js/translated/stock.js:1215 +#: templates/js/translated/stock.js:1297 #: templates/js/translated/table_filters.js:183 msgid "Depleted" msgstr "" -#: templates/js/translated/stock.js:1265 +#: templates/js/translated/stock.js:1347 msgid "Stocktake" msgstr "" -#: templates/js/translated/stock.js:1338 +#: templates/js/translated/stock.js:1420 msgid "Supplier part not specified" msgstr "" -#: templates/js/translated/stock.js:1376 +#: templates/js/translated/stock.js:1458 msgid "No stock items matching query" msgstr "" -#: templates/js/translated/stock.js:1397 templates/js/translated/stock.js:1445 +#: templates/js/translated/stock.js:1479 templates/js/translated/stock.js:1527 msgid "items" msgstr "" -#: templates/js/translated/stock.js:1485 +#: templates/js/translated/stock.js:1567 msgid "batches" msgstr "" -#: templates/js/translated/stock.js:1512 +#: templates/js/translated/stock.js:1594 msgid "locations" msgstr "" -#: templates/js/translated/stock.js:1514 +#: templates/js/translated/stock.js:1596 msgid "Undefined location" msgstr "" -#: templates/js/translated/stock.js:1688 +#: templates/js/translated/stock.js:1770 msgid "Set Stock Status" msgstr "" -#: templates/js/translated/stock.js:1702 +#: templates/js/translated/stock.js:1784 msgid "Select Status Code" msgstr "" -#: templates/js/translated/stock.js:1703 +#: templates/js/translated/stock.js:1785 msgid "Status code must be selected" msgstr "" -#: templates/js/translated/stock.js:1927 +#: templates/js/translated/stock.js:2009 msgid "Invalid date" msgstr "" -#: templates/js/translated/stock.js:1974 +#: templates/js/translated/stock.js:2031 +msgid "Details" +msgstr "" + +#: templates/js/translated/stock.js:2056 msgid "Location no longer exists" msgstr "" -#: templates/js/translated/stock.js:1993 +#: templates/js/translated/stock.js:2075 msgid "Purchase order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2012 +#: templates/js/translated/stock.js:2094 msgid "Customer no longer exists" msgstr "" -#: templates/js/translated/stock.js:2030 +#: templates/js/translated/stock.js:2112 msgid "Stock item no longer exists" msgstr "" -#: templates/js/translated/stock.js:2053 +#: templates/js/translated/stock.js:2135 msgid "Added" msgstr "" -#: templates/js/translated/stock.js:2061 +#: templates/js/translated/stock.js:2143 msgid "Removed" msgstr "" -#: templates/js/translated/stock.js:2102 +#: templates/js/translated/stock.js:2184 msgid "Edit tracking entry" msgstr "" -#: templates/js/translated/stock.js:2103 +#: templates/js/translated/stock.js:2185 msgid "Delete tracking entry" msgstr "" -#: templates/js/translated/stock.js:2154 +#: templates/js/translated/stock.js:2236 msgid "No installed items" msgstr "" -#: templates/js/translated/stock.js:2205 +#: templates/js/translated/stock.js:2287 msgid "Uninstall Stock Item" msgstr "" @@ -8209,7 +8267,7 @@ msgstr "" #: templates/js/translated/table_filters.js:60 msgid "Assembled Part" -msgstr "" +msgstr "Samengesteld onderdeel" #: templates/js/translated/table_filters.js:64 msgid "Validated" @@ -8287,7 +8345,7 @@ msgstr "" #: templates/js/translated/table_filters.js:169 msgid "Part is an assembly" -msgstr "" +msgstr "Samengesteld onderdeel" #: templates/js/translated/table_filters.js:173 msgid "Is allocated" diff --git a/InvenTree/locale/no/LC_MESSAGES/django.po b/InvenTree/locale/no/LC_MESSAGES/django.po index 379bd5150e..d440762c4b 100644 --- a/InvenTree/locale/no/LC_MESSAGES/django.po +++ b/InvenTree/locale/no/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-11-30 21:49+0000\n" -"PO-Revision-Date: 2021-11-30 21:51\n" +"POT-Creation-Date: 2021-12-03 10:37+0000\n" +"PO-Revision-Date: 2021-12-03 11:25\n" "Last-Translator: \n" "Language-Team: Norwegian\n" "Language: no_NO\n" @@ -114,129 +114,130 @@ msgstr "Ingen serienummer funnet" msgid "Number of unique serial number ({s}) must match quantity ({q})" msgstr "Antall unike serienummer ({s}) må samsvare mengde ({q})" -#: InvenTree/models.py:114 +#: InvenTree/models.py:120 msgid "Missing file" msgstr "" -#: InvenTree/models.py:115 +#: InvenTree/models.py:121 msgid "Missing external link" msgstr "" -#: InvenTree/models.py:126 stock/models.py:1874 +#: InvenTree/models.py:132 stock/models.py:1864 #: templates/js/translated/attachment.js:117 msgid "Attachment" msgstr "Vedlegg" -#: InvenTree/models.py:127 +#: InvenTree/models.py:133 msgid "Select file to attach" msgstr "Velg fil å legge ved" -#: InvenTree/models.py:133 company/models.py:131 company/models.py:348 +#: InvenTree/models.py:139 company/models.py:131 company/models.py:348 #: company/models.py:564 order/models.py:163 part/models.py:797 #: report/templates/report/inventree_build_order_base.html:165 #: templates/js/translated/company.js:537 -#: templates/js/translated/company.js:826 templates/js/translated/part.js:1077 +#: templates/js/translated/company.js:826 templates/js/translated/part.js:1258 msgid "Link" msgstr "" -#: InvenTree/models.py:134 build/models.py:330 part/models.py:798 -#: stock/models.py:540 +#: InvenTree/models.py:140 build/models.py:330 part/models.py:798 +#: stock/models.py:530 msgid "Link to external URL" msgstr "" -#: InvenTree/models.py:137 templates/js/translated/attachment.js:161 +#: InvenTree/models.py:143 templates/js/translated/attachment.js:161 msgid "Comment" msgstr "Kommenter" -#: InvenTree/models.py:137 +#: InvenTree/models.py:143 msgid "File comment" msgstr "Kommentar til fil" -#: InvenTree/models.py:143 InvenTree/models.py:144 common/models.py:1185 +#: InvenTree/models.py:149 InvenTree/models.py:150 common/models.py:1185 #: common/models.py:1186 part/models.py:2205 part/models.py:2225 #: report/templates/report/inventree_test_report_base.html:96 -#: templates/js/translated/stock.js:2084 +#: templates/js/translated/stock.js:2166 msgid "User" msgstr "Bruker" -#: InvenTree/models.py:147 +#: InvenTree/models.py:153 msgid "upload date" msgstr "opplastet dato" -#: InvenTree/models.py:170 +#: InvenTree/models.py:176 msgid "Filename must not be empty" msgstr "" -#: InvenTree/models.py:193 +#: InvenTree/models.py:199 msgid "Invalid attachment directory" msgstr "" -#: InvenTree/models.py:203 +#: InvenTree/models.py:209 #, python-brace-format msgid "Filename contains illegal character '{c}'" msgstr "" -#: InvenTree/models.py:206 +#: InvenTree/models.py:212 msgid "Filename missing extension" msgstr "" -#: InvenTree/models.py:213 +#: InvenTree/models.py:219 msgid "Attachment with this filename already exists" msgstr "" -#: InvenTree/models.py:220 +#: InvenTree/models.py:226 msgid "Error renaming file" msgstr "" -#: InvenTree/models.py:255 +#: InvenTree/models.py:261 msgid "Invalid choice" msgstr "Ugyldig valg" -#: InvenTree/models.py:271 InvenTree/models.py:272 company/models.py:415 +#: InvenTree/models.py:277 InvenTree/models.py:278 company/models.py:415 #: label/models.py:112 part/models.py:741 part/models.py:2389 -#: part/templates/part/detail.html:25 report/models.py:181 -#: templates/InvenTree/settings/settings.html:259 -#: templates/js/translated/company.js:638 templates/js/translated/part.js:499 -#: templates/js/translated/part.js:636 templates/js/translated/part.js:1384 -#: templates/js/translated/stock.js:1877 +#: report/models.py:181 templates/InvenTree/settings/settings.html:259 +#: templates/js/translated/company.js:638 templates/js/translated/part.js:506 +#: templates/js/translated/part.js:643 templates/js/translated/part.js:1565 +#: templates/js/translated/stock.js:1959 msgid "Name" msgstr "Navn" -#: InvenTree/models.py:278 build/models.py:207 +#: InvenTree/models.py:284 build/models.py:207 #: build/templates/build/detail.html:25 company/models.py:354 -#: company/models.py:570 company/templates/company/manufacturer_part.html:80 -#: company/templates/company/supplier_part.html:81 label/models.py:119 -#: order/models.py:161 part/models.py:764 part/templates/part/detail.html:30 +#: company/models.py:570 company/templates/company/company_base.html:68 +#: company/templates/company/manufacturer_part.html:76 +#: company/templates/company/supplier_part.html:73 label/models.py:119 +#: order/models.py:161 part/models.py:764 part/templates/part/category.html:70 +#: part/templates/part/part_base.html:163 #: part/templates/part/set_category.html:14 report/models.py:194 #: report/models.py:553 report/models.py:592 #: report/templates/report/inventree_build_order_base.html:118 -#: stock/templates/stock/location.html:108 templates/js/translated/bom.js:215 +#: stock/templates/stock/location.html:89 templates/js/translated/bom.js:215 #: templates/js/translated/bom.js:428 templates/js/translated/build.js:1621 #: templates/js/translated/company.js:345 #: templates/js/translated/company.js:548 -#: templates/js/translated/company.js:837 templates/js/translated/order.js:673 -#: templates/js/translated/order.js:855 templates/js/translated/order.js:1091 -#: templates/js/translated/part.js:558 templates/js/translated/part.js:752 -#: templates/js/translated/part.js:837 templates/js/translated/part.js:1007 -#: templates/js/translated/part.js:1403 templates/js/translated/part.js:1472 -#: templates/js/translated/stock.js:1151 templates/js/translated/stock.js:1889 -#: templates/js/translated/stock.js:1934 +#: templates/js/translated/company.js:837 templates/js/translated/order.js:680 +#: templates/js/translated/order.js:854 templates/js/translated/order.js:1090 +#: templates/js/translated/part.js:565 templates/js/translated/part.js:933 +#: templates/js/translated/part.js:1018 templates/js/translated/part.js:1188 +#: templates/js/translated/part.js:1584 templates/js/translated/part.js:1653 +#: templates/js/translated/stock.js:1233 templates/js/translated/stock.js:1971 +#: templates/js/translated/stock.js:2016 msgid "Description" msgstr "Beskrivelse" -#: InvenTree/models.py:279 +#: InvenTree/models.py:285 msgid "Description (optional)" msgstr "Beskrivelse (valgfritt)" -#: InvenTree/models.py:287 +#: InvenTree/models.py:293 msgid "parent" msgstr "" -#: InvenTree/serializers.py:62 part/models.py:2674 +#: InvenTree/serializers.py:65 part/models.py:2674 msgid "Must be a valid number" msgstr "Nummer må være gyldig" -#: InvenTree/serializers.py:285 +#: InvenTree/serializers.py:299 msgid "Filename" msgstr "" @@ -361,7 +362,7 @@ msgid "Returned" msgstr "" #: InvenTree/status_codes.py:143 -#: order/templates/order/sales_order_base.html:147 +#: order/templates/order/sales_order_base.html:148 msgid "Shipped" msgstr "" @@ -566,7 +567,7 @@ msgid "Barcode associated with StockItem" msgstr "" #: build/forms.py:36 build/models.py:1283 -#: build/templates/build/build_base.html:124 +#: build/templates/build/build_base.html:132 #: build/templates/build/detail.html:35 common/models.py:1225 #: company/forms.py:42 company/templates/company/supplier_part.html:251 #: order/forms.py:102 order/models.py:729 order/models.py:991 @@ -574,26 +575,27 @@ msgstr "" #: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:223 #: part/forms.py:239 part/forms.py:255 part/models.py:2576 #: part/templates/part/bom_upload/match_parts.html:31 -#: part/templates/part/detail.html:1076 part/templates/part/detail.html:1162 +#: part/templates/part/detail.html:967 part/templates/part/detail.html:1053 #: part/templates/part/part_pricing.html:16 #: report/templates/report/inventree_build_order_base.html:114 #: report/templates/report/inventree_po_report.html:91 #: report/templates/report/inventree_so_report.html:91 #: report/templates/report/inventree_test_report_base.html:81 #: report/templates/report/inventree_test_report_base.html:139 -#: stock/forms.py:156 stock/serializers.py:286 -#: stock/templates/stock/item_base.html:256 +#: stock/forms.py:156 stock/serializers.py:291 +#: stock/templates/stock/item_base.html:174 #: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:443 #: templates/js/translated/build.js:235 templates/js/translated/build.js:435 #: templates/js/translated/build.js:629 templates/js/translated/build.js:639 #: templates/js/translated/build.js:1015 templates/js/translated/build.js:1362 #: templates/js/translated/model_renderers.js:99 -#: templates/js/translated/order.js:892 templates/js/translated/order.js:1205 -#: templates/js/translated/order.js:1283 templates/js/translated/order.js:1290 -#: templates/js/translated/order.js:1379 templates/js/translated/order.js:1479 -#: templates/js/translated/part.js:1615 templates/js/translated/part.js:1738 -#: templates/js/translated/part.js:1816 templates/js/translated/stock.js:377 -#: templates/js/translated/stock.js:2069 templates/js/translated/stock.js:2171 +#: templates/js/translated/order.js:891 templates/js/translated/order.js:1204 +#: templates/js/translated/order.js:1282 templates/js/translated/order.js:1289 +#: templates/js/translated/order.js:1378 templates/js/translated/order.js:1478 +#: templates/js/translated/part.js:843 templates/js/translated/part.js:1796 +#: templates/js/translated/part.js:1919 templates/js/translated/part.js:1997 +#: templates/js/translated/stock.js:378 templates/js/translated/stock.js:2151 +#: templates/js/translated/stock.js:2253 msgid "Quantity" msgstr "" @@ -602,8 +604,8 @@ msgid "Enter quantity for build output" msgstr "" #: build/forms.py:41 order/forms.py:96 stock/forms.py:95 -#: stock/serializers.py:307 templates/js/translated/stock.js:224 -#: templates/js/translated/stock.js:378 +#: stock/serializers.py:312 templates/js/translated/stock.js:225 +#: templates/js/translated/stock.js:379 msgid "Serial Numbers" msgstr "" @@ -646,7 +648,7 @@ msgstr "" #: build/templates/build/index.html:8 build/templates/build/index.html:12 #: order/templates/order/sales_order_detail.html:42 #: order/templates/order/so_sidebar.html:7 -#: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:221 +#: part/templates/part/part_sidebar.html:20 templates/InvenTree/index.html:221 #: templates/InvenTree/search.html:145 #: templates/InvenTree/settings/sidebar.html:42 users/models.py:44 msgid "Build Orders" @@ -662,7 +664,7 @@ msgstr "" #: report/templates/report/inventree_po_report.html:92 #: report/templates/report/inventree_so_report.html:92 #: templates/js/translated/bom.js:435 templates/js/translated/build.js:1119 -#: templates/js/translated/order.js:886 templates/js/translated/order.js:1473 +#: templates/js/translated/order.js:885 templates/js/translated/order.js:1472 msgid "Reference" msgstr "" @@ -670,7 +672,7 @@ msgstr "" msgid "Brief description of the build" msgstr "" -#: build/models.py:219 build/templates/build/build_base.html:156 +#: build/models.py:219 build/templates/build/build_base.html:164 #: build/templates/build/detail.html:88 msgid "Parent Build" msgstr "" @@ -679,7 +681,7 @@ msgstr "" msgid "BuildOrder to which this build is allocated" msgstr "" -#: build/models.py:225 build/templates/build/build_base.html:119 +#: build/models.py:225 build/templates/build/build_base.html:77 #: build/templates/build/detail.html:30 company/models.py:705 #: order/models.py:789 order/models.py:860 #: order/templates/order/order_wizard/select_parts.html:32 part/models.py:357 @@ -700,10 +702,10 @@ msgstr "" #: templates/js/translated/build.js:988 templates/js/translated/build.js:1359 #: templates/js/translated/build.js:1626 templates/js/translated/company.js:489 #: templates/js/translated/company.js:746 templates/js/translated/order.js:426 -#: templates/js/translated/order.js:840 templates/js/translated/order.js:1457 -#: templates/js/translated/part.js:737 templates/js/translated/part.js:818 -#: templates/js/translated/part.js:985 templates/js/translated/stock.js:508 -#: templates/js/translated/stock.js:1108 templates/js/translated/stock.js:2159 +#: templates/js/translated/order.js:839 templates/js/translated/order.js:1456 +#: templates/js/translated/part.js:918 templates/js/translated/part.js:999 +#: templates/js/translated/part.js:1166 templates/js/translated/stock.js:590 +#: templates/js/translated/stock.js:1190 templates/js/translated/stock.js:2241 msgid "Part" msgstr "" @@ -751,7 +753,7 @@ msgstr "" msgid "Number of stock items which have been completed" msgstr "" -#: build/models.py:277 part/templates/part/part_base.html:216 +#: build/models.py:277 part/templates/part/part_base.html:234 msgid "Build Status" msgstr "" @@ -759,7 +761,7 @@ msgstr "" msgid "Build status code" msgstr "" -#: build/models.py:285 stock/models.py:544 +#: build/models.py:285 stock/models.py:534 msgid "Batch Code" msgstr "" @@ -768,7 +770,7 @@ msgid "Batch code for this build output" msgstr "" #: build/models.py:292 order/models.py:165 part/models.py:936 -#: part/templates/part/detail.html:86 templates/js/translated/order.js:1104 +#: part/templates/part/part_base.html:313 templates/js/translated/order.js:1103 msgid "Creation Date" msgstr "" @@ -797,12 +799,12 @@ msgstr "" msgid "User who issued this build order" msgstr "" -#: build/models.py:323 build/templates/build/build_base.html:177 +#: build/models.py:323 build/templates/build/build_base.html:185 #: build/templates/build/detail.html:116 order/models.py:179 -#: order/templates/order/order_base.html:154 -#: order/templates/order/sales_order_base.html:161 part/models.py:940 +#: order/templates/order/order_base.html:158 +#: order/templates/order/sales_order_base.html:162 part/models.py:940 #: report/templates/report/inventree_build_order_base.html:159 -#: templates/js/translated/build.js:1680 templates/js/translated/order.js:700 +#: templates/js/translated/build.js:1680 templates/js/translated/order.js:699 msgid "Responsible" msgstr "" @@ -811,10 +813,10 @@ msgid "User responsible for this build order" msgstr "" #: build/models.py:329 build/templates/build/detail.html:102 -#: company/templates/company/manufacturer_part.html:87 -#: company/templates/company/supplier_part.html:88 -#: part/templates/part/detail.html:80 stock/models.py:538 -#: stock/templates/stock/item_base.html:346 +#: company/templates/company/manufacturer_part.html:102 +#: company/templates/company/supplier_part.html:126 +#: part/templates/part/part_base.html:354 stock/models.py:528 +#: stock/templates/stock/item_base.html:374 msgid "External Link" msgstr "" @@ -824,15 +826,15 @@ msgstr "" #: order/models.py:183 order/models.py:738 #: order/templates/order/po_sidebar.html:11 #: order/templates/order/so_sidebar.html:11 part/models.py:925 -#: part/templates/part/detail.html:223 part/templates/part/part_sidebar.html:52 +#: part/templates/part/detail.html:116 part/templates/part/part_sidebar.html:50 #: report/templates/report/inventree_build_order_base.html:173 -#: stock/forms.py:154 stock/forms.py:204 stock/forms.py:238 stock/models.py:610 -#: stock/models.py:1774 stock/models.py:1880 stock/serializers.py:325 -#: stock/serializers.py:583 stock/templates/stock/stock_sidebar.html:21 +#: stock/forms.py:154 stock/forms.py:204 stock/forms.py:238 stock/models.py:600 +#: stock/models.py:1764 stock/models.py:1870 stock/serializers.py:330 +#: stock/serializers.py:588 stock/templates/stock/stock_sidebar.html:21 #: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:599 -#: templates/js/translated/company.js:842 templates/js/translated/order.js:985 -#: templates/js/translated/order.js:1583 templates/js/translated/stock.js:891 -#: templates/js/translated/stock.js:1370 +#: templates/js/translated/company.js:842 templates/js/translated/order.js:984 +#: templates/js/translated/order.js:1582 templates/js/translated/stock.js:973 +#: templates/js/translated/stock.js:1452 msgid "Notes" msgstr "" @@ -877,7 +879,7 @@ msgstr "" msgid "Selected stock item not found in BOM" msgstr "" -#: build/models.py:1253 stock/templates/stock/item_base.html:318 +#: build/models.py:1253 stock/templates/stock/item_base.html:346 #: templates/InvenTree/search.html:143 templates/js/translated/build.js:1599 #: templates/navbar.html:33 msgid "Build" @@ -890,11 +892,11 @@ msgstr "" #: build/models.py:1270 build/serializers.py:328 #: stock/templates/stock/item_base.html:8 #: stock/templates/stock/item_base.html:16 -#: stock/templates/stock/item_base.html:340 +#: stock/templates/stock/item_base.html:368 #: templates/js/translated/build.js:408 templates/js/translated/build.js:413 #: templates/js/translated/build.js:1361 templates/js/translated/build.js:1742 -#: templates/js/translated/order.js:1178 templates/js/translated/order.js:1183 -#: templates/js/translated/stock.js:2020 +#: templates/js/translated/order.js:1177 templates/js/translated/order.js:1182 +#: templates/js/translated/stock.js:2102 msgid "Stock Item" msgstr "" @@ -934,16 +936,16 @@ msgstr "" msgid "This build output is not fully allocated" msgstr "" -#: build/serializers.py:190 order/serializers.py:219 order/serializers.py:287 -#: stock/forms.py:236 stock/serializers.py:318 stock/serializers.py:685 -#: stock/templates/stock/item_base.html:286 +#: build/serializers.py:190 order/serializers.py:228 order/serializers.py:296 +#: stock/forms.py:236 stock/serializers.py:323 stock/serializers.py:690 +#: stock/templates/stock/item_base.html:314 #: templates/js/translated/barcode.js:384 #: templates/js/translated/barcode.js:557 templates/js/translated/build.js:420 #: templates/js/translated/build.js:1027 templates/js/translated/order.js:348 -#: templates/js/translated/order.js:1190 templates/js/translated/order.js:1298 -#: templates/js/translated/order.js:1304 templates/js/translated/part.js:181 -#: templates/js/translated/stock.js:510 templates/js/translated/stock.js:1251 -#: templates/js/translated/stock.js:1961 +#: templates/js/translated/order.js:1189 templates/js/translated/order.js:1297 +#: templates/js/translated/order.js:1303 templates/js/translated/part.js:177 +#: templates/js/translated/stock.js:592 templates/js/translated/stock.js:1333 +#: templates/js/translated/stock.js:2043 msgid "Location" msgstr "" @@ -951,13 +953,13 @@ msgstr "" msgid "Location for completed build outputs" msgstr "" -#: build/serializers.py:197 build/templates/build/build_base.html:129 +#: build/serializers.py:197 build/templates/build/build_base.html:137 #: build/templates/build/detail.html:63 order/models.py:572 -#: order/serializers.py:240 stock/templates/stock/item_base.html:409 +#: order/serializers.py:249 stock/templates/stock/item_base.html:180 #: templates/js/translated/barcode.js:140 templates/js/translated/build.js:1655 -#: templates/js/translated/order.js:431 templates/js/translated/order.js:677 -#: templates/js/translated/order.js:1096 templates/js/translated/stock.js:1226 -#: templates/js/translated/stock.js:2038 templates/js/translated/stock.js:2187 +#: templates/js/translated/order.js:431 templates/js/translated/order.js:1095 +#: templates/js/translated/stock.js:1308 templates/js/translated/stock.js:2120 +#: templates/js/translated/stock.js:2269 msgid "Status" msgstr "" @@ -986,8 +988,8 @@ msgstr "" msgid "Item must be in stock" msgstr "" -#: build/serializers.py:348 order/models.py:316 order/serializers.py:233 -#: stock/models.py:381 stock/models.py:1103 stock/serializers.py:298 +#: build/serializers.py:348 order/models.py:316 order/serializers.py:242 +#: stock/models.py:371 stock/models.py:1093 stock/serializers.py:303 msgid "Quantity must be greater than zero" msgstr "" @@ -1031,7 +1033,7 @@ msgid "Edit Build" msgstr "" #: build/templates/build/build_base.html:56 -#: build/templates/build/build_base.html:207 build/views.py:56 +#: build/templates/build/build_base.html:215 build/views.py:56 msgid "Cancel Build" msgstr "" @@ -1041,93 +1043,95 @@ msgstr "" #: build/templates/build/build_base.html:64 #: build/templates/build/build_base.html:65 -#: build/templates/build/build_base.html:223 +#: build/templates/build/build_base.html:231 msgid "Complete Build" msgstr "" -#: build/templates/build/build_base.html:79 +#: build/templates/build/build_base.html:82 +msgid "Build Description" +msgstr "" + +#: build/templates/build/build_base.html:91 #, python-format msgid "This Build Order is allocated to Sales Order %(link)s" msgstr "" -#: build/templates/build/build_base.html:86 +#: build/templates/build/build_base.html:98 #, python-format msgid "This Build Order is a child of Build Order %(link)s" msgstr "" -#: build/templates/build/build_base.html:93 +#: build/templates/build/build_base.html:105 msgid "Build Order is ready to mark as completed" msgstr "" -#: build/templates/build/build_base.html:98 +#: build/templates/build/build_base.html:110 msgid "Build Order cannot be completed as outstanding outputs remain" msgstr "" -#: build/templates/build/build_base.html:103 +#: build/templates/build/build_base.html:115 msgid "Required build quantity has not yet been completed" msgstr "" -#: build/templates/build/build_base.html:108 +#: build/templates/build/build_base.html:120 msgid "Stock has not been fully allocated to this Build Order" msgstr "" -#: build/templates/build/build_base.html:138 +#: build/templates/build/build_base.html:146 #: build/templates/build/detail.html:132 -#: order/templates/order/order_base.html:140 -#: order/templates/order/sales_order_base.html:140 +#: order/templates/order/order_base.html:144 +#: order/templates/order/sales_order_base.html:141 #: report/templates/report/inventree_build_order_base.html:126 -#: templates/js/translated/build.js:1692 templates/js/translated/order.js:690 -#: templates/js/translated/order.js:1109 +#: templates/js/translated/build.js:1692 templates/js/translated/order.js:689 +#: templates/js/translated/order.js:1108 msgid "Target Date" msgstr "" -#: build/templates/build/build_base.html:143 +#: build/templates/build/build_base.html:151 #, python-format msgid "This build was due on %(target)s" msgstr "" -#: build/templates/build/build_base.html:143 -#: build/templates/build/build_base.html:188 -#: order/templates/order/order_base.html:81 -#: order/templates/order/order_base.html:102 -#: order/templates/order/sales_order_base.html:78 -#: order/templates/order/sales_order_base.html:107 +#: build/templates/build/build_base.html:151 +#: build/templates/build/build_base.html:196 +#: order/templates/order/order_base.html:98 +#: order/templates/order/sales_order_base.html:93 #: templates/js/translated/table_filters.js:294 #: templates/js/translated/table_filters.js:322 #: templates/js/translated/table_filters.js:339 msgid "Overdue" msgstr "" -#: build/templates/build/build_base.html:150 +#: build/templates/build/build_base.html:158 #: build/templates/build/detail.html:68 build/templates/build/detail.html:143 #: templates/js/translated/build.js:1641 #: templates/js/translated/table_filters.js:304 msgid "Completed" msgstr "" -#: build/templates/build/build_base.html:163 +#: build/templates/build/build_base.html:171 #: build/templates/build/detail.html:95 order/models.py:857 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: order/templates/order/sales_order_ship.html:25 #: report/templates/report/inventree_build_order_base.html:136 #: report/templates/report/inventree_so_report.html:77 -#: stock/templates/stock/item_base.html:280 -#: templates/js/translated/order.js:1051 +#: stock/templates/stock/item_base.html:308 +#: templates/js/translated/order.js:1050 msgid "Sales Order" msgstr "" -#: build/templates/build/build_base.html:170 +#: build/templates/build/build_base.html:178 #: build/templates/build/detail.html:109 #: report/templates/report/inventree_build_order_base.html:153 msgid "Issued By" msgstr "" -#: build/templates/build/build_base.html:215 +#: build/templates/build/build_base.html:223 msgid "Incomplete Outputs" msgstr "" -#: build/templates/build/build_base.html:216 +#: build/templates/build/build_base.html:224 msgid "Build Order cannot be completed as incomplete build outputs remain" msgstr "" @@ -1188,7 +1192,7 @@ msgid "Stock can be taken from any available location." msgstr "" #: build/templates/build/detail.html:50 order/models.py:811 stock/forms.py:150 -#: templates/js/translated/order.js:432 templates/js/translated/order.js:974 +#: templates/js/translated/order.js:432 templates/js/translated/order.js:973 msgid "Destination" msgstr "" @@ -1201,16 +1205,16 @@ msgid "Allocated Parts" msgstr "" #: build/templates/build/detail.html:81 -#: stock/templates/stock/item_base.html:304 -#: templates/js/translated/stock.js:1240 templates/js/translated/stock.js:2194 +#: stock/templates/stock/item_base.html:332 +#: templates/js/translated/stock.js:1322 templates/js/translated/stock.js:2276 #: templates/js/translated/table_filters.js:151 #: templates/js/translated/table_filters.js:233 msgid "Batch" msgstr "" #: build/templates/build/detail.html:127 -#: order/templates/order/order_base.html:127 -#: order/templates/order/sales_order_base.html:134 +#: order/templates/order/order_base.html:131 +#: order/templates/order/sales_order_base.html:135 #: templates/js/translated/build.js:1663 msgid "Created" msgstr "" @@ -1254,7 +1258,7 @@ msgstr "" #: build/templates/build/detail.html:185 #: company/templates/company/detail.html:38 #: company/templates/company/detail.html:85 order/views.py:509 -#: part/templates/part/category.html:166 +#: part/templates/part/category.html:173 msgid "Order Parts" msgstr "" @@ -1306,8 +1310,8 @@ msgstr "" #: order/templates/order/po_sidebar.html:9 #: order/templates/order/purchase_order_detail.html:60 #: order/templates/order/sales_order_detail.html:52 -#: order/templates/order/so_sidebar.html:9 part/templates/part/detail.html:300 -#: part/templates/part/part_sidebar.html:50 stock/templates/stock/item.html:95 +#: order/templates/order/so_sidebar.html:9 part/templates/part/detail.html:193 +#: part/templates/part/part_sidebar.html:48 stock/templates/stock/item.html:95 #: stock/templates/stock/stock_sidebar.html:19 msgid "Attachments" msgstr "" @@ -1323,7 +1327,7 @@ msgstr "" #: order/templates/order/purchase_order_detail.html:108 #: order/templates/order/sales_order_detail.html:72 #: order/templates/order/sales_order_detail.html:99 -#: part/templates/part/detail.html:227 stock/templates/stock/item.html:115 +#: part/templates/part/detail.html:120 stock/templates/stock/item.html:115 #: stock/templates/stock/item.html:205 msgid "Edit Notes" msgstr "" @@ -1336,7 +1340,7 @@ msgstr "" msgid "All untracked stock items have been allocated" msgstr "" -#: build/templates/build/index.html:18 part/templates/part/detail.html:407 +#: build/templates/build/index.html:18 part/templates/part/detail.html:300 msgid "New Build Order" msgstr "" @@ -1380,7 +1384,7 @@ msgstr "" msgid "Maximum output quantity is " msgstr "" -#: build/views.py:122 stock/serializers.py:356 stock/views.py:1290 +#: build/views.py:122 stock/serializers.py:361 stock/views.py:1290 msgid "Serial numbers already exist" msgstr "" @@ -1675,7 +1679,7 @@ msgid "Parts are trackable by default" msgstr "" #: common/models.py:745 part/models.py:920 -#: part/templates/part/part_base.html:144 +#: part/templates/part/part_base.html:147 #: templates/js/translated/table_filters.js:42 msgid "Virtual" msgstr "" @@ -2142,7 +2146,7 @@ msgstr "" #: common/models.py:1233 company/serializers.py:264 #: company/templates/company/supplier_part.html:256 -#: templates/js/translated/part.js:1620 +#: templates/js/translated/part.js:852 templates/js/translated/part.js:1801 msgid "Price" msgstr "" @@ -2206,7 +2210,7 @@ msgstr "" msgid "Description of the company" msgstr "" -#: company/models.py:112 company/templates/company/company_base.html:70 +#: company/models.py:112 company/templates/company/company_base.html:97 #: templates/js/translated/company.js:349 msgid "Website" msgstr "" @@ -2215,7 +2219,7 @@ msgstr "" msgid "Company website URL" msgstr "" -#: company/models.py:117 company/templates/company/company_base.html:88 +#: company/models.py:117 company/templates/company/company_base.html:115 msgid "Address" msgstr "" @@ -2231,7 +2235,7 @@ msgstr "" msgid "Contact phone number" msgstr "" -#: company/models.py:125 company/templates/company/company_base.html:102 +#: company/models.py:125 company/templates/company/company_base.html:129 #: templates/InvenTree/settings/user.html:47 msgid "Email" msgstr "" @@ -2240,7 +2244,7 @@ msgstr "" msgid "Contact email address" msgstr "" -#: company/models.py:128 company/templates/company/company_base.html:109 +#: company/models.py:128 company/templates/company/company_base.html:136 msgid "Contact" msgstr "" @@ -2281,7 +2285,7 @@ msgid "Does this company manufacture parts?" msgstr "" #: company/models.py:152 company/serializers.py:270 -#: company/templates/company/company_base.html:76 stock/serializers.py:172 +#: company/templates/company/company_base.html:103 stock/serializers.py:177 msgid "Currency" msgstr "" @@ -2289,8 +2293,8 @@ msgstr "" msgid "Default currency used for this company" msgstr "" -#: company/models.py:320 company/models.py:535 stock/models.py:484 -#: stock/templates/stock/item_base.html:224 +#: company/models.py:320 company/models.py:535 stock/models.py:474 +#: stock/templates/stock/item_base.html:135 msgid "Base Part" msgstr "" @@ -2298,29 +2302,29 @@ msgstr "" msgid "Select part" msgstr "" -#: company/models.py:335 company/templates/company/company_base.html:116 -#: company/templates/company/manufacturer_part.html:93 -#: company/templates/company/supplier_part.html:104 -#: stock/templates/stock/item_base.html:353 +#: company/models.py:335 company/templates/company/company_base.html:73 +#: company/templates/company/manufacturer_part.html:91 +#: company/templates/company/supplier_part.html:97 +#: stock/templates/stock/item_base.html:381 #: templates/js/translated/company.js:333 #: templates/js/translated/company.js:514 -#: templates/js/translated/company.js:797 templates/js/translated/part.js:229 +#: templates/js/translated/company.js:797 templates/js/translated/part.js:232 msgid "Manufacturer" msgstr "" -#: company/models.py:336 templates/js/translated/part.js:230 +#: company/models.py:336 templates/js/translated/part.js:233 msgid "Select manufacturer" msgstr "" -#: company/models.py:342 company/templates/company/manufacturer_part.html:97 -#: company/templates/company/supplier_part.html:112 +#: company/models.py:342 company/templates/company/manufacturer_part.html:96 +#: company/templates/company/supplier_part.html:105 #: templates/js/translated/company.js:530 -#: templates/js/translated/company.js:815 templates/js/translated/order.js:874 -#: templates/js/translated/part.js:240 +#: templates/js/translated/company.js:815 templates/js/translated/order.js:873 +#: templates/js/translated/part.js:243 templates/js/translated/part.js:832 msgid "MPN" msgstr "" -#: company/models.py:343 templates/js/translated/part.js:241 +#: company/models.py:343 templates/js/translated/part.js:244 msgid "Manufacturer Part Number" msgstr "" @@ -2335,7 +2339,7 @@ msgstr "" #: company/models.py:409 company/models.py:558 #: company/templates/company/manufacturer_part.html:6 #: company/templates/company/manufacturer_part.html:23 -#: stock/templates/stock/item_base.html:363 +#: stock/templates/stock/item_base.html:391 msgid "Manufacturer Part" msgstr "" @@ -2345,8 +2349,8 @@ msgstr "" #: company/models.py:422 #: report/templates/report/inventree_test_report_base.html:95 -#: stock/models.py:1867 templates/js/translated/company.js:644 -#: templates/js/translated/part.js:645 templates/js/translated/stock.js:878 +#: stock/models.py:1857 templates/js/translated/company.js:644 +#: templates/js/translated/part.js:652 templates/js/translated/stock.js:960 msgid "Value" msgstr "" @@ -2355,9 +2359,9 @@ msgid "Parameter value" msgstr "" #: company/models.py:429 part/models.py:882 part/models.py:2397 -#: part/templates/part/detail.html:59 +#: part/templates/part/part_base.html:288 #: templates/InvenTree/settings/settings.html:264 -#: templates/js/translated/company.js:650 templates/js/translated/part.js:651 +#: templates/js/translated/company.js:650 templates/js/translated/part.js:658 msgid "Units" msgstr "" @@ -2369,28 +2373,28 @@ msgstr "" msgid "Linked manufacturer part must reference the same base part" msgstr "" -#: company/models.py:545 company/templates/company/company_base.html:121 -#: company/templates/company/supplier_part.html:94 order/models.py:263 -#: order/templates/order/order_base.html:108 +#: company/models.py:545 company/templates/company/company_base.html:78 +#: company/templates/company/supplier_part.html:87 order/models.py:263 +#: order/templates/order/order_base.html:112 #: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:219 -#: part/bom.py:247 stock/templates/stock/item_base.html:370 +#: part/bom.py:247 stock/templates/stock/item_base.html:398 #: templates/js/translated/company.js:337 -#: templates/js/translated/company.js:771 templates/js/translated/order.js:660 -#: templates/js/translated/part.js:210 +#: templates/js/translated/company.js:771 templates/js/translated/order.js:667 +#: templates/js/translated/part.js:213 templates/js/translated/part.js:800 msgid "Supplier" msgstr "" -#: company/models.py:546 templates/js/translated/part.js:211 +#: company/models.py:546 templates/js/translated/part.js:214 msgid "Select supplier" msgstr "" -#: company/models.py:551 company/templates/company/supplier_part.html:98 -#: part/bom.py:220 part/bom.py:248 templates/js/translated/order.js:861 -#: templates/js/translated/part.js:221 +#: company/models.py:551 company/templates/company/supplier_part.html:91 +#: part/bom.py:220 part/bom.py:248 templates/js/translated/order.js:860 +#: templates/js/translated/part.js:224 templates/js/translated/part.js:818 msgid "SKU" msgstr "" -#: company/models.py:552 templates/js/translated/part.js:222 +#: company/models.py:552 templates/js/translated/part.js:225 msgid "Supplier stock keeping unit" msgstr "" @@ -2406,7 +2410,7 @@ msgstr "" msgid "Supplier part description" msgstr "" -#: company/models.py:576 company/templates/company/supplier_part.html:126 +#: company/models.py:576 company/templates/company/supplier_part.html:119 #: part/models.py:2588 report/templates/report/inventree_po_report.html:93 #: report/templates/report/inventree_so_report.html:93 msgid "Note" @@ -2420,9 +2424,9 @@ msgstr "" msgid "Minimum charge (e.g. stocking fee)" msgstr "" -#: company/models.py:582 company/templates/company/supplier_part.html:119 -#: stock/models.py:507 stock/templates/stock/item_base.html:311 -#: templates/js/translated/company.js:847 templates/js/translated/stock.js:1366 +#: company/models.py:582 company/templates/company/supplier_part.html:112 +#: stock/models.py:497 stock/templates/stock/item_base.html:339 +#: templates/js/translated/company.js:847 templates/js/translated/stock.js:1448 msgid "Packaging" msgstr "" @@ -2457,43 +2461,56 @@ msgstr "" msgid "Create Purchase Order" msgstr "" -#: company/templates/company/company_base.html:27 +#: company/templates/company/company_base.html:26 +msgid "Company actions" +msgstr "" + +#: company/templates/company/company_base.html:31 msgid "Edit company information" msgstr "" #: company/templates/company/company_base.html:32 -#: company/templates/company/company_base.html:148 +#: templates/js/translated/company.js:265 +msgid "Edit Company" +msgstr "" + +#: company/templates/company/company_base.html:36 +msgid "Delete company" +msgstr "" + +#: company/templates/company/company_base.html:37 +#: company/templates/company/company_base.html:159 msgid "Delete Company" msgstr "" -#: company/templates/company/company_base.html:48 +#: company/templates/company/company_base.html:53 #: part/templates/part/part_thumb.html:12 msgid "Upload new image" msgstr "" -#: company/templates/company/company_base.html:51 +#: company/templates/company/company_base.html:56 #: part/templates/part/part_thumb.html:14 msgid "Download image from URL" msgstr "" -#: company/templates/company/company_base.html:81 -msgid "Uses default currency" -msgstr "" - -#: company/templates/company/company_base.html:95 -msgid "Phone" -msgstr "" - -#: company/templates/company/company_base.html:126 order/models.py:567 -#: order/templates/order/sales_order_base.html:114 stock/models.py:525 -#: stock/models.py:526 stock/templates/stock/item_base.html:263 -#: templates/js/translated/company.js:329 templates/js/translated/order.js:1073 -#: templates/js/translated/stock.js:2002 +#: company/templates/company/company_base.html:83 order/models.py:567 +#: order/templates/order/sales_order_base.html:115 stock/models.py:515 +#: stock/models.py:516 stock/templates/stock/item_base.html:291 +#: templates/js/translated/company.js:329 templates/js/translated/order.js:1072 +#: templates/js/translated/stock.js:2084 msgid "Customer" msgstr "" -#: company/templates/company/company_base.html:194 -#: part/templates/part/part_base.html:342 +#: company/templates/company/company_base.html:108 +msgid "Uses default currency" +msgstr "" + +#: company/templates/company/company_base.html:122 +msgid "Phone" +msgstr "" + +#: company/templates/company/company_base.html:205 +#: part/templates/part/part_base.html:471 msgid "Upload Image" msgstr "" @@ -2509,23 +2526,23 @@ msgid "Create new supplier part" msgstr "" #: company/templates/company/detail.html:20 -#: company/templates/company/manufacturer_part.html:112 -#: part/templates/part/detail.html:440 +#: company/templates/company/manufacturer_part.html:118 +#: part/templates/part/detail.html:333 msgid "New Supplier Part" msgstr "" #: company/templates/company/detail.html:32 #: company/templates/company/detail.html:79 -#: company/templates/company/manufacturer_part.html:121 -#: company/templates/company/manufacturer_part.html:150 -#: part/templates/part/category.html:160 part/templates/part/detail.html:449 -#: part/templates/part/detail.html:477 +#: company/templates/company/manufacturer_part.html:127 +#: company/templates/company/manufacturer_part.html:156 +#: part/templates/part/category.html:167 part/templates/part/detail.html:342 +#: part/templates/part/detail.html:370 msgid "Options" msgstr "" #: company/templates/company/detail.html:37 #: company/templates/company/detail.html:84 -#: part/templates/part/category.html:166 +#: part/templates/part/category.html:173 msgid "Order parts" msgstr "" @@ -2547,7 +2564,7 @@ msgstr "" msgid "Create new manufacturer part" msgstr "" -#: company/templates/company/detail.html:67 part/templates/part/detail.html:467 +#: company/templates/company/detail.html:67 part/templates/part/detail.html:360 msgid "New Manufacturer Part" msgstr "" @@ -2561,7 +2578,7 @@ msgstr "" #: order/templates/order/order_base.html:13 #: order/templates/order/purchase_orders.html:8 #: order/templates/order/purchase_orders.html:12 -#: part/templates/part/detail.html:171 part/templates/part/part_sidebar.html:35 +#: part/templates/part/detail.html:64 part/templates/part/part_sidebar.html:33 #: templates/InvenTree/index.html:252 templates/InvenTree/search.html:203 #: templates/InvenTree/settings/sidebar.html:44 templates/navbar.html:45 #: users/models.py:45 @@ -2583,7 +2600,7 @@ msgstr "" #: order/templates/order/sales_order_base.html:13 #: order/templates/order/sales_orders.html:8 #: order/templates/order/sales_orders.html:15 -#: part/templates/part/detail.html:194 part/templates/part/part_sidebar.html:39 +#: part/templates/part/detail.html:87 part/templates/part/part_sidebar.html:37 #: templates/InvenTree/index.html:283 templates/InvenTree/search.html:223 #: templates/InvenTree/settings/sidebar.html:46 templates/navbar.html:56 #: users/models.py:46 @@ -2610,14 +2627,14 @@ msgid "Company Notes" msgstr "" #: company/templates/company/detail.html:383 -#: company/templates/company/manufacturer_part.html:209 -#: part/templates/part/detail.html:520 +#: company/templates/company/manufacturer_part.html:215 +#: part/templates/part/detail.html:413 msgid "Delete Supplier Parts?" msgstr "" #: company/templates/company/detail.html:384 -#: company/templates/company/manufacturer_part.html:210 -#: part/templates/part/detail.html:521 +#: company/templates/company/manufacturer_part.html:216 +#: part/templates/part/detail.html:414 msgid "All selected supplier parts will be deleted" msgstr "" @@ -2634,7 +2651,7 @@ msgstr "" #: company/templates/company/manufacturer_part.html:35 #: company/templates/company/supplier_part.html:34 #: company/templates/company/supplier_part.html:159 -#: part/templates/part/detail.html:174 part/templates/part/part_base.html:76 +#: part/templates/part/detail.html:67 part/templates/part/part_base.html:76 msgid "Order part" msgstr "" @@ -2648,60 +2665,60 @@ msgstr "" msgid "Delete manufacturer part" msgstr "" -#: company/templates/company/manufacturer_part.html:70 -#: company/templates/company/supplier_part.html:71 +#: company/templates/company/manufacturer_part.html:66 +#: company/templates/company/supplier_part.html:63 msgid "Internal Part" msgstr "" -#: company/templates/company/manufacturer_part.html:108 +#: company/templates/company/manufacturer_part.html:114 #: company/templates/company/supplier_part.html:15 company/views.py:49 -#: part/templates/part/part_sidebar.html:33 part/templates/part/prices.html:163 +#: part/templates/part/part_sidebar.html:31 part/templates/part/prices.html:163 #: templates/InvenTree/search.html:194 templates/navbar.html:43 msgid "Suppliers" msgstr "" -#: company/templates/company/manufacturer_part.html:123 -#: part/templates/part/detail.html:451 +#: company/templates/company/manufacturer_part.html:129 +#: part/templates/part/detail.html:344 msgid "Delete supplier parts" msgstr "" -#: company/templates/company/manufacturer_part.html:123 -#: company/templates/company/manufacturer_part.html:152 -#: company/templates/company/manufacturer_part.html:248 -#: part/templates/part/detail.html:451 part/templates/part/detail.html:479 +#: company/templates/company/manufacturer_part.html:129 +#: company/templates/company/manufacturer_part.html:158 +#: company/templates/company/manufacturer_part.html:254 +#: part/templates/part/detail.html:344 part/templates/part/detail.html:372 #: templates/js/translated/company.js:425 templates/js/translated/helpers.js:31 #: users/models.py:204 msgid "Delete" msgstr "" -#: company/templates/company/manufacturer_part.html:137 +#: company/templates/company/manufacturer_part.html:143 #: company/templates/company/manufacturer_part_sidebar.html:5 #: part/templates/part/category_sidebar.html:17 -#: part/templates/part/detail.html:277 part/templates/part/part_sidebar.html:10 +#: part/templates/part/detail.html:170 part/templates/part/part_sidebar.html:8 msgid "Parameters" msgstr "" -#: company/templates/company/manufacturer_part.html:141 -#: part/templates/part/detail.html:282 +#: company/templates/company/manufacturer_part.html:147 +#: part/templates/part/detail.html:175 #: templates/InvenTree/settings/category.html:12 #: templates/InvenTree/settings/part.html:65 msgid "New Parameter" msgstr "" -#: company/templates/company/manufacturer_part.html:152 +#: company/templates/company/manufacturer_part.html:158 msgid "Delete parameters" msgstr "" -#: company/templates/company/manufacturer_part.html:185 -#: part/templates/part/detail.html:976 +#: company/templates/company/manufacturer_part.html:191 +#: part/templates/part/detail.html:867 msgid "Add Parameter" msgstr "" -#: company/templates/company/manufacturer_part.html:233 +#: company/templates/company/manufacturer_part.html:239 msgid "Selected parameters will be deleted" msgstr "" -#: company/templates/company/manufacturer_part.html:245 +#: company/templates/company/manufacturer_part.html:251 msgid "Delete Parameters" msgstr "" @@ -2722,9 +2739,9 @@ msgid "Assigned Stock Items" msgstr "" #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 stock/models.py:492 -#: stock/templates/stock/item_base.html:375 -#: templates/js/translated/company.js:787 templates/js/translated/stock.js:1323 +#: company/templates/company/supplier_part.html:24 stock/models.py:482 +#: stock/templates/stock/item_base.html:403 +#: templates/js/translated/company.js:787 templates/js/translated/stock.js:1405 msgid "Supplier Part" msgstr "" @@ -2744,13 +2761,13 @@ msgid "Supplier Part Stock" msgstr "" #: company/templates/company/supplier_part.html:141 -#: part/templates/part/detail.html:127 stock/templates/stock/location.html:147 +#: part/templates/part/detail.html:20 stock/templates/stock/location.html:162 msgid "Create new stock item" msgstr "" #: company/templates/company/supplier_part.html:142 -#: part/templates/part/detail.html:128 stock/templates/stock/location.html:148 -#: templates/js/translated/stock.js:354 +#: part/templates/part/detail.html:21 stock/templates/stock/location.html:163 +#: templates/js/translated/stock.js:355 msgid "New Stock Item" msgstr "" @@ -2760,7 +2777,7 @@ msgid "Supplier Part Orders" msgstr "" #: company/templates/company/supplier_part.html:160 -#: part/templates/part/detail.html:175 +#: part/templates/part/detail.html:68 msgid "Order Part" msgstr "" @@ -2796,15 +2813,15 @@ msgid "Delete price break" msgstr "" #: company/templates/company/supplier_part_navbar.html:15 -#: part/templates/part/part_sidebar.html:16 +#: part/templates/part/part_sidebar.html:14 #: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:14 #: stock/templates/stock/stock_app_base.html:10 #: templates/InvenTree/search.html:156 #: templates/InvenTree/settings/sidebar.html:40 -#: templates/js/translated/bom.js:216 templates/js/translated/part.js:427 -#: templates/js/translated/part.js:562 templates/js/translated/part.js:878 -#: templates/js/translated/part.js:1039 templates/js/translated/stock.js:509 -#: templates/js/translated/stock.js:1162 templates/navbar.html:26 +#: templates/js/translated/bom.js:216 templates/js/translated/part.js:434 +#: templates/js/translated/part.js:569 templates/js/translated/part.js:1059 +#: templates/js/translated/part.js:1220 templates/js/translated/stock.js:591 +#: templates/js/translated/stock.js:1244 templates/navbar.html:26 msgid "Stock" msgstr "" @@ -2818,16 +2835,16 @@ msgid "Supplier Part Pricing" msgstr "" #: company/templates/company/supplier_part_navbar.html:29 -#: part/templates/part/part_sidebar.html:30 +#: part/templates/part/part_sidebar.html:28 msgid "Pricing" msgstr "" #: company/templates/company/supplier_part_sidebar.html:5 -#: stock/templates/stock/location.html:118 -#: stock/templates/stock/location.html:132 -#: stock/templates/stock/location.html:144 +#: stock/templates/stock/location.html:133 +#: stock/templates/stock/location.html:147 +#: stock/templates/stock/location.html:159 #: stock/templates/stock/location_sidebar.html:7 -#: templates/InvenTree/search.html:158 templates/js/translated/stock.js:1901 +#: templates/InvenTree/search.html:158 templates/js/translated/stock.js:1983 #: templates/stats.html:93 templates/stats.html:102 users/models.py:43 msgid "Stock Items" msgstr "" @@ -2947,7 +2964,7 @@ msgstr "" msgid "Place order" msgstr "" -#: order/forms.py:37 order/templates/order/order_base.html:59 +#: order/forms.py:37 order/templates/order/order_base.html:60 msgid "Mark order as complete" msgstr "" @@ -3000,8 +3017,8 @@ msgstr "" msgid "Company from which the items are being ordered" msgstr "" -#: order/models.py:267 order/templates/order/order_base.html:114 -#: templates/js/translated/order.js:669 +#: order/models.py:267 order/templates/order/order_base.html:118 +#: templates/js/translated/order.js:676 msgid "Supplier Reference" msgstr "" @@ -3061,7 +3078,7 @@ msgstr "" msgid "Target date for order completion. Order will be overdue after this date." msgstr "" -#: order/models.py:582 templates/js/translated/order.js:1114 +#: order/models.py:582 templates/js/translated/order.js:1113 msgid "Shipment Date" msgstr "" @@ -3086,16 +3103,16 @@ msgid "Line item notes" msgstr "" #: order/models.py:768 order/models.py:856 -#: templates/js/translated/order.js:1166 +#: templates/js/translated/order.js:1165 msgid "Order" msgstr "" #: order/models.py:769 order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_po_report.html:77 -#: stock/templates/stock/item_base.html:325 -#: templates/js/translated/order.js:638 templates/js/translated/stock.js:1300 -#: templates/js/translated/stock.js:1983 +#: stock/templates/stock/item_base.html:353 +#: templates/js/translated/order.js:638 templates/js/translated/part.js:775 +#: templates/js/translated/stock.js:1382 templates/js/translated/stock.js:2065 msgid "Purchase Order" msgstr "" @@ -3103,9 +3120,10 @@ msgstr "" msgid "Supplier part" msgstr "" -#: order/models.py:797 order/templates/order/order_base.html:147 -#: order/templates/order/sales_order_base.html:154 -#: templates/js/translated/order.js:429 templates/js/translated/order.js:954 +#: order/models.py:797 order/templates/order/order_base.html:151 +#: order/templates/order/sales_order_base.html:155 +#: templates/js/translated/order.js:429 templates/js/translated/order.js:953 +#: templates/js/translated/part.js:847 templates/js/translated/part.js:873 msgid "Received" msgstr "" @@ -3113,9 +3131,9 @@ msgstr "" msgid "Number of items received" msgstr "" -#: order/models.py:805 part/templates/part/prices.html:176 stock/models.py:619 -#: stock/serializers.py:163 stock/templates/stock/item_base.html:332 -#: templates/js/translated/stock.js:1354 +#: order/models.py:805 part/templates/part/prices.html:176 stock/models.py:609 +#: stock/serializers.py:168 stock/templates/stock/item_base.html:360 +#: templates/js/translated/stock.js:1436 msgid "Purchase Price" msgstr "" @@ -3176,47 +3194,47 @@ msgstr "" msgid "Enter stock allocation quantity" msgstr "" -#: order/serializers.py:169 +#: order/serializers.py:175 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:204 +#: order/serializers.py:213 msgid "Line Item" msgstr "" -#: order/serializers.py:210 +#: order/serializers.py:219 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:220 order/serializers.py:288 +#: order/serializers.py:229 order/serializers.py:297 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:244 +#: order/serializers.py:253 msgid "Barcode Hash" msgstr "" -#: order/serializers.py:245 +#: order/serializers.py:254 msgid "Unique identifier field" msgstr "" -#: order/serializers.py:262 +#: order/serializers.py:271 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:300 +#: order/serializers.py:309 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:317 +#: order/serializers.py:326 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:328 +#: order/serializers.py:337 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:569 +#: order/serializers.py:578 msgid "Sale price currency" msgstr "" @@ -3248,22 +3266,36 @@ msgstr "" msgid "Receive items" msgstr "" -#: order/templates/order/order_base.html:93 -#: order/templates/order/sales_order_base.html:98 +#: order/templates/order/order_base.html:58 +#: order/templates/order/purchase_order_detail.html:31 +msgid "Receive Items" +msgstr "" + +#: order/templates/order/order_base.html:62 order/views.py:185 +msgid "Complete Order" +msgstr "" + +#: order/templates/order/order_base.html:84 +#: order/templates/order/sales_order_base.html:79 msgid "Order Reference" msgstr "" -#: order/templates/order/order_base.html:98 -#: order/templates/order/sales_order_base.html:103 +#: order/templates/order/order_base.html:89 +#: order/templates/order/sales_order_base.html:84 +msgid "Order Description" +msgstr "" + +#: order/templates/order/order_base.html:94 +#: order/templates/order/sales_order_base.html:89 msgid "Order Status" msgstr "" -#: order/templates/order/order_base.html:133 +#: order/templates/order/order_base.html:137 #: report/templates/report/inventree_build_order_base.html:122 msgid "Issued" msgstr "" -#: order/templates/order/order_base.html:203 +#: order/templates/order/order_base.html:207 msgid "Edit Purchase Order" msgstr "" @@ -3421,7 +3453,7 @@ msgid "Select existing purchase orders, or create new orders." msgstr "" #: order/templates/order/order_wizard/select_pos.html:31 -#: templates/js/translated/order.js:695 templates/js/translated/order.js:1119 +#: templates/js/translated/order.js:694 templates/js/translated/order.js:1118 msgid "Items" msgstr "" @@ -3465,10 +3497,6 @@ msgstr "" msgid "Receive selected items" msgstr "" -#: order/templates/order/purchase_order_detail.html:31 -msgid "Receive Items" -msgstr "" - #: order/templates/order/purchase_order_detail.html:50 msgid "Received Items" msgstr "" @@ -3496,16 +3524,16 @@ msgstr "" msgid "Ship Order" msgstr "" -#: order/templates/order/sales_order_base.html:86 +#: order/templates/order/sales_order_base.html:102 msgid "This Sales Order has not been fully allocated" msgstr "" -#: order/templates/order/sales_order_base.html:121 -#: templates/js/translated/order.js:1086 +#: order/templates/order/sales_order_base.html:122 +#: templates/js/translated/order.js:1085 msgid "Customer Reference" msgstr "" -#: order/templates/order/sales_order_base.html:194 +#: order/templates/order/sales_order_base.html:195 msgid "Edit Sales Order" msgstr "" @@ -3576,10 +3604,6 @@ msgstr "" msgid "Purchase order issued" msgstr "" -#: order/views.py:185 -msgid "Complete Order" -msgstr "" - #: order/views.py:201 msgid "Confirm order completion" msgstr "" @@ -3672,11 +3696,11 @@ msgid "This field is required" msgstr "" #: part/bom.py:125 part/models.py:81 part/models.py:816 -#: part/templates/part/category.html:90 part/templates/part/detail.html:104 +#: part/templates/part/category.html:104 part/templates/part/part_base.html:338 msgid "Default Location" msgstr "" -#: part/bom.py:126 part/templates/part/part_base.html:167 +#: part/bom.py:126 part/templates/part/part_base.html:185 msgid "Available Stock" msgstr "" @@ -3793,19 +3817,19 @@ msgstr "" msgid "Part Category" msgstr "" -#: part/models.py:96 part/templates/part/category.html:117 +#: part/models.py:96 part/templates/part/category.html:124 #: templates/InvenTree/search.html:101 templates/stats.html:84 #: users/models.py:40 msgid "Part Categories" msgstr "" #: part/models.py:358 part/templates/part/cat_link.html:3 -#: part/templates/part/category.html:13 part/templates/part/category.html:122 -#: part/templates/part/category.html:142 +#: part/templates/part/category.html:13 part/templates/part/category.html:129 +#: part/templates/part/category.html:149 #: part/templates/part/category_sidebar.html:9 #: templates/InvenTree/index.html:85 templates/InvenTree/search.html:88 #: templates/InvenTree/settings/sidebar.html:36 -#: templates/js/translated/part.js:1416 templates/navbar.html:19 +#: templates/js/translated/part.js:1597 templates/navbar.html:19 #: templates/stats.html:80 templates/stats.html:89 users/models.py:41 msgid "Parts" msgstr "" @@ -3859,8 +3883,8 @@ msgstr "" msgid "Part description" msgstr "" -#: part/models.py:770 part/templates/part/category.html:97 -#: part/templates/part/detail.html:73 +#: part/models.py:770 part/templates/part/category.html:82 +#: part/templates/part/part_base.html:302 msgid "Keywords" msgstr "" @@ -3869,9 +3893,10 @@ msgid "Part keywords to improve visibility in search results" msgstr "" #: part/models.py:778 part/models.py:2223 part/models.py:2472 -#: part/templates/part/detail.html:36 part/templates/part/set_category.html:15 +#: part/templates/part/part_base.html:265 +#: part/templates/part/set_category.html:15 #: templates/InvenTree/settings/settings.html:163 -#: templates/js/translated/part.js:1021 +#: templates/js/translated/part.js:1202 msgid "Category" msgstr "" @@ -3879,9 +3904,9 @@ msgstr "" msgid "Part category" msgstr "" -#: part/models.py:784 part/templates/part/detail.html:45 -#: templates/js/translated/part.js:550 templates/js/translated/part.js:974 -#: templates/js/translated/stock.js:1134 +#: part/models.py:784 part/templates/part/part_base.html:274 +#: templates/js/translated/part.js:557 templates/js/translated/part.js:1155 +#: templates/js/translated/stock.js:1216 msgid "IPN" msgstr "" @@ -3893,8 +3918,8 @@ msgstr "" msgid "Part revision or version number" msgstr "" -#: part/models.py:792 part/templates/part/detail.html:52 report/models.py:200 -#: templates/js/translated/part.js:554 +#: part/models.py:792 part/templates/part/part_base.html:281 +#: report/models.py:200 templates/js/translated/part.js:561 msgid "Revision" msgstr "" @@ -3902,7 +3927,7 @@ msgstr "" msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:861 part/templates/part/detail.html:113 +#: part/models.py:861 part/templates/part/part_base.html:347 msgid "Default Supplier" msgstr "" @@ -3918,7 +3943,7 @@ msgstr "" msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:875 part/templates/part/part_base.html:178 +#: part/models.py:875 part/templates/part/part_base.html:196 msgid "Minimum Stock" msgstr "" @@ -4001,8 +4026,8 @@ msgstr "" msgid "Test with this name already exists for this part" msgstr "" -#: part/models.py:2310 templates/js/translated/part.js:1467 -#: templates/js/translated/stock.js:858 +#: part/models.py:2310 templates/js/translated/part.js:1648 +#: templates/js/translated/stock.js:940 msgid "Test Name" msgstr "" @@ -4018,7 +4043,7 @@ msgstr "" msgid "Enter description for this test" msgstr "" -#: part/models.py:2322 templates/js/translated/part.js:1476 +#: part/models.py:2322 templates/js/translated/part.js:1657 #: templates/js/translated/table_filters.js:276 msgid "Required" msgstr "" @@ -4027,7 +4052,7 @@ msgstr "" msgid "Is this test required to pass?" msgstr "" -#: part/models.py:2328 templates/js/translated/part.js:1484 +#: part/models.py:2328 templates/js/translated/part.js:1665 msgid "Requires Value" msgstr "" @@ -4035,7 +4060,7 @@ msgstr "" msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:2334 templates/js/translated/part.js:1491 +#: part/models.py:2334 templates/js/translated/part.js:1672 msgid "Requires Attachment" msgstr "" @@ -4150,7 +4175,7 @@ msgstr "" msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:2686 stock/models.py:371 +#: part/models.py:2686 stock/models.py:361 msgid "Quantity must be integer value for trackable parts" msgstr "" @@ -4213,7 +4238,7 @@ msgstr "" msgid "The BOM for %(part)s has not been validated." msgstr "" -#: part/templates/part/bom.html:30 part/templates/part/detail.html:357 +#: part/templates/part/bom.html:30 part/templates/part/detail.html:250 msgid "BOM actions" msgstr "" @@ -4298,68 +4323,64 @@ msgstr "" msgid "New Category" msgstr "" -#: part/templates/part/category.html:67 -msgid "Top level part category" -msgstr "" - -#: part/templates/part/category.html:79 +#: part/templates/part/category.html:76 part/templates/part/category.html:89 msgid "Category Path" msgstr "" -#: part/templates/part/category.html:84 -msgid "Category Description" +#: part/templates/part/category.html:90 +msgid "Top level part category" msgstr "" -#: part/templates/part/category.html:103 part/templates/part/category.html:194 +#: part/templates/part/category.html:110 part/templates/part/category.html:201 #: part/templates/part/category_sidebar.html:7 msgid "Subcategories" msgstr "" -#: part/templates/part/category.html:108 +#: part/templates/part/category.html:115 msgid "Parts (Including subcategories)" msgstr "" -#: part/templates/part/category.html:145 +#: part/templates/part/category.html:152 msgid "Export Part Data" msgstr "" -#: part/templates/part/category.html:146 part/templates/part/category.html:170 +#: part/templates/part/category.html:153 part/templates/part/category.html:177 msgid "Export" msgstr "" -#: part/templates/part/category.html:149 +#: part/templates/part/category.html:156 msgid "Create new part" msgstr "" -#: part/templates/part/category.html:150 templates/js/translated/bom.js:40 +#: part/templates/part/category.html:157 templates/js/translated/bom.js:40 msgid "New Part" msgstr "" -#: part/templates/part/category.html:164 +#: part/templates/part/category.html:171 msgid "Set category" msgstr "" -#: part/templates/part/category.html:164 +#: part/templates/part/category.html:171 msgid "Set Category" msgstr "" -#: part/templates/part/category.html:168 +#: part/templates/part/category.html:175 msgid "Print Labels" msgstr "" -#: part/templates/part/category.html:170 +#: part/templates/part/category.html:177 msgid "Export Data" msgstr "" -#: part/templates/part/category.html:184 +#: part/templates/part/category.html:191 msgid "Part Parameters" msgstr "" -#: part/templates/part/category.html:261 +#: part/templates/part/category.html:268 msgid "Create Part Category" msgstr "" -#: part/templates/part/category.html:288 +#: part/templates/part/category.html:295 msgid "Create Part" msgstr "" @@ -4402,7 +4423,7 @@ msgstr "" msgid "Import Parts" msgstr "" -#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:366 +#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:373 msgid "Duplicate Part" msgstr "" @@ -4426,167 +4447,155 @@ msgstr "" msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)" msgstr "" -#: part/templates/part/detail.html:16 -msgid "Part Details" -msgstr "" - -#: part/templates/part/detail.html:66 -msgid "Minimum stock level" -msgstr "" - -#: part/templates/part/detail.html:97 -msgid "Latest Serial Number" -msgstr "" - -#: part/templates/part/detail.html:124 +#: part/templates/part/detail.html:17 msgid "Part Stock" msgstr "" -#: part/templates/part/detail.html:136 +#: part/templates/part/detail.html:29 #, python-format msgid "Showing stock for all variants of %(full_name)s" msgstr "" -#: part/templates/part/detail.html:146 +#: part/templates/part/detail.html:39 msgid "Part Test Templates" msgstr "" -#: part/templates/part/detail.html:151 +#: part/templates/part/detail.html:44 msgid "Add Test Template" msgstr "" -#: part/templates/part/detail.html:208 +#: part/templates/part/detail.html:101 msgid "Sales Order Allocations" msgstr "" -#: part/templates/part/detail.html:249 +#: part/templates/part/detail.html:142 msgid "Part Variants" msgstr "" -#: part/templates/part/detail.html:253 +#: part/templates/part/detail.html:146 msgid "Create new variant" msgstr "" -#: part/templates/part/detail.html:254 +#: part/templates/part/detail.html:147 msgid "New Variant" msgstr "" -#: part/templates/part/detail.html:281 +#: part/templates/part/detail.html:174 msgid "Add new parameter" msgstr "" -#: part/templates/part/detail.html:315 part/templates/part/part_sidebar.html:47 +#: part/templates/part/detail.html:208 part/templates/part/part_sidebar.html:45 msgid "Related Parts" msgstr "" -#: part/templates/part/detail.html:319 part/templates/part/detail.html:320 +#: part/templates/part/detail.html:212 part/templates/part/detail.html:213 msgid "Add Related" msgstr "" -#: part/templates/part/detail.html:340 part/templates/part/part_sidebar.html:19 +#: part/templates/part/detail.html:233 part/templates/part/part_sidebar.html:17 msgid "Bill of Materials" msgstr "" -#: part/templates/part/detail.html:345 +#: part/templates/part/detail.html:238 msgid "Export actions" msgstr "" -#: part/templates/part/detail.html:349 +#: part/templates/part/detail.html:242 msgid "Export BOM" msgstr "" -#: part/templates/part/detail.html:351 +#: part/templates/part/detail.html:244 msgid "Print BOM Report" msgstr "" -#: part/templates/part/detail.html:361 +#: part/templates/part/detail.html:254 msgid "Upload BOM" msgstr "" -#: part/templates/part/detail.html:363 templates/js/translated/part.js:267 +#: part/templates/part/detail.html:256 templates/js/translated/part.js:270 msgid "Copy BOM" msgstr "" -#: part/templates/part/detail.html:365 part/views.py:755 +#: part/templates/part/detail.html:258 part/views.py:755 msgid "Validate BOM" msgstr "" -#: part/templates/part/detail.html:370 +#: part/templates/part/detail.html:263 msgid "New BOM Item" msgstr "" -#: part/templates/part/detail.html:371 +#: part/templates/part/detail.html:264 msgid "Add BOM Item" msgstr "" -#: part/templates/part/detail.html:384 +#: part/templates/part/detail.html:277 msgid "Assemblies" msgstr "" -#: part/templates/part/detail.html:401 +#: part/templates/part/detail.html:294 msgid "Part Builds" msgstr "" -#: part/templates/part/detail.html:426 +#: part/templates/part/detail.html:319 msgid "Build Order Allocations" msgstr "" -#: part/templates/part/detail.html:436 +#: part/templates/part/detail.html:329 msgid "Part Suppliers" msgstr "" -#: part/templates/part/detail.html:463 +#: part/templates/part/detail.html:356 msgid "Part Manufacturers" msgstr "" -#: part/templates/part/detail.html:479 +#: part/templates/part/detail.html:372 msgid "Delete manufacturer parts" msgstr "" -#: part/templates/part/detail.html:660 +#: part/templates/part/detail.html:553 msgid "Delete selected BOM items?" msgstr "" -#: part/templates/part/detail.html:661 +#: part/templates/part/detail.html:554 msgid "All selected BOM items will be deleted" msgstr "" -#: part/templates/part/detail.html:712 +#: part/templates/part/detail.html:605 msgid "Create BOM Item" msgstr "" -#: part/templates/part/detail.html:764 +#: part/templates/part/detail.html:657 msgid "Related Part" msgstr "" -#: part/templates/part/detail.html:772 +#: part/templates/part/detail.html:665 msgid "Add Related Part" msgstr "" -#: part/templates/part/detail.html:869 +#: part/templates/part/detail.html:760 msgid "Add Test Result Template" msgstr "" -#: part/templates/part/detail.html:926 +#: part/templates/part/detail.html:817 msgid "Edit Part Notes" msgstr "" -#: part/templates/part/detail.html:1039 +#: part/templates/part/detail.html:930 #, python-format msgid "Purchase Unit Price - %(currency)s" msgstr "" -#: part/templates/part/detail.html:1051 +#: part/templates/part/detail.html:942 #, python-format msgid "Unit Price-Cost Difference - %(currency)s" msgstr "" -#: part/templates/part/detail.html:1063 +#: part/templates/part/detail.html:954 #, python-format msgid "Supplier Unit Cost - %(currency)s" msgstr "" -#: part/templates/part/detail.html:1152 +#: part/templates/part/detail.html:1043 #, python-format msgid "Unit Price - %(currency)s" msgstr "" @@ -4668,86 +4677,108 @@ msgstr "" msgid "Delete part" msgstr "" -#: part/templates/part/part_base.html:109 +#: part/templates/part/part_base.html:112 msgid "Part is a template part (variants can be made from this part)" msgstr "" -#: part/templates/part/part_base.html:113 +#: part/templates/part/part_base.html:116 msgid "Part can be assembled from other parts" msgstr "" -#: part/templates/part/part_base.html:117 +#: part/templates/part/part_base.html:120 msgid "Part can be used in assemblies" msgstr "" -#: part/templates/part/part_base.html:121 +#: part/templates/part/part_base.html:124 msgid "Part stock is tracked by serial number" msgstr "" -#: part/templates/part/part_base.html:125 +#: part/templates/part/part_base.html:128 msgid "Part can be purchased from external suppliers" msgstr "" -#: part/templates/part/part_base.html:129 +#: part/templates/part/part_base.html:132 msgid "Part can be sold to customers" msgstr "" -#: part/templates/part/part_base.html:135 -#: part/templates/part/part_base.html:143 +#: part/templates/part/part_base.html:138 +#: part/templates/part/part_base.html:146 msgid "Part is virtual (not a physical part)" msgstr "" -#: part/templates/part/part_base.html:136 +#: part/templates/part/part_base.html:139 #: templates/js/translated/company.js:505 #: templates/js/translated/company.js:762 #: templates/js/translated/model_renderers.js:175 -#: templates/js/translated/part.js:465 templates/js/translated/part.js:542 +#: templates/js/translated/part.js:472 templates/js/translated/part.js:549 msgid "Inactive" msgstr "" -#: part/templates/part/part_base.html:155 +#: part/templates/part/part_base.html:156 +#: part/templates/part/part_base.html:579 +msgid "Show Part Details" +msgstr "" + +#: part/templates/part/part_base.html:173 #, python-format msgid "This part is a variant of %(link)s" msgstr "" -#: part/templates/part/part_base.html:172 templates/js/translated/order.js:1546 +#: part/templates/part/part_base.html:190 templates/js/translated/order.js:1545 #: templates/js/translated/table_filters.js:188 msgid "In Stock" msgstr "" -#: part/templates/part/part_base.html:185 templates/js/translated/part.js:1054 +#: part/templates/part/part_base.html:203 templates/js/translated/part.js:1235 msgid "On Order" msgstr "" -#: part/templates/part/part_base.html:192 templates/InvenTree/index.html:178 +#: part/templates/part/part_base.html:210 templates/InvenTree/index.html:178 msgid "Required for Build Orders" msgstr "" -#: part/templates/part/part_base.html:199 +#: part/templates/part/part_base.html:217 msgid "Required for Sales Orders" msgstr "" -#: part/templates/part/part_base.html:206 +#: part/templates/part/part_base.html:224 msgid "Allocated to Orders" msgstr "" -#: part/templates/part/part_base.html:221 templates/js/translated/bom.js:566 +#: part/templates/part/part_base.html:239 templates/js/translated/bom.js:566 msgid "Can Build" msgstr "" -#: part/templates/part/part_base.html:227 templates/js/translated/part.js:885 -#: templates/js/translated/part.js:1058 +#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1066 +#: templates/js/translated/part.js:1239 msgid "Building" msgstr "" -#: part/templates/part/part_base.html:320 part/templates/part/prices.html:144 +#: part/templates/part/part_base.html:295 +msgid "Minimum stock level" +msgstr "" + +#: part/templates/part/part_base.html:324 +msgid "Latest Serial Number" +msgstr "" + +#: part/templates/part/part_base.html:328 +#: stock/templates/stock/item_base.html:159 +msgid "Search for serial number" +msgstr "" + +#: part/templates/part/part_base.html:449 part/templates/part/prices.html:144 msgid "Calculate" msgstr "" -#: part/templates/part/part_base.html:363 +#: part/templates/part/part_base.html:492 msgid "No matching images found" msgstr "" +#: part/templates/part/part_base.html:573 +msgid "Hide Part Details" +msgstr "" + #: part/templates/part/part_pricing.html:22 part/templates/part/prices.html:21 msgid "Supplier Pricing" msgstr "" @@ -4805,20 +4836,15 @@ msgstr "" msgid "No pricing information is available for this part." msgstr "" -#: part/templates/part/part_sidebar.html:8 -#: templates/js/translated/stock.js:1949 -msgid "Details" -msgstr "" - -#: part/templates/part/part_sidebar.html:13 +#: part/templates/part/part_sidebar.html:11 msgid "Variants" msgstr "" -#: part/templates/part/part_sidebar.html:27 +#: part/templates/part/part_sidebar.html:25 msgid "Used In" msgstr "" -#: part/templates/part/part_sidebar.html:43 +#: part/templates/part/part_sidebar.html:41 msgid "Test Templates" msgstr "" @@ -4934,8 +4960,8 @@ msgid "Set category for the following parts" msgstr "" #: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:476 -#: templates/js/translated/part.js:429 templates/js/translated/part.js:875 -#: templates/js/translated/part.js:1062 +#: templates/js/translated/part.js:436 templates/js/translated/part.js:1056 +#: templates/js/translated/part.js:1243 msgid "No Stock" msgstr "" @@ -5037,7 +5063,7 @@ msgstr "" msgid "Delete Part Parameter Template" msgstr "" -#: part/views.py:1489 templates/js/translated/part.js:310 +#: part/views.py:1489 templates/js/translated/part.js:313 msgid "Edit Part Category" msgstr "" @@ -5171,11 +5197,12 @@ msgid "Stock Item Test Report" msgstr "" #: report/templates/report/inventree_test_report_base.html:79 -#: stock/models.py:530 stock/templates/stock/item_base.html:238 +#: stock/models.py:520 stock/templates/stock/item_base.html:149 #: templates/js/translated/build.js:233 templates/js/translated/build.js:637 #: templates/js/translated/build.js:1013 #: templates/js/translated/model_renderers.js:95 -#: templates/js/translated/order.js:1288 templates/js/translated/order.js:1377 +#: templates/js/translated/order.js:1287 templates/js/translated/order.js:1376 +#: templates/js/translated/stock.js:410 msgid "Serial Number" msgstr "" @@ -5184,17 +5211,17 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:93 -#: stock/models.py:1855 +#: stock/models.py:1845 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:94 -#: stock/models.py:1861 +#: stock/models.py:1851 msgid "Result" msgstr "" #: report/templates/report/inventree_test_report_base.html:97 -#: templates/js/translated/order.js:685 templates/js/translated/stock.js:1917 +#: templates/js/translated/order.js:684 templates/js/translated/stock.js:1999 msgid "Date" msgstr "" @@ -5212,7 +5239,7 @@ msgid "Installed Items" msgstr "" #: report/templates/report/inventree_test_report_base.html:137 -#: templates/js/translated/stock.js:2177 +#: templates/js/translated/stock.js:2259 msgid "Serial" msgstr "" @@ -5220,9 +5247,9 @@ msgstr "" msgid "Quantity is required" msgstr "" -#: stock/forms.py:91 stock/forms.py:265 stock/models.py:587 -#: stock/templates/stock/item_base.html:382 -#: templates/js/translated/stock.js:1276 +#: stock/forms.py:91 stock/forms.py:265 stock/models.py:577 +#: stock/templates/stock/item_base.html:186 +#: templates/js/translated/stock.js:1358 msgid "Expiry Date" msgstr "" @@ -5270,241 +5297,241 @@ msgstr "" msgid "Confirm removal of installed stock items" msgstr "" -#: stock/models.py:60 stock/models.py:624 -#: stock/templates/stock/item_base.html:422 +#: stock/models.py:60 stock/models.py:614 +#: stock/templates/stock/item_base.html:417 msgid "Owner" msgstr "" -#: stock/models.py:61 stock/models.py:625 +#: stock/models.py:61 stock/models.py:615 msgid "Select Owner" msgstr "" -#: stock/models.py:352 +#: stock/models.py:342 msgid "StockItem with this serial number already exists" msgstr "" -#: stock/models.py:388 +#: stock/models.py:378 #, python-brace-format msgid "Part type ('{pf}') must be {pe}" msgstr "" -#: stock/models.py:398 stock/models.py:407 +#: stock/models.py:388 stock/models.py:397 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:399 +#: stock/models.py:389 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:421 +#: stock/models.py:411 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:427 +#: stock/models.py:417 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:434 +#: stock/models.py:424 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:476 +#: stock/models.py:466 msgid "Parent Stock Item" msgstr "" -#: stock/models.py:485 +#: stock/models.py:475 msgid "Base part" msgstr "" -#: stock/models.py:493 +#: stock/models.py:483 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:498 stock/templates/stock/location.html:12 +#: stock/models.py:488 stock/templates/stock/location.html:12 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" msgstr "" -#: stock/models.py:501 +#: stock/models.py:491 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:508 +#: stock/models.py:498 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:513 stock/templates/stock/item_base.html:271 +#: stock/models.py:503 stock/templates/stock/item_base.html:299 msgid "Installed In" msgstr "" -#: stock/models.py:516 +#: stock/models.py:506 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:532 +#: stock/models.py:522 msgid "Serial number for this item" msgstr "" -#: stock/models.py:546 +#: stock/models.py:536 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:550 +#: stock/models.py:540 msgid "Stock Quantity" msgstr "" -#: stock/models.py:559 +#: stock/models.py:549 msgid "Source Build" msgstr "" -#: stock/models.py:561 +#: stock/models.py:551 msgid "Build for this stock item" msgstr "" -#: stock/models.py:572 +#: stock/models.py:562 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:575 +#: stock/models.py:565 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:581 +#: stock/models.py:571 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:588 +#: stock/models.py:578 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:601 +#: stock/models.py:591 msgid "Delete on deplete" msgstr "" -#: stock/models.py:601 +#: stock/models.py:591 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:611 stock/templates/stock/item.html:111 +#: stock/models.py:601 stock/templates/stock/item.html:111 msgid "Stock Item Notes" msgstr "" -#: stock/models.py:620 +#: stock/models.py:610 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:630 +#: stock/models.py:620 msgid "Scheduled for deletion" msgstr "" -#: stock/models.py:631 +#: stock/models.py:621 msgid "This StockItem will be deleted by the background worker" msgstr "" -#: stock/models.py:1094 +#: stock/models.py:1084 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1100 +#: stock/models.py:1090 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1106 +#: stock/models.py:1096 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({n})" msgstr "" -#: stock/models.py:1109 +#: stock/models.py:1099 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1112 +#: stock/models.py:1102 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1119 +#: stock/models.py:1109 #, python-brace-format msgid "Serial numbers already exist: {exists}" msgstr "" -#: stock/models.py:1277 +#: stock/models.py:1267 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:1775 +#: stock/models.py:1765 msgid "Entry notes" msgstr "" -#: stock/models.py:1832 +#: stock/models.py:1822 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:1838 +#: stock/models.py:1828 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:1856 +#: stock/models.py:1846 msgid "Test name" msgstr "" -#: stock/models.py:1862 templates/js/translated/table_filters.js:266 +#: stock/models.py:1852 templates/js/translated/table_filters.js:266 msgid "Test result" msgstr "" -#: stock/models.py:1868 +#: stock/models.py:1858 msgid "Test output value" msgstr "" -#: stock/models.py:1875 +#: stock/models.py:1865 msgid "Test result attachment" msgstr "" -#: stock/models.py:1881 +#: stock/models.py:1871 msgid "Test notes" msgstr "" -#: stock/serializers.py:166 +#: stock/serializers.py:171 msgid "Purchase price of this stock item" msgstr "" -#: stock/serializers.py:173 +#: stock/serializers.py:178 msgid "Purchase currency of this stock item" msgstr "" -#: stock/serializers.py:287 +#: stock/serializers.py:292 msgid "Enter number of stock items to serialize" msgstr "" -#: stock/serializers.py:302 +#: stock/serializers.py:307 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "" -#: stock/serializers.py:308 +#: stock/serializers.py:313 msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:319 stock/serializers.py:686 +#: stock/serializers.py:324 stock/serializers.py:691 msgid "Destination stock location" msgstr "" -#: stock/serializers.py:326 +#: stock/serializers.py:331 msgid "Optional note field" msgstr "" -#: stock/serializers.py:339 +#: stock/serializers.py:344 msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:556 +#: stock/serializers.py:561 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:584 +#: stock/serializers.py:589 msgid "Stock transaction notes" msgstr "" -#: stock/serializers.py:594 +#: stock/serializers.py:599 msgid "A list of stock items must be provided" msgstr "" @@ -5629,125 +5656,131 @@ msgstr "" msgid "Install" msgstr "" -#: stock/templates/stock/item_base.html:106 +#: stock/templates/stock/item_base.html:108 msgid "Convert to variant" msgstr "" -#: stock/templates/stock/item_base.html:109 +#: stock/templates/stock/item_base.html:111 msgid "Duplicate stock item" msgstr "" -#: stock/templates/stock/item_base.html:111 +#: stock/templates/stock/item_base.html:113 msgid "Edit stock item" msgstr "" -#: stock/templates/stock/item_base.html:114 +#: stock/templates/stock/item_base.html:116 msgid "Delete stock item" msgstr "" -#: stock/templates/stock/item_base.html:136 -#: stock/templates/stock/item_base.html:386 -#: templates/js/translated/table_filters.js:247 -msgid "Expired" +#: stock/templates/stock/item_base.html:154 +msgid "previous page" msgstr "" -#: stock/templates/stock/item_base.html:146 -#: stock/templates/stock/item_base.html:388 -#: templates/js/translated/table_filters.js:253 -msgid "Stale" +#: stock/templates/stock/item_base.html:154 +msgid "Navigate to previous serial number" msgstr "" -#: stock/templates/stock/item_base.html:161 -msgid "You are not in the list of owners of this item. This stock item cannot be edited." +#: stock/templates/stock/item_base.html:163 +msgid "next page" msgstr "" -#: stock/templates/stock/item_base.html:168 -msgid "This stock item is in production and cannot be edited." -msgstr "" - -#: stock/templates/stock/item_base.html:169 -msgid "Edit the stock item from the build view." -msgstr "" - -#: stock/templates/stock/item_base.html:182 -msgid "This stock item has not passed all required tests" +#: stock/templates/stock/item_base.html:163 +msgid "Navigate to next serial number" msgstr "" #: stock/templates/stock/item_base.html:190 #, python-format -msgid "This stock item is allocated to Sales Order %(link)s (Quantity: %(qty)s)" -msgstr "" - -#: stock/templates/stock/item_base.html:198 -#, python-format -msgid "This stock item is allocated to Build %(link)s (Quantity: %(qty)s)" -msgstr "" - -#: stock/templates/stock/item_base.html:204 -msgid "This stock item is serialized - it has a unique serial number and the quantity cannot be adjusted." -msgstr "" - -#: stock/templates/stock/item_base.html:208 -msgid "This stock item cannot be deleted as it has child items" -msgstr "" - -#: stock/templates/stock/item_base.html:212 -msgid "This stock item will be automatically deleted when all stock is depleted." -msgstr "" - -#: stock/templates/stock/item_base.html:241 -msgid "previous page" -msgstr "" - -#: stock/templates/stock/item_base.html:247 -msgid "next page" -msgstr "" - -#: stock/templates/stock/item_base.html:290 -#: templates/js/translated/build.js:1035 -msgid "No location set" -msgstr "" - -#: stock/templates/stock/item_base.html:297 -msgid "Barcode Identifier" -msgstr "" - -#: stock/templates/stock/item_base.html:339 -msgid "Parent Item" -msgstr "" - -#: stock/templates/stock/item_base.html:357 -msgid "No manufacturer set" -msgstr "" - -#: stock/templates/stock/item_base.html:386 -#, python-format msgid "This StockItem expired on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:388 +#: stock/templates/stock/item_base.html:190 +#: templates/js/translated/table_filters.js:247 +msgid "Expired" +msgstr "" + +#: stock/templates/stock/item_base.html:192 #, python-format msgid "This StockItem expires on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:395 -#: templates/js/translated/stock.js:1289 +#: stock/templates/stock/item_base.html:192 +#: templates/js/translated/table_filters.js:253 +msgid "Stale" +msgstr "" + +#: stock/templates/stock/item_base.html:199 +#: templates/js/translated/stock.js:1371 msgid "Last Updated" msgstr "" -#: stock/templates/stock/item_base.html:400 +#: stock/templates/stock/item_base.html:204 msgid "Last Stocktake" msgstr "" -#: stock/templates/stock/item_base.html:404 +#: stock/templates/stock/item_base.html:208 msgid "No stocktake performed" msgstr "" -#: stock/templates/stock/item_base.html:415 +#: stock/templates/stock/item_base.html:226 +msgid "You are not in the list of owners of this item. This stock item cannot be edited." +msgstr "" + +#: stock/templates/stock/item_base.html:233 +msgid "This stock item is in production and cannot be edited." +msgstr "" + +#: stock/templates/stock/item_base.html:234 +msgid "Edit the stock item from the build view." +msgstr "" + +#: stock/templates/stock/item_base.html:247 +msgid "This stock item has not passed all required tests" +msgstr "" + +#: stock/templates/stock/item_base.html:255 +#, python-format +msgid "This stock item is allocated to Sales Order %(link)s (Quantity: %(qty)s)" +msgstr "" + +#: stock/templates/stock/item_base.html:263 +#, python-format +msgid "This stock item is allocated to Build %(link)s (Quantity: %(qty)s)" +msgstr "" + +#: stock/templates/stock/item_base.html:269 +msgid "This stock item is serialized - it has a unique serial number and the quantity cannot be adjusted." +msgstr "" + +#: stock/templates/stock/item_base.html:273 +msgid "This stock item cannot be deleted as it has child items" +msgstr "" + +#: stock/templates/stock/item_base.html:277 +msgid "This stock item will be automatically deleted when all stock is depleted." +msgstr "" + +#: stock/templates/stock/item_base.html:318 +#: templates/js/translated/build.js:1035 +msgid "No location set" +msgstr "" + +#: stock/templates/stock/item_base.html:325 +msgid "Barcode Identifier" +msgstr "" + +#: stock/templates/stock/item_base.html:367 +msgid "Parent Item" +msgstr "" + +#: stock/templates/stock/item_base.html:385 +msgid "No manufacturer set" +msgstr "" + +#: stock/templates/stock/item_base.html:410 msgid "Tests" msgstr "" -#: stock/templates/stock/item_base.html:505 +#: stock/templates/stock/item_base.html:500 msgid "Edit Stock Status" msgstr "" @@ -5825,30 +5858,35 @@ msgstr "" msgid "New Location" msgstr "" -#: stock/templates/stock/location.html:86 +#: stock/templates/stock/location.html:95 +#: stock/templates/stock/location.html:101 +msgid "Location Path" +msgstr "" + +#: stock/templates/stock/location.html:102 msgid "Top level stock location" msgstr "" -#: stock/templates/stock/location.html:95 +#: stock/templates/stock/location.html:115 msgid "You are not in the list of owners of this location. This stock location cannot be edited." msgstr "" -#: stock/templates/stock/location.html:113 -#: stock/templates/stock/location.html:160 +#: stock/templates/stock/location.html:128 +#: stock/templates/stock/location.html:175 #: stock/templates/stock/location_sidebar.html:5 msgid "Sublocations" msgstr "" -#: stock/templates/stock/location.html:127 templates/InvenTree/search.html:170 +#: stock/templates/stock/location.html:142 templates/InvenTree/search.html:170 #: templates/stats.html:97 users/models.py:42 msgid "Stock Locations" msgstr "" -#: stock/templates/stock/location.html:167 templates/stock_table.html:30 +#: stock/templates/stock/location.html:182 templates/stock_table.html:30 msgid "Printing Actions" msgstr "" -#: stock/templates/stock/location.html:171 templates/stock_table.html:34 +#: stock/templates/stock/location.html:186 templates/stock_table.html:34 msgid "Print labels" msgstr "" @@ -5942,7 +5980,7 @@ msgstr "" msgid "Uninstall Stock Items" msgstr "" -#: stock/views.py:760 templates/js/translated/stock.js:648 +#: stock/views.py:760 templates/js/translated/stock.js:730 msgid "Confirm stock adjustment" msgstr "" @@ -5950,7 +5988,7 @@ msgstr "" msgid "Uninstalled stock items" msgstr "" -#: stock/views.py:793 templates/js/translated/stock.js:318 +#: stock/views.py:793 templates/js/translated/stock.js:319 msgid "Edit Stock Item" msgstr "" @@ -5962,7 +6000,7 @@ msgstr "" msgid "Create new Stock Item" msgstr "" -#: stock/views.py:1186 templates/js/translated/stock.js:298 +#: stock/views.py:1186 templates/js/translated/stock.js:299 msgid "Duplicate Stock Item" msgstr "" @@ -6868,7 +6906,7 @@ msgstr "" msgid "Unlink" msgstr "" -#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:600 +#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:682 msgid "Remove stock item" msgstr "" @@ -6963,7 +7001,7 @@ msgid "View BOM" msgstr "" #: templates/js/translated/bom.js:608 templates/js/translated/build.js:1183 -#: templates/js/translated/order.js:1320 +#: templates/js/translated/order.js:1319 msgid "Actions" msgstr "" @@ -7055,7 +7093,7 @@ msgstr "" msgid "No build order allocations found" msgstr "" -#: templates/js/translated/build.js:424 templates/js/translated/order.js:1194 +#: templates/js/translated/build.js:424 templates/js/translated/order.js:1193 msgid "Location not specified" msgstr "" @@ -7064,12 +7102,12 @@ msgid "No active build outputs found" msgstr "" #: templates/js/translated/build.js:1052 templates/js/translated/build.js:1760 -#: templates/js/translated/order.js:1327 +#: templates/js/translated/order.js:1326 msgid "Edit stock allocation" msgstr "" #: templates/js/translated/build.js:1054 templates/js/translated/build.js:1761 -#: templates/js/translated/order.js:1328 +#: templates/js/translated/order.js:1327 msgid "Delete stock allocation" msgstr "" @@ -7090,11 +7128,11 @@ msgid "Quantity Per" msgstr "" #: templates/js/translated/build.js:1134 templates/js/translated/build.js:1360 -#: templates/js/translated/build.js:1756 templates/js/translated/order.js:1557 +#: templates/js/translated/build.js:1756 templates/js/translated/order.js:1556 msgid "Allocated" msgstr "" -#: templates/js/translated/build.js:1190 templates/js/translated/order.js:1611 +#: templates/js/translated/build.js:1190 templates/js/translated/order.js:1610 msgid "Build stock" msgstr "" @@ -7102,7 +7140,7 @@ msgstr "" msgid "Order stock" msgstr "" -#: templates/js/translated/build.js:1197 templates/js/translated/order.js:1604 +#: templates/js/translated/build.js:1197 templates/js/translated/order.js:1603 msgid "Allocate stock" msgstr "" @@ -7143,9 +7181,9 @@ msgstr "" msgid "No builds matching query" msgstr "" -#: templates/js/translated/build.js:1593 templates/js/translated/part.js:966 -#: templates/js/translated/part.js:1377 templates/js/translated/stock.js:1094 -#: templates/js/translated/stock.js:1871 +#: templates/js/translated/build.js:1593 templates/js/translated/part.js:1147 +#: templates/js/translated/part.js:1558 templates/js/translated/stock.js:1176 +#: templates/js/translated/stock.js:1953 msgid "Select" msgstr "" @@ -7153,7 +7191,7 @@ msgstr "" msgid "Build order is overdue" msgstr "" -#: templates/js/translated/build.js:1674 templates/js/translated/stock.js:2090 +#: templates/js/translated/build.js:1674 templates/js/translated/stock.js:2172 msgid "No user information" msgstr "" @@ -7197,10 +7235,6 @@ msgstr "" msgid "Delete Supplier Part" msgstr "" -#: templates/js/translated/company.js:265 -msgid "Edit Company" -msgstr "" - #: templates/js/translated/company.js:286 msgid "Add new Company" msgstr "" @@ -7230,34 +7264,34 @@ msgid "No manufacturer parts found" msgstr "" #: templates/js/translated/company.js:497 -#: templates/js/translated/company.js:754 templates/js/translated/part.js:449 -#: templates/js/translated/part.js:534 +#: templates/js/translated/company.js:754 templates/js/translated/part.js:456 +#: templates/js/translated/part.js:541 msgid "Template part" msgstr "" #: templates/js/translated/company.js:501 -#: templates/js/translated/company.js:758 templates/js/translated/part.js:453 -#: templates/js/translated/part.js:538 +#: templates/js/translated/company.js:758 templates/js/translated/part.js:460 +#: templates/js/translated/part.js:545 msgid "Assembled part" msgstr "" -#: templates/js/translated/company.js:628 templates/js/translated/part.js:626 +#: templates/js/translated/company.js:628 templates/js/translated/part.js:633 msgid "No parameters found" msgstr "" -#: templates/js/translated/company.js:665 templates/js/translated/part.js:668 +#: templates/js/translated/company.js:665 templates/js/translated/part.js:675 msgid "Edit parameter" msgstr "" -#: templates/js/translated/company.js:666 templates/js/translated/part.js:669 +#: templates/js/translated/company.js:666 templates/js/translated/part.js:676 msgid "Delete parameter" msgstr "" -#: templates/js/translated/company.js:685 templates/js/translated/part.js:686 +#: templates/js/translated/company.js:685 templates/js/translated/part.js:693 msgid "Edit Parameter" msgstr "" -#: templates/js/translated/company.js:696 templates/js/translated/part.js:698 +#: templates/js/translated/company.js:696 templates/js/translated/part.js:705 msgid "Delete Parameter" msgstr "" @@ -7346,7 +7380,7 @@ msgid "NO" msgstr "" #: templates/js/translated/label.js:29 templates/js/translated/report.js:118 -#: templates/js/translated/stock.js:624 +#: templates/js/translated/stock.js:706 msgid "Select Stock Items" msgstr "" @@ -7502,11 +7536,11 @@ msgstr "" msgid "Export Order" msgstr "" -#: templates/js/translated/order.js:211 templates/js/translated/stock.js:423 +#: templates/js/translated/order.js:211 templates/js/translated/stock.js:505 msgid "Format" msgstr "" -#: templates/js/translated/order.js:212 templates/js/translated/stock.js:424 +#: templates/js/translated/order.js:212 templates/js/translated/stock.js:506 msgid "Select file format" msgstr "" @@ -7522,7 +7556,7 @@ msgstr "" msgid "Quantity to receive" msgstr "" -#: templates/js/translated/order.js:360 templates/js/translated/stock.js:1673 +#: templates/js/translated/order.js:360 templates/js/translated/stock.js:1755 msgid "Stock Status" msgstr "" @@ -7546,321 +7580,321 @@ msgstr "" msgid "Receive Purchase Order Items" msgstr "" -#: templates/js/translated/order.js:627 +#: templates/js/translated/order.js:627 templates/js/translated/part.js:746 msgid "No purchase orders found" msgstr "" -#: templates/js/translated/order.js:652 templates/js/translated/order.js:1063 +#: templates/js/translated/order.js:659 templates/js/translated/order.js:1062 msgid "Order is overdue" msgstr "" -#: templates/js/translated/order.js:772 templates/js/translated/order.js:1646 +#: templates/js/translated/order.js:771 templates/js/translated/order.js:1645 msgid "Edit Line Item" msgstr "" -#: templates/js/translated/order.js:784 templates/js/translated/order.js:1657 +#: templates/js/translated/order.js:783 templates/js/translated/order.js:1656 msgid "Delete Line Item" msgstr "" -#: templates/js/translated/order.js:823 +#: templates/js/translated/order.js:822 msgid "No line items found" msgstr "" -#: templates/js/translated/order.js:850 templates/js/translated/order.js:1467 +#: templates/js/translated/order.js:849 templates/js/translated/order.js:1466 msgid "Total" msgstr "" -#: templates/js/translated/order.js:904 templates/js/translated/order.js:1492 -#: templates/js/translated/part.js:1594 templates/js/translated/part.js:1805 +#: templates/js/translated/order.js:903 templates/js/translated/order.js:1491 +#: templates/js/translated/part.js:1775 templates/js/translated/part.js:1986 msgid "Unit Price" msgstr "" -#: templates/js/translated/order.js:919 templates/js/translated/order.js:1508 +#: templates/js/translated/order.js:918 templates/js/translated/order.js:1507 msgid "Total Price" msgstr "" -#: templates/js/translated/order.js:997 templates/js/translated/order.js:1617 +#: templates/js/translated/order.js:996 templates/js/translated/order.js:1616 msgid "Edit line item" msgstr "" -#: templates/js/translated/order.js:998 +#: templates/js/translated/order.js:997 msgid "Delete line item" msgstr "" -#: templates/js/translated/order.js:1002 +#: templates/js/translated/order.js:1001 templates/js/translated/part.js:878 msgid "Receive line item" msgstr "" -#: templates/js/translated/order.js:1039 +#: templates/js/translated/order.js:1038 msgid "No sales orders found" msgstr "" -#: templates/js/translated/order.js:1077 +#: templates/js/translated/order.js:1076 msgid "Invalid Customer" msgstr "" -#: templates/js/translated/order.js:1155 +#: templates/js/translated/order.js:1154 msgid "No sales order allocations found" msgstr "" -#: templates/js/translated/order.js:1248 +#: templates/js/translated/order.js:1247 msgid "Edit Stock Allocation" msgstr "" -#: templates/js/translated/order.js:1265 +#: templates/js/translated/order.js:1264 msgid "Confirm Delete Operation" msgstr "" -#: templates/js/translated/order.js:1266 +#: templates/js/translated/order.js:1265 msgid "Delete Stock Allocation" msgstr "" -#: templates/js/translated/order.js:1308 +#: templates/js/translated/order.js:1307 msgid "Stock location not specified" msgstr "" -#: templates/js/translated/order.js:1557 +#: templates/js/translated/order.js:1556 msgid "Fulfilled" msgstr "" -#: templates/js/translated/order.js:1601 +#: templates/js/translated/order.js:1600 msgid "Allocate serial numbers" msgstr "" -#: templates/js/translated/order.js:1607 +#: templates/js/translated/order.js:1606 msgid "Purchase stock" msgstr "" -#: templates/js/translated/order.js:1614 templates/js/translated/order.js:1793 +#: templates/js/translated/order.js:1613 templates/js/translated/order.js:1792 msgid "Calculate price" msgstr "" -#: templates/js/translated/order.js:1618 +#: templates/js/translated/order.js:1617 msgid "Delete line item " msgstr "" -#: templates/js/translated/order.js:1741 +#: templates/js/translated/order.js:1740 msgid "Allocate Stock Item" msgstr "" -#: templates/js/translated/order.js:1801 +#: templates/js/translated/order.js:1800 msgid "Update Unit Price" msgstr "" -#: templates/js/translated/order.js:1815 +#: templates/js/translated/order.js:1814 msgid "No matching line items" msgstr "" -#: templates/js/translated/part.js:51 +#: templates/js/translated/part.js:52 msgid "Part Attributes" msgstr "" -#: templates/js/translated/part.js:55 +#: templates/js/translated/part.js:56 msgid "Part Creation Options" msgstr "" -#: templates/js/translated/part.js:59 +#: templates/js/translated/part.js:60 msgid "Part Duplication Options" msgstr "" -#: templates/js/translated/part.js:63 +#: templates/js/translated/part.js:64 msgid "Supplier Options" msgstr "" -#: templates/js/translated/part.js:77 +#: templates/js/translated/part.js:78 msgid "Add Part Category" msgstr "" -#: templates/js/translated/part.js:166 +#: templates/js/translated/part.js:162 msgid "Create Initial Stock" msgstr "" -#: templates/js/translated/part.js:167 +#: templates/js/translated/part.js:163 msgid "Create an initial stock item for this part" msgstr "" -#: templates/js/translated/part.js:174 +#: templates/js/translated/part.js:170 msgid "Initial Stock Quantity" msgstr "" -#: templates/js/translated/part.js:175 +#: templates/js/translated/part.js:171 msgid "Specify initial stock quantity for this part" msgstr "" -#: templates/js/translated/part.js:182 +#: templates/js/translated/part.js:178 msgid "Select destination stock location" msgstr "" -#: templates/js/translated/part.js:193 +#: templates/js/translated/part.js:196 msgid "Copy Category Parameters" msgstr "" -#: templates/js/translated/part.js:194 +#: templates/js/translated/part.js:197 msgid "Copy parameter templates from selected part category" msgstr "" -#: templates/js/translated/part.js:202 +#: templates/js/translated/part.js:205 msgid "Add Supplier Data" msgstr "" -#: templates/js/translated/part.js:203 +#: templates/js/translated/part.js:206 msgid "Create initial supplier data for this part" msgstr "" -#: templates/js/translated/part.js:259 +#: templates/js/translated/part.js:262 msgid "Copy Image" msgstr "" -#: templates/js/translated/part.js:260 +#: templates/js/translated/part.js:263 msgid "Copy image from original part" msgstr "" -#: templates/js/translated/part.js:268 +#: templates/js/translated/part.js:271 msgid "Copy bill of materials from original part" msgstr "" -#: templates/js/translated/part.js:275 +#: templates/js/translated/part.js:278 msgid "Copy Parameters" msgstr "" -#: templates/js/translated/part.js:276 +#: templates/js/translated/part.js:279 msgid "Copy parameter data from original part" msgstr "" -#: templates/js/translated/part.js:289 +#: templates/js/translated/part.js:292 msgid "Parent part category" msgstr "" -#: templates/js/translated/part.js:333 +#: templates/js/translated/part.js:336 msgid "Edit Part" msgstr "" -#: templates/js/translated/part.js:335 +#: templates/js/translated/part.js:338 msgid "Part edited" msgstr "" -#: templates/js/translated/part.js:403 +#: templates/js/translated/part.js:410 msgid "You are subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:405 +#: templates/js/translated/part.js:412 msgid "You have subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:410 +#: templates/js/translated/part.js:417 msgid "Subscribe to notifications for this item" msgstr "" -#: templates/js/translated/part.js:412 +#: templates/js/translated/part.js:419 msgid "You have unsubscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:441 templates/js/translated/part.js:526 +#: templates/js/translated/part.js:448 templates/js/translated/part.js:533 msgid "Trackable part" msgstr "" -#: templates/js/translated/part.js:445 templates/js/translated/part.js:530 +#: templates/js/translated/part.js:452 templates/js/translated/part.js:537 msgid "Virtual part" msgstr "" -#: templates/js/translated/part.js:457 +#: templates/js/translated/part.js:464 msgid "Subscribed part" msgstr "" -#: templates/js/translated/part.js:461 +#: templates/js/translated/part.js:468 msgid "Salable part" msgstr "" -#: templates/js/translated/part.js:576 +#: templates/js/translated/part.js:583 msgid "No variants found" msgstr "" -#: templates/js/translated/part.js:765 +#: templates/js/translated/part.js:946 msgid "Delete part relationship" msgstr "" -#: templates/js/translated/part.js:789 +#: templates/js/translated/part.js:970 msgid "Delete Part Relationship" msgstr "" -#: templates/js/translated/part.js:856 templates/js/translated/part.js:1116 +#: templates/js/translated/part.js:1037 templates/js/translated/part.js:1297 msgid "No parts found" msgstr "" -#: templates/js/translated/part.js:1026 +#: templates/js/translated/part.js:1207 msgid "No category" msgstr "" -#: templates/js/translated/part.js:1049 +#: templates/js/translated/part.js:1230 #: templates/js/translated/table_filters.js:381 msgid "Low stock" msgstr "" -#: templates/js/translated/part.js:1140 templates/js/translated/part.js:1312 -#: templates/js/translated/stock.js:1832 +#: templates/js/translated/part.js:1321 templates/js/translated/part.js:1493 +#: templates/js/translated/stock.js:1914 msgid "Display as list" msgstr "" -#: templates/js/translated/part.js:1156 +#: templates/js/translated/part.js:1337 msgid "Display as grid" msgstr "" -#: templates/js/translated/part.js:1331 templates/js/translated/stock.js:1851 +#: templates/js/translated/part.js:1512 templates/js/translated/stock.js:1933 msgid "Display as tree" msgstr "" -#: templates/js/translated/part.js:1395 +#: templates/js/translated/part.js:1576 msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:1409 templates/js/translated/stock.js:1895 +#: templates/js/translated/part.js:1590 templates/js/translated/stock.js:1977 msgid "Path" msgstr "" -#: templates/js/translated/part.js:1453 +#: templates/js/translated/part.js:1634 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:1504 templates/js/translated/stock.js:816 +#: templates/js/translated/part.js:1685 templates/js/translated/stock.js:898 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:1505 templates/js/translated/stock.js:817 +#: templates/js/translated/part.js:1686 templates/js/translated/stock.js:899 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:1511 +#: templates/js/translated/part.js:1692 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:1533 +#: templates/js/translated/part.js:1714 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:1547 +#: templates/js/translated/part.js:1728 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:1572 +#: templates/js/translated/part.js:1753 #, python-brace-format msgid "No ${human_name} information found" msgstr "" -#: templates/js/translated/part.js:1627 +#: templates/js/translated/part.js:1808 #, python-brace-format msgid "Edit ${human_name}" msgstr "" -#: templates/js/translated/part.js:1628 +#: templates/js/translated/part.js:1809 #, python-brace-format msgid "Delete ${human_name}" msgstr "" -#: templates/js/translated/part.js:1729 +#: templates/js/translated/part.js:1910 msgid "Single Price" msgstr "" -#: templates/js/translated/part.js:1748 +#: templates/js/translated/part.js:1929 msgid "Single Price Difference" msgstr "" @@ -7930,276 +7964,300 @@ msgstr "" msgid "Sales Order(s) must be selected before printing report" msgstr "" -#: templates/js/translated/stock.js:70 +#: templates/js/translated/stock.js:71 msgid "Serialize Stock Item" msgstr "" -#: templates/js/translated/stock.js:88 templates/js/translated/stock.js:167 +#: templates/js/translated/stock.js:89 templates/js/translated/stock.js:168 msgid "Next available serial number" msgstr "" -#: templates/js/translated/stock.js:90 templates/js/translated/stock.js:169 +#: templates/js/translated/stock.js:91 templates/js/translated/stock.js:170 msgid "Latest serial number" msgstr "" -#: templates/js/translated/stock.js:104 +#: templates/js/translated/stock.js:105 msgid "Parent stock location" msgstr "" -#: templates/js/translated/stock.js:140 +#: templates/js/translated/stock.js:141 msgid "New Stock Location" msgstr "" -#: templates/js/translated/stock.js:180 +#: templates/js/translated/stock.js:181 msgid "This part cannot be serialized" msgstr "" -#: templates/js/translated/stock.js:219 +#: templates/js/translated/stock.js:220 msgid "Enter initial quantity for this stock item" msgstr "" -#: templates/js/translated/stock.js:225 +#: templates/js/translated/stock.js:226 msgid "Enter serial numbers for new stock (or leave blank)" msgstr "" -#: templates/js/translated/stock.js:368 +#: templates/js/translated/stock.js:369 msgid "Created new stock item" msgstr "" -#: templates/js/translated/stock.js:381 +#: templates/js/translated/stock.js:382 msgid "Created multiple stock items" msgstr "" -#: templates/js/translated/stock.js:420 +#: templates/js/translated/stock.js:407 +msgid "Find Serial Number" +msgstr "" + +#: templates/js/translated/stock.js:411 templates/js/translated/stock.js:412 +msgid "Enter serial number" +msgstr "" + +#: templates/js/translated/stock.js:428 +msgid "Enter a serial number" +msgstr "" + +#: templates/js/translated/stock.js:448 +msgid "No matching serial number" +msgstr "" + +#: templates/js/translated/stock.js:457 +msgid "More than one matching result found" +msgstr "" + +#: templates/js/translated/stock.js:502 msgid "Export Stock" msgstr "" -#: templates/js/translated/stock.js:431 +#: templates/js/translated/stock.js:513 msgid "Include Sublocations" msgstr "" -#: templates/js/translated/stock.js:432 +#: templates/js/translated/stock.js:514 msgid "Include stock items in sublocations" msgstr "" -#: templates/js/translated/stock.js:474 +#: templates/js/translated/stock.js:556 msgid "Transfer Stock" msgstr "" -#: templates/js/translated/stock.js:475 +#: templates/js/translated/stock.js:557 msgid "Move" msgstr "" -#: templates/js/translated/stock.js:481 +#: templates/js/translated/stock.js:563 msgid "Count Stock" msgstr "" -#: templates/js/translated/stock.js:482 +#: templates/js/translated/stock.js:564 msgid "Count" msgstr "" -#: templates/js/translated/stock.js:486 +#: templates/js/translated/stock.js:568 msgid "Remove Stock" msgstr "" -#: templates/js/translated/stock.js:487 +#: templates/js/translated/stock.js:569 msgid "Take" msgstr "" -#: templates/js/translated/stock.js:491 +#: templates/js/translated/stock.js:573 msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:492 users/models.py:200 +#: templates/js/translated/stock.js:574 users/models.py:200 msgid "Add" msgstr "" -#: templates/js/translated/stock.js:496 templates/stock_table.html:56 +#: templates/js/translated/stock.js:578 templates/stock_table.html:56 msgid "Delete Stock" msgstr "" -#: templates/js/translated/stock.js:585 +#: templates/js/translated/stock.js:667 msgid "Quantity cannot be adjusted for serialized stock" msgstr "" -#: templates/js/translated/stock.js:585 +#: templates/js/translated/stock.js:667 msgid "Specify stock quantity" msgstr "" -#: templates/js/translated/stock.js:625 +#: templates/js/translated/stock.js:707 msgid "You must select at least one available stock item" msgstr "" -#: templates/js/translated/stock.js:783 +#: templates/js/translated/stock.js:865 msgid "PASS" msgstr "" -#: templates/js/translated/stock.js:785 +#: templates/js/translated/stock.js:867 msgid "FAIL" msgstr "" -#: templates/js/translated/stock.js:790 +#: templates/js/translated/stock.js:872 msgid "NO RESULT" msgstr "" -#: templates/js/translated/stock.js:812 +#: templates/js/translated/stock.js:894 msgid "Add test result" msgstr "" -#: templates/js/translated/stock.js:838 +#: templates/js/translated/stock.js:920 msgid "No test results found" msgstr "" -#: templates/js/translated/stock.js:895 +#: templates/js/translated/stock.js:977 msgid "Test Date" msgstr "" -#: templates/js/translated/stock.js:1002 +#: templates/js/translated/stock.js:1084 msgid "In production" msgstr "" -#: templates/js/translated/stock.js:1006 +#: templates/js/translated/stock.js:1088 msgid "Installed in Stock Item" msgstr "" -#: templates/js/translated/stock.js:1010 +#: templates/js/translated/stock.js:1092 msgid "Shipped to customer" msgstr "" -#: templates/js/translated/stock.js:1014 +#: templates/js/translated/stock.js:1096 msgid "Assigned to Sales Order" msgstr "" -#: templates/js/translated/stock.js:1020 +#: templates/js/translated/stock.js:1102 msgid "No stock location set" msgstr "" -#: templates/js/translated/stock.js:1178 +#: templates/js/translated/stock.js:1260 msgid "Stock item is in production" msgstr "" -#: templates/js/translated/stock.js:1183 +#: templates/js/translated/stock.js:1265 msgid "Stock item assigned to sales order" msgstr "" -#: templates/js/translated/stock.js:1186 +#: templates/js/translated/stock.js:1268 msgid "Stock item assigned to customer" msgstr "" -#: templates/js/translated/stock.js:1190 +#: templates/js/translated/stock.js:1272 msgid "Stock item has expired" msgstr "" -#: templates/js/translated/stock.js:1192 +#: templates/js/translated/stock.js:1274 msgid "Stock item will expire soon" msgstr "" -#: templates/js/translated/stock.js:1196 +#: templates/js/translated/stock.js:1278 msgid "Stock item has been allocated" msgstr "" -#: templates/js/translated/stock.js:1200 +#: templates/js/translated/stock.js:1282 msgid "Stock item has been installed in another item" msgstr "" -#: templates/js/translated/stock.js:1207 +#: templates/js/translated/stock.js:1289 msgid "Stock item has been rejected" msgstr "" -#: templates/js/translated/stock.js:1209 +#: templates/js/translated/stock.js:1291 msgid "Stock item is lost" msgstr "" -#: templates/js/translated/stock.js:1211 +#: templates/js/translated/stock.js:1293 msgid "Stock item is destroyed" msgstr "" -#: templates/js/translated/stock.js:1215 +#: templates/js/translated/stock.js:1297 #: templates/js/translated/table_filters.js:183 msgid "Depleted" msgstr "" -#: templates/js/translated/stock.js:1265 +#: templates/js/translated/stock.js:1347 msgid "Stocktake" msgstr "" -#: templates/js/translated/stock.js:1338 +#: templates/js/translated/stock.js:1420 msgid "Supplier part not specified" msgstr "" -#: templates/js/translated/stock.js:1376 +#: templates/js/translated/stock.js:1458 msgid "No stock items matching query" msgstr "" -#: templates/js/translated/stock.js:1397 templates/js/translated/stock.js:1445 +#: templates/js/translated/stock.js:1479 templates/js/translated/stock.js:1527 msgid "items" msgstr "" -#: templates/js/translated/stock.js:1485 +#: templates/js/translated/stock.js:1567 msgid "batches" msgstr "" -#: templates/js/translated/stock.js:1512 +#: templates/js/translated/stock.js:1594 msgid "locations" msgstr "" -#: templates/js/translated/stock.js:1514 +#: templates/js/translated/stock.js:1596 msgid "Undefined location" msgstr "" -#: templates/js/translated/stock.js:1688 +#: templates/js/translated/stock.js:1770 msgid "Set Stock Status" msgstr "" -#: templates/js/translated/stock.js:1702 +#: templates/js/translated/stock.js:1784 msgid "Select Status Code" msgstr "" -#: templates/js/translated/stock.js:1703 +#: templates/js/translated/stock.js:1785 msgid "Status code must be selected" msgstr "" -#: templates/js/translated/stock.js:1927 +#: templates/js/translated/stock.js:2009 msgid "Invalid date" msgstr "" -#: templates/js/translated/stock.js:1974 +#: templates/js/translated/stock.js:2031 +msgid "Details" +msgstr "" + +#: templates/js/translated/stock.js:2056 msgid "Location no longer exists" msgstr "" -#: templates/js/translated/stock.js:1993 +#: templates/js/translated/stock.js:2075 msgid "Purchase order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2012 +#: templates/js/translated/stock.js:2094 msgid "Customer no longer exists" msgstr "" -#: templates/js/translated/stock.js:2030 +#: templates/js/translated/stock.js:2112 msgid "Stock item no longer exists" msgstr "" -#: templates/js/translated/stock.js:2053 +#: templates/js/translated/stock.js:2135 msgid "Added" msgstr "" -#: templates/js/translated/stock.js:2061 +#: templates/js/translated/stock.js:2143 msgid "Removed" msgstr "" -#: templates/js/translated/stock.js:2102 +#: templates/js/translated/stock.js:2184 msgid "Edit tracking entry" msgstr "" -#: templates/js/translated/stock.js:2103 +#: templates/js/translated/stock.js:2185 msgid "Delete tracking entry" msgstr "" -#: templates/js/translated/stock.js:2154 +#: templates/js/translated/stock.js:2236 msgid "No installed items" msgstr "" -#: templates/js/translated/stock.js:2205 +#: templates/js/translated/stock.js:2287 msgid "Uninstall Stock Item" msgstr "" diff --git a/InvenTree/locale/pl/LC_MESSAGES/django.po b/InvenTree/locale/pl/LC_MESSAGES/django.po index 035a0f00a1..ce000b6277 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-11-30 21:49+0000\n" -"PO-Revision-Date: 2021-11-30 21:52\n" +"POT-Creation-Date: 2021-12-03 10:37+0000\n" +"PO-Revision-Date: 2021-12-03 11:26\n" "Last-Translator: \n" "Language-Team: Polish\n" "Language: pl_PL\n" @@ -114,129 +114,130 @@ msgstr "Nie znaleziono numerów seryjnych" msgid "Number of unique serial number ({s}) must match quantity ({q})" msgstr "Ilość numerów seryjnych ({s}) musi odpowiadać ilości ({q})" -#: InvenTree/models.py:114 +#: InvenTree/models.py:120 msgid "Missing file" msgstr "" -#: InvenTree/models.py:115 +#: InvenTree/models.py:121 msgid "Missing external link" msgstr "" -#: InvenTree/models.py:126 stock/models.py:1874 +#: InvenTree/models.py:132 stock/models.py:1864 #: templates/js/translated/attachment.js:117 msgid "Attachment" msgstr "Załącznik" -#: InvenTree/models.py:127 +#: InvenTree/models.py:133 msgid "Select file to attach" msgstr "Wybierz plik do załączenia" -#: InvenTree/models.py:133 company/models.py:131 company/models.py:348 +#: InvenTree/models.py:139 company/models.py:131 company/models.py:348 #: company/models.py:564 order/models.py:163 part/models.py:797 #: report/templates/report/inventree_build_order_base.html:165 #: templates/js/translated/company.js:537 -#: templates/js/translated/company.js:826 templates/js/translated/part.js:1077 +#: templates/js/translated/company.js:826 templates/js/translated/part.js:1258 msgid "Link" msgstr "Łącze" -#: InvenTree/models.py:134 build/models.py:330 part/models.py:798 -#: stock/models.py:540 +#: InvenTree/models.py:140 build/models.py:330 part/models.py:798 +#: stock/models.py:530 msgid "Link to external URL" msgstr "Link do zewnętrznego adresu URL" -#: InvenTree/models.py:137 templates/js/translated/attachment.js:161 +#: InvenTree/models.py:143 templates/js/translated/attachment.js:161 msgid "Comment" msgstr "Komentarz" -#: InvenTree/models.py:137 +#: InvenTree/models.py:143 msgid "File comment" msgstr "Komentarz pliku" -#: InvenTree/models.py:143 InvenTree/models.py:144 common/models.py:1185 +#: InvenTree/models.py:149 InvenTree/models.py:150 common/models.py:1185 #: common/models.py:1186 part/models.py:2205 part/models.py:2225 #: report/templates/report/inventree_test_report_base.html:96 -#: templates/js/translated/stock.js:2084 +#: templates/js/translated/stock.js:2166 msgid "User" msgstr "Użytkownik" -#: InvenTree/models.py:147 +#: InvenTree/models.py:153 msgid "upload date" msgstr "data przesłania" -#: InvenTree/models.py:170 +#: InvenTree/models.py:176 msgid "Filename must not be empty" msgstr "" -#: InvenTree/models.py:193 +#: InvenTree/models.py:199 msgid "Invalid attachment directory" msgstr "" -#: InvenTree/models.py:203 +#: InvenTree/models.py:209 #, python-brace-format msgid "Filename contains illegal character '{c}'" msgstr "" -#: InvenTree/models.py:206 +#: InvenTree/models.py:212 msgid "Filename missing extension" msgstr "" -#: InvenTree/models.py:213 +#: InvenTree/models.py:219 msgid "Attachment with this filename already exists" msgstr "" -#: InvenTree/models.py:220 +#: InvenTree/models.py:226 msgid "Error renaming file" msgstr "Błąd zmiany nazwy pliku" -#: InvenTree/models.py:255 +#: InvenTree/models.py:261 msgid "Invalid choice" msgstr "Błędny wybór" -#: InvenTree/models.py:271 InvenTree/models.py:272 company/models.py:415 +#: InvenTree/models.py:277 InvenTree/models.py:278 company/models.py:415 #: label/models.py:112 part/models.py:741 part/models.py:2389 -#: part/templates/part/detail.html:25 report/models.py:181 -#: templates/InvenTree/settings/settings.html:259 -#: templates/js/translated/company.js:638 templates/js/translated/part.js:499 -#: templates/js/translated/part.js:636 templates/js/translated/part.js:1384 -#: templates/js/translated/stock.js:1877 +#: report/models.py:181 templates/InvenTree/settings/settings.html:259 +#: templates/js/translated/company.js:638 templates/js/translated/part.js:506 +#: templates/js/translated/part.js:643 templates/js/translated/part.js:1565 +#: templates/js/translated/stock.js:1959 msgid "Name" msgstr "Nazwa" -#: InvenTree/models.py:278 build/models.py:207 +#: InvenTree/models.py:284 build/models.py:207 #: build/templates/build/detail.html:25 company/models.py:354 -#: company/models.py:570 company/templates/company/manufacturer_part.html:80 -#: company/templates/company/supplier_part.html:81 label/models.py:119 -#: order/models.py:161 part/models.py:764 part/templates/part/detail.html:30 +#: company/models.py:570 company/templates/company/company_base.html:68 +#: company/templates/company/manufacturer_part.html:76 +#: company/templates/company/supplier_part.html:73 label/models.py:119 +#: order/models.py:161 part/models.py:764 part/templates/part/category.html:70 +#: part/templates/part/part_base.html:163 #: part/templates/part/set_category.html:14 report/models.py:194 #: report/models.py:553 report/models.py:592 #: report/templates/report/inventree_build_order_base.html:118 -#: stock/templates/stock/location.html:108 templates/js/translated/bom.js:215 +#: stock/templates/stock/location.html:89 templates/js/translated/bom.js:215 #: templates/js/translated/bom.js:428 templates/js/translated/build.js:1621 #: templates/js/translated/company.js:345 #: templates/js/translated/company.js:548 -#: templates/js/translated/company.js:837 templates/js/translated/order.js:673 -#: templates/js/translated/order.js:855 templates/js/translated/order.js:1091 -#: templates/js/translated/part.js:558 templates/js/translated/part.js:752 -#: templates/js/translated/part.js:837 templates/js/translated/part.js:1007 -#: templates/js/translated/part.js:1403 templates/js/translated/part.js:1472 -#: templates/js/translated/stock.js:1151 templates/js/translated/stock.js:1889 -#: templates/js/translated/stock.js:1934 +#: templates/js/translated/company.js:837 templates/js/translated/order.js:680 +#: templates/js/translated/order.js:854 templates/js/translated/order.js:1090 +#: templates/js/translated/part.js:565 templates/js/translated/part.js:933 +#: templates/js/translated/part.js:1018 templates/js/translated/part.js:1188 +#: templates/js/translated/part.js:1584 templates/js/translated/part.js:1653 +#: templates/js/translated/stock.js:1233 templates/js/translated/stock.js:1971 +#: templates/js/translated/stock.js:2016 msgid "Description" msgstr "Opis" -#: InvenTree/models.py:279 +#: InvenTree/models.py:285 msgid "Description (optional)" msgstr "Opis (opcjonalny)" -#: InvenTree/models.py:287 +#: InvenTree/models.py:293 msgid "parent" msgstr "nadrzędny" -#: InvenTree/serializers.py:62 part/models.py:2674 +#: InvenTree/serializers.py:65 part/models.py:2674 msgid "Must be a valid number" msgstr "Numer musi być prawidłowy" -#: InvenTree/serializers.py:285 +#: InvenTree/serializers.py:299 msgid "Filename" msgstr "Nazwa pliku" @@ -361,7 +362,7 @@ msgid "Returned" msgstr "Zwrócone" #: InvenTree/status_codes.py:143 -#: order/templates/order/sales_order_base.html:147 +#: order/templates/order/sales_order_base.html:148 msgid "Shipped" msgstr "Wysłane" @@ -566,7 +567,7 @@ msgid "Barcode associated with StockItem" msgstr "" #: build/forms.py:36 build/models.py:1283 -#: build/templates/build/build_base.html:124 +#: build/templates/build/build_base.html:132 #: build/templates/build/detail.html:35 common/models.py:1225 #: company/forms.py:42 company/templates/company/supplier_part.html:251 #: order/forms.py:102 order/models.py:729 order/models.py:991 @@ -574,26 +575,27 @@ msgstr "" #: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:223 #: part/forms.py:239 part/forms.py:255 part/models.py:2576 #: part/templates/part/bom_upload/match_parts.html:31 -#: part/templates/part/detail.html:1076 part/templates/part/detail.html:1162 +#: part/templates/part/detail.html:967 part/templates/part/detail.html:1053 #: part/templates/part/part_pricing.html:16 #: report/templates/report/inventree_build_order_base.html:114 #: report/templates/report/inventree_po_report.html:91 #: report/templates/report/inventree_so_report.html:91 #: report/templates/report/inventree_test_report_base.html:81 #: report/templates/report/inventree_test_report_base.html:139 -#: stock/forms.py:156 stock/serializers.py:286 -#: stock/templates/stock/item_base.html:256 +#: stock/forms.py:156 stock/serializers.py:291 +#: stock/templates/stock/item_base.html:174 #: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:443 #: templates/js/translated/build.js:235 templates/js/translated/build.js:435 #: templates/js/translated/build.js:629 templates/js/translated/build.js:639 #: templates/js/translated/build.js:1015 templates/js/translated/build.js:1362 #: templates/js/translated/model_renderers.js:99 -#: templates/js/translated/order.js:892 templates/js/translated/order.js:1205 -#: templates/js/translated/order.js:1283 templates/js/translated/order.js:1290 -#: templates/js/translated/order.js:1379 templates/js/translated/order.js:1479 -#: templates/js/translated/part.js:1615 templates/js/translated/part.js:1738 -#: templates/js/translated/part.js:1816 templates/js/translated/stock.js:377 -#: templates/js/translated/stock.js:2069 templates/js/translated/stock.js:2171 +#: templates/js/translated/order.js:891 templates/js/translated/order.js:1204 +#: templates/js/translated/order.js:1282 templates/js/translated/order.js:1289 +#: templates/js/translated/order.js:1378 templates/js/translated/order.js:1478 +#: templates/js/translated/part.js:843 templates/js/translated/part.js:1796 +#: templates/js/translated/part.js:1919 templates/js/translated/part.js:1997 +#: templates/js/translated/stock.js:378 templates/js/translated/stock.js:2151 +#: templates/js/translated/stock.js:2253 msgid "Quantity" msgstr "Ilość" @@ -602,8 +604,8 @@ msgid "Enter quantity for build output" msgstr "" #: build/forms.py:41 order/forms.py:96 stock/forms.py:95 -#: stock/serializers.py:307 templates/js/translated/stock.js:224 -#: templates/js/translated/stock.js:378 +#: stock/serializers.py:312 templates/js/translated/stock.js:225 +#: templates/js/translated/stock.js:379 msgid "Serial Numbers" msgstr "Numer seryjny" @@ -646,7 +648,7 @@ msgstr "Zlecenie Budowy" #: build/templates/build/index.html:8 build/templates/build/index.html:12 #: order/templates/order/sales_order_detail.html:42 #: order/templates/order/so_sidebar.html:7 -#: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:221 +#: part/templates/part/part_sidebar.html:20 templates/InvenTree/index.html:221 #: templates/InvenTree/search.html:145 #: templates/InvenTree/settings/sidebar.html:42 users/models.py:44 msgid "Build Orders" @@ -662,7 +664,7 @@ msgstr "Odwołanie do zamówienia wykonania" #: report/templates/report/inventree_po_report.html:92 #: report/templates/report/inventree_so_report.html:92 #: templates/js/translated/bom.js:435 templates/js/translated/build.js:1119 -#: templates/js/translated/order.js:886 templates/js/translated/order.js:1473 +#: templates/js/translated/order.js:885 templates/js/translated/order.js:1472 msgid "Reference" msgstr "Referencja" @@ -670,7 +672,7 @@ msgstr "Referencja" msgid "Brief description of the build" msgstr "Krótki opis budowy" -#: build/models.py:219 build/templates/build/build_base.html:156 +#: build/models.py:219 build/templates/build/build_base.html:164 #: build/templates/build/detail.html:88 msgid "Parent Build" msgstr "Budowa nadrzędna" @@ -679,7 +681,7 @@ msgstr "Budowa nadrzędna" msgid "BuildOrder to which this build is allocated" msgstr "Zamówienie budowy, do którego budowa jest przypisana" -#: build/models.py:225 build/templates/build/build_base.html:119 +#: build/models.py:225 build/templates/build/build_base.html:77 #: build/templates/build/detail.html:30 company/models.py:705 #: order/models.py:789 order/models.py:860 #: order/templates/order/order_wizard/select_parts.html:32 part/models.py:357 @@ -700,10 +702,10 @@ msgstr "Zamówienie budowy, do którego budowa jest przypisana" #: templates/js/translated/build.js:988 templates/js/translated/build.js:1359 #: templates/js/translated/build.js:1626 templates/js/translated/company.js:489 #: templates/js/translated/company.js:746 templates/js/translated/order.js:426 -#: templates/js/translated/order.js:840 templates/js/translated/order.js:1457 -#: templates/js/translated/part.js:737 templates/js/translated/part.js:818 -#: templates/js/translated/part.js:985 templates/js/translated/stock.js:508 -#: templates/js/translated/stock.js:1108 templates/js/translated/stock.js:2159 +#: templates/js/translated/order.js:839 templates/js/translated/order.js:1456 +#: templates/js/translated/part.js:918 templates/js/translated/part.js:999 +#: templates/js/translated/part.js:1166 templates/js/translated/stock.js:590 +#: templates/js/translated/stock.js:1190 templates/js/translated/stock.js:2241 msgid "Part" msgstr "Część" @@ -751,7 +753,7 @@ msgstr "Ukończone elementy" msgid "Number of stock items which have been completed" msgstr "Ilość produktów magazynowych które zostały ukończone" -#: build/models.py:277 part/templates/part/part_base.html:216 +#: build/models.py:277 part/templates/part/part_base.html:234 msgid "Build Status" msgstr "Status budowania" @@ -759,7 +761,7 @@ msgstr "Status budowania" msgid "Build status code" msgstr "Kod statusu budowania" -#: build/models.py:285 stock/models.py:544 +#: build/models.py:285 stock/models.py:534 msgid "Batch Code" msgstr "Kod partii" @@ -768,7 +770,7 @@ msgid "Batch code for this build output" msgstr "Kod partii dla wyjścia budowy" #: build/models.py:292 order/models.py:165 part/models.py:936 -#: part/templates/part/detail.html:86 templates/js/translated/order.js:1104 +#: part/templates/part/part_base.html:313 templates/js/translated/order.js:1103 msgid "Creation Date" msgstr "Data utworzenia" @@ -797,12 +799,12 @@ msgstr "Wydany przez" msgid "User who issued this build order" msgstr "Użytkownik, który wydał to zamówienie" -#: build/models.py:323 build/templates/build/build_base.html:177 +#: build/models.py:323 build/templates/build/build_base.html:185 #: build/templates/build/detail.html:116 order/models.py:179 -#: order/templates/order/order_base.html:154 -#: order/templates/order/sales_order_base.html:161 part/models.py:940 +#: order/templates/order/order_base.html:158 +#: order/templates/order/sales_order_base.html:162 part/models.py:940 #: report/templates/report/inventree_build_order_base.html:159 -#: templates/js/translated/build.js:1680 templates/js/translated/order.js:700 +#: templates/js/translated/build.js:1680 templates/js/translated/order.js:699 msgid "Responsible" msgstr "Odpowiedzialny" @@ -811,10 +813,10 @@ msgid "User responsible for this build order" msgstr "Użytkownik odpowiedzialny za to zamówienie budowy" #: build/models.py:329 build/templates/build/detail.html:102 -#: company/templates/company/manufacturer_part.html:87 -#: company/templates/company/supplier_part.html:88 -#: part/templates/part/detail.html:80 stock/models.py:538 -#: stock/templates/stock/item_base.html:346 +#: company/templates/company/manufacturer_part.html:102 +#: company/templates/company/supplier_part.html:126 +#: part/templates/part/part_base.html:354 stock/models.py:528 +#: stock/templates/stock/item_base.html:374 msgid "External Link" msgstr "Link Zewnętrzny" @@ -824,15 +826,15 @@ msgstr "Link Zewnętrzny" #: order/models.py:183 order/models.py:738 #: order/templates/order/po_sidebar.html:11 #: order/templates/order/so_sidebar.html:11 part/models.py:925 -#: part/templates/part/detail.html:223 part/templates/part/part_sidebar.html:52 +#: part/templates/part/detail.html:116 part/templates/part/part_sidebar.html:50 #: report/templates/report/inventree_build_order_base.html:173 -#: stock/forms.py:154 stock/forms.py:204 stock/forms.py:238 stock/models.py:610 -#: stock/models.py:1774 stock/models.py:1880 stock/serializers.py:325 -#: stock/serializers.py:583 stock/templates/stock/stock_sidebar.html:21 +#: stock/forms.py:154 stock/forms.py:204 stock/forms.py:238 stock/models.py:600 +#: stock/models.py:1764 stock/models.py:1870 stock/serializers.py:330 +#: stock/serializers.py:588 stock/templates/stock/stock_sidebar.html:21 #: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:599 -#: templates/js/translated/company.js:842 templates/js/translated/order.js:985 -#: templates/js/translated/order.js:1583 templates/js/translated/stock.js:891 -#: templates/js/translated/stock.js:1370 +#: templates/js/translated/company.js:842 templates/js/translated/order.js:984 +#: templates/js/translated/order.js:1582 templates/js/translated/stock.js:973 +#: templates/js/translated/stock.js:1452 msgid "Notes" msgstr "Uwagi" @@ -877,7 +879,7 @@ msgstr "" msgid "Selected stock item not found in BOM" msgstr "" -#: build/models.py:1253 stock/templates/stock/item_base.html:318 +#: build/models.py:1253 stock/templates/stock/item_base.html:346 #: templates/InvenTree/search.html:143 templates/js/translated/build.js:1599 #: templates/navbar.html:33 msgid "Build" @@ -890,11 +892,11 @@ msgstr "" #: build/models.py:1270 build/serializers.py:328 #: stock/templates/stock/item_base.html:8 #: stock/templates/stock/item_base.html:16 -#: stock/templates/stock/item_base.html:340 +#: stock/templates/stock/item_base.html:368 #: templates/js/translated/build.js:408 templates/js/translated/build.js:413 #: templates/js/translated/build.js:1361 templates/js/translated/build.js:1742 -#: templates/js/translated/order.js:1178 templates/js/translated/order.js:1183 -#: templates/js/translated/stock.js:2020 +#: templates/js/translated/order.js:1177 templates/js/translated/order.js:1182 +#: templates/js/translated/stock.js:2102 msgid "Stock Item" msgstr "Element magazynowy" @@ -934,16 +936,16 @@ msgstr "" msgid "This build output is not fully allocated" msgstr "" -#: build/serializers.py:190 order/serializers.py:219 order/serializers.py:287 -#: stock/forms.py:236 stock/serializers.py:318 stock/serializers.py:685 -#: stock/templates/stock/item_base.html:286 +#: build/serializers.py:190 order/serializers.py:228 order/serializers.py:296 +#: stock/forms.py:236 stock/serializers.py:323 stock/serializers.py:690 +#: stock/templates/stock/item_base.html:314 #: templates/js/translated/barcode.js:384 #: templates/js/translated/barcode.js:557 templates/js/translated/build.js:420 #: templates/js/translated/build.js:1027 templates/js/translated/order.js:348 -#: templates/js/translated/order.js:1190 templates/js/translated/order.js:1298 -#: templates/js/translated/order.js:1304 templates/js/translated/part.js:181 -#: templates/js/translated/stock.js:510 templates/js/translated/stock.js:1251 -#: templates/js/translated/stock.js:1961 +#: templates/js/translated/order.js:1189 templates/js/translated/order.js:1297 +#: templates/js/translated/order.js:1303 templates/js/translated/part.js:177 +#: templates/js/translated/stock.js:592 templates/js/translated/stock.js:1333 +#: templates/js/translated/stock.js:2043 msgid "Location" msgstr "Lokalizacja" @@ -951,13 +953,13 @@ msgstr "Lokalizacja" msgid "Location for completed build outputs" msgstr "" -#: build/serializers.py:197 build/templates/build/build_base.html:129 +#: build/serializers.py:197 build/templates/build/build_base.html:137 #: build/templates/build/detail.html:63 order/models.py:572 -#: order/serializers.py:240 stock/templates/stock/item_base.html:409 +#: order/serializers.py:249 stock/templates/stock/item_base.html:180 #: templates/js/translated/barcode.js:140 templates/js/translated/build.js:1655 -#: templates/js/translated/order.js:431 templates/js/translated/order.js:677 -#: templates/js/translated/order.js:1096 templates/js/translated/stock.js:1226 -#: templates/js/translated/stock.js:2038 templates/js/translated/stock.js:2187 +#: templates/js/translated/order.js:431 templates/js/translated/order.js:1095 +#: templates/js/translated/stock.js:1308 templates/js/translated/stock.js:2120 +#: templates/js/translated/stock.js:2269 msgid "Status" msgstr "Status" @@ -986,8 +988,8 @@ msgstr "" msgid "Item must be in stock" msgstr "" -#: build/serializers.py:348 order/models.py:316 order/serializers.py:233 -#: stock/models.py:381 stock/models.py:1103 stock/serializers.py:298 +#: build/serializers.py:348 order/models.py:316 order/serializers.py:242 +#: stock/models.py:371 stock/models.py:1093 stock/serializers.py:303 msgid "Quantity must be greater than zero" msgstr "Ilość musi być większa niż zero" @@ -1031,7 +1033,7 @@ msgid "Edit Build" msgstr "Edytuj Budowę" #: build/templates/build/build_base.html:56 -#: build/templates/build/build_base.html:207 build/views.py:56 +#: build/templates/build/build_base.html:215 build/views.py:56 msgid "Cancel Build" msgstr "Anuluj Budowę" @@ -1041,93 +1043,95 @@ msgstr "" #: build/templates/build/build_base.html:64 #: build/templates/build/build_base.html:65 -#: build/templates/build/build_base.html:223 +#: build/templates/build/build_base.html:231 msgid "Complete Build" msgstr "" -#: build/templates/build/build_base.html:79 +#: build/templates/build/build_base.html:82 +msgid "Build Description" +msgstr "" + +#: build/templates/build/build_base.html:91 #, python-format msgid "This Build Order is allocated to Sales Order %(link)s" msgstr "" -#: build/templates/build/build_base.html:86 +#: build/templates/build/build_base.html:98 #, python-format msgid "This Build Order is a child of Build Order %(link)s" msgstr "" -#: build/templates/build/build_base.html:93 +#: build/templates/build/build_base.html:105 msgid "Build Order is ready to mark as completed" msgstr "" -#: build/templates/build/build_base.html:98 +#: build/templates/build/build_base.html:110 msgid "Build Order cannot be completed as outstanding outputs remain" msgstr "" -#: build/templates/build/build_base.html:103 +#: build/templates/build/build_base.html:115 msgid "Required build quantity has not yet been completed" msgstr "" -#: build/templates/build/build_base.html:108 +#: build/templates/build/build_base.html:120 msgid "Stock has not been fully allocated to this Build Order" msgstr "" -#: build/templates/build/build_base.html:138 +#: build/templates/build/build_base.html:146 #: build/templates/build/detail.html:132 -#: order/templates/order/order_base.html:140 -#: order/templates/order/sales_order_base.html:140 +#: order/templates/order/order_base.html:144 +#: order/templates/order/sales_order_base.html:141 #: report/templates/report/inventree_build_order_base.html:126 -#: templates/js/translated/build.js:1692 templates/js/translated/order.js:690 -#: templates/js/translated/order.js:1109 +#: templates/js/translated/build.js:1692 templates/js/translated/order.js:689 +#: templates/js/translated/order.js:1108 msgid "Target Date" msgstr "Data docelowa" -#: build/templates/build/build_base.html:143 +#: build/templates/build/build_base.html:151 #, python-format msgid "This build was due on %(target)s" msgstr "" -#: build/templates/build/build_base.html:143 -#: build/templates/build/build_base.html:188 -#: order/templates/order/order_base.html:81 -#: order/templates/order/order_base.html:102 -#: order/templates/order/sales_order_base.html:78 -#: order/templates/order/sales_order_base.html:107 +#: build/templates/build/build_base.html:151 +#: build/templates/build/build_base.html:196 +#: order/templates/order/order_base.html:98 +#: order/templates/order/sales_order_base.html:93 #: templates/js/translated/table_filters.js:294 #: templates/js/translated/table_filters.js:322 #: templates/js/translated/table_filters.js:339 msgid "Overdue" msgstr "Zaległe" -#: build/templates/build/build_base.html:150 +#: build/templates/build/build_base.html:158 #: build/templates/build/detail.html:68 build/templates/build/detail.html:143 #: templates/js/translated/build.js:1641 #: templates/js/translated/table_filters.js:304 msgid "Completed" msgstr "Zakończone" -#: build/templates/build/build_base.html:163 +#: build/templates/build/build_base.html:171 #: build/templates/build/detail.html:95 order/models.py:857 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: order/templates/order/sales_order_ship.html:25 #: report/templates/report/inventree_build_order_base.html:136 #: report/templates/report/inventree_so_report.html:77 -#: stock/templates/stock/item_base.html:280 -#: templates/js/translated/order.js:1051 +#: stock/templates/stock/item_base.html:308 +#: templates/js/translated/order.js:1050 msgid "Sales Order" msgstr "Zamówienie zakupu" -#: build/templates/build/build_base.html:170 +#: build/templates/build/build_base.html:178 #: build/templates/build/detail.html:109 #: report/templates/report/inventree_build_order_base.html:153 msgid "Issued By" msgstr "Dodane przez" -#: build/templates/build/build_base.html:215 +#: build/templates/build/build_base.html:223 msgid "Incomplete Outputs" msgstr "" -#: build/templates/build/build_base.html:216 +#: build/templates/build/build_base.html:224 msgid "Build Order cannot be completed as incomplete build outputs remain" msgstr "" @@ -1188,7 +1192,7 @@ msgid "Stock can be taken from any available location." msgstr "" #: build/templates/build/detail.html:50 order/models.py:811 stock/forms.py:150 -#: templates/js/translated/order.js:432 templates/js/translated/order.js:974 +#: templates/js/translated/order.js:432 templates/js/translated/order.js:973 msgid "Destination" msgstr "Przeznaczenie" @@ -1201,16 +1205,16 @@ msgid "Allocated Parts" msgstr "" #: build/templates/build/detail.html:81 -#: stock/templates/stock/item_base.html:304 -#: templates/js/translated/stock.js:1240 templates/js/translated/stock.js:2194 +#: stock/templates/stock/item_base.html:332 +#: templates/js/translated/stock.js:1322 templates/js/translated/stock.js:2276 #: templates/js/translated/table_filters.js:151 #: templates/js/translated/table_filters.js:233 msgid "Batch" msgstr "Partia" #: build/templates/build/detail.html:127 -#: order/templates/order/order_base.html:127 -#: order/templates/order/sales_order_base.html:134 +#: order/templates/order/order_base.html:131 +#: order/templates/order/sales_order_base.html:135 #: templates/js/translated/build.js:1663 msgid "Created" msgstr "Utworzony" @@ -1254,7 +1258,7 @@ msgstr "Zamów wymagane komponenty" #: build/templates/build/detail.html:185 #: company/templates/company/detail.html:38 #: company/templates/company/detail.html:85 order/views.py:509 -#: part/templates/part/category.html:166 +#: part/templates/part/category.html:173 msgid "Order Parts" msgstr "Zamów części" @@ -1306,8 +1310,8 @@ msgstr "" #: order/templates/order/po_sidebar.html:9 #: order/templates/order/purchase_order_detail.html:60 #: order/templates/order/sales_order_detail.html:52 -#: order/templates/order/so_sidebar.html:9 part/templates/part/detail.html:300 -#: part/templates/part/part_sidebar.html:50 stock/templates/stock/item.html:95 +#: order/templates/order/so_sidebar.html:9 part/templates/part/detail.html:193 +#: part/templates/part/part_sidebar.html:48 stock/templates/stock/item.html:95 #: stock/templates/stock/stock_sidebar.html:19 msgid "Attachments" msgstr "Załączniki" @@ -1323,7 +1327,7 @@ msgstr "Notatki tworzenia" #: order/templates/order/purchase_order_detail.html:108 #: order/templates/order/sales_order_detail.html:72 #: order/templates/order/sales_order_detail.html:99 -#: part/templates/part/detail.html:227 stock/templates/stock/item.html:115 +#: part/templates/part/detail.html:120 stock/templates/stock/item.html:115 #: stock/templates/stock/item.html:205 msgid "Edit Notes" msgstr "" @@ -1336,7 +1340,7 @@ msgstr "" msgid "All untracked stock items have been allocated" msgstr "" -#: build/templates/build/index.html:18 part/templates/part/detail.html:407 +#: build/templates/build/index.html:18 part/templates/part/detail.html:300 msgid "New Build Order" msgstr "Nowe zlecenie budowy" @@ -1380,7 +1384,7 @@ msgstr "Utwórz zlecenie budowy" msgid "Maximum output quantity is " msgstr "" -#: build/views.py:122 stock/serializers.py:356 stock/views.py:1290 +#: build/views.py:122 stock/serializers.py:361 stock/views.py:1290 msgid "Serial numbers already exist" msgstr "Numer seryjny już istnieje" @@ -1675,7 +1679,7 @@ msgid "Parts are trackable by default" msgstr "Części są domyślnie z możliwością śledzenia" #: common/models.py:745 part/models.py:920 -#: part/templates/part/part_base.html:144 +#: part/templates/part/part_base.html:147 #: templates/js/translated/table_filters.js:42 msgid "Virtual" msgstr "Wirtualny" @@ -2142,7 +2146,7 @@ msgstr "" #: common/models.py:1233 company/serializers.py:264 #: company/templates/company/supplier_part.html:256 -#: templates/js/translated/part.js:1620 +#: templates/js/translated/part.js:852 templates/js/translated/part.js:1801 msgid "Price" msgstr "Cena" @@ -2206,7 +2210,7 @@ msgstr "Opis firmy" msgid "Description of the company" msgstr "Opis firmy" -#: company/models.py:112 company/templates/company/company_base.html:70 +#: company/models.py:112 company/templates/company/company_base.html:97 #: templates/js/translated/company.js:349 msgid "Website" msgstr "Strona WWW" @@ -2215,7 +2219,7 @@ msgstr "Strona WWW" msgid "Company website URL" msgstr "Witryna internetowa firmy" -#: company/models.py:117 company/templates/company/company_base.html:88 +#: company/models.py:117 company/templates/company/company_base.html:115 msgid "Address" msgstr "Adres" @@ -2231,7 +2235,7 @@ msgstr "Numer telefonu" msgid "Contact phone number" msgstr "Numer telefonu kontaktowego" -#: company/models.py:125 company/templates/company/company_base.html:102 +#: company/models.py:125 company/templates/company/company_base.html:129 #: templates/InvenTree/settings/user.html:47 msgid "Email" msgstr "Adres E-Mail" @@ -2240,7 +2244,7 @@ msgstr "Adres E-Mail" msgid "Contact email address" msgstr "Kontaktowy adres e-mail" -#: company/models.py:128 company/templates/company/company_base.html:109 +#: company/models.py:128 company/templates/company/company_base.html:136 msgid "Contact" msgstr "Kontakt" @@ -2281,7 +2285,7 @@ msgid "Does this company manufacture parts?" msgstr "Czy to przedsiębiorstwo produkuje części?" #: company/models.py:152 company/serializers.py:270 -#: company/templates/company/company_base.html:76 stock/serializers.py:172 +#: company/templates/company/company_base.html:103 stock/serializers.py:177 msgid "Currency" msgstr "Waluta" @@ -2289,8 +2293,8 @@ msgstr "Waluta" msgid "Default currency used for this company" msgstr "" -#: company/models.py:320 company/models.py:535 stock/models.py:484 -#: stock/templates/stock/item_base.html:224 +#: company/models.py:320 company/models.py:535 stock/models.py:474 +#: stock/templates/stock/item_base.html:135 msgid "Base Part" msgstr "Część bazowa" @@ -2298,29 +2302,29 @@ msgstr "Część bazowa" msgid "Select part" msgstr "Wybierz część" -#: company/models.py:335 company/templates/company/company_base.html:116 -#: company/templates/company/manufacturer_part.html:93 -#: company/templates/company/supplier_part.html:104 -#: stock/templates/stock/item_base.html:353 +#: company/models.py:335 company/templates/company/company_base.html:73 +#: company/templates/company/manufacturer_part.html:91 +#: company/templates/company/supplier_part.html:97 +#: stock/templates/stock/item_base.html:381 #: templates/js/translated/company.js:333 #: templates/js/translated/company.js:514 -#: templates/js/translated/company.js:797 templates/js/translated/part.js:229 +#: templates/js/translated/company.js:797 templates/js/translated/part.js:232 msgid "Manufacturer" msgstr "Producent" -#: company/models.py:336 templates/js/translated/part.js:230 +#: company/models.py:336 templates/js/translated/part.js:233 msgid "Select manufacturer" msgstr "Wybierz producenta" -#: company/models.py:342 company/templates/company/manufacturer_part.html:97 -#: company/templates/company/supplier_part.html:112 +#: company/models.py:342 company/templates/company/manufacturer_part.html:96 +#: company/templates/company/supplier_part.html:105 #: templates/js/translated/company.js:530 -#: templates/js/translated/company.js:815 templates/js/translated/order.js:874 -#: templates/js/translated/part.js:240 +#: templates/js/translated/company.js:815 templates/js/translated/order.js:873 +#: templates/js/translated/part.js:243 templates/js/translated/part.js:832 msgid "MPN" msgstr "MPN" -#: company/models.py:343 templates/js/translated/part.js:241 +#: company/models.py:343 templates/js/translated/part.js:244 msgid "Manufacturer Part Number" msgstr "Numer producenta" @@ -2335,7 +2339,7 @@ msgstr "" #: company/models.py:409 company/models.py:558 #: company/templates/company/manufacturer_part.html:6 #: company/templates/company/manufacturer_part.html:23 -#: stock/templates/stock/item_base.html:363 +#: stock/templates/stock/item_base.html:391 msgid "Manufacturer Part" msgstr "Część producenta" @@ -2345,8 +2349,8 @@ msgstr "" #: company/models.py:422 #: report/templates/report/inventree_test_report_base.html:95 -#: stock/models.py:1867 templates/js/translated/company.js:644 -#: templates/js/translated/part.js:645 templates/js/translated/stock.js:878 +#: stock/models.py:1857 templates/js/translated/company.js:644 +#: templates/js/translated/part.js:652 templates/js/translated/stock.js:960 msgid "Value" msgstr "" @@ -2355,9 +2359,9 @@ msgid "Parameter value" msgstr "" #: company/models.py:429 part/models.py:882 part/models.py:2397 -#: part/templates/part/detail.html:59 +#: part/templates/part/part_base.html:288 #: templates/InvenTree/settings/settings.html:264 -#: templates/js/translated/company.js:650 templates/js/translated/part.js:651 +#: templates/js/translated/company.js:650 templates/js/translated/part.js:658 msgid "Units" msgstr "Jednostki" @@ -2369,28 +2373,28 @@ msgstr "" msgid "Linked manufacturer part must reference the same base part" msgstr "" -#: company/models.py:545 company/templates/company/company_base.html:121 -#: company/templates/company/supplier_part.html:94 order/models.py:263 -#: order/templates/order/order_base.html:108 +#: company/models.py:545 company/templates/company/company_base.html:78 +#: company/templates/company/supplier_part.html:87 order/models.py:263 +#: order/templates/order/order_base.html:112 #: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:219 -#: part/bom.py:247 stock/templates/stock/item_base.html:370 +#: part/bom.py:247 stock/templates/stock/item_base.html:398 #: templates/js/translated/company.js:337 -#: templates/js/translated/company.js:771 templates/js/translated/order.js:660 -#: templates/js/translated/part.js:210 +#: templates/js/translated/company.js:771 templates/js/translated/order.js:667 +#: templates/js/translated/part.js:213 templates/js/translated/part.js:800 msgid "Supplier" msgstr "Dostawca" -#: company/models.py:546 templates/js/translated/part.js:211 +#: company/models.py:546 templates/js/translated/part.js:214 msgid "Select supplier" msgstr "Wybierz dostawcę" -#: company/models.py:551 company/templates/company/supplier_part.html:98 -#: part/bom.py:220 part/bom.py:248 templates/js/translated/order.js:861 -#: templates/js/translated/part.js:221 +#: company/models.py:551 company/templates/company/supplier_part.html:91 +#: part/bom.py:220 part/bom.py:248 templates/js/translated/order.js:860 +#: templates/js/translated/part.js:224 templates/js/translated/part.js:818 msgid "SKU" msgstr "SKU" -#: company/models.py:552 templates/js/translated/part.js:222 +#: company/models.py:552 templates/js/translated/part.js:225 msgid "Supplier stock keeping unit" msgstr "" @@ -2406,7 +2410,7 @@ msgstr "" msgid "Supplier part description" msgstr "" -#: company/models.py:576 company/templates/company/supplier_part.html:126 +#: company/models.py:576 company/templates/company/supplier_part.html:119 #: part/models.py:2588 report/templates/report/inventree_po_report.html:93 #: report/templates/report/inventree_so_report.html:93 msgid "Note" @@ -2420,9 +2424,9 @@ msgstr "koszt podstawowy" msgid "Minimum charge (e.g. stocking fee)" msgstr "" -#: company/models.py:582 company/templates/company/supplier_part.html:119 -#: stock/models.py:507 stock/templates/stock/item_base.html:311 -#: templates/js/translated/company.js:847 templates/js/translated/stock.js:1366 +#: company/models.py:582 company/templates/company/supplier_part.html:112 +#: stock/models.py:497 stock/templates/stock/item_base.html:339 +#: templates/js/translated/company.js:847 templates/js/translated/stock.js:1448 msgid "Packaging" msgstr "Opakowanie" @@ -2457,43 +2461,56 @@ msgstr "Firma" msgid "Create Purchase Order" msgstr "" -#: company/templates/company/company_base.html:27 +#: company/templates/company/company_base.html:26 +msgid "Company actions" +msgstr "" + +#: company/templates/company/company_base.html:31 msgid "Edit company information" msgstr "" #: company/templates/company/company_base.html:32 -#: company/templates/company/company_base.html:148 +#: templates/js/translated/company.js:265 +msgid "Edit Company" +msgstr "Edytuj firmę" + +#: company/templates/company/company_base.html:36 +msgid "Delete company" +msgstr "" + +#: company/templates/company/company_base.html:37 +#: company/templates/company/company_base.html:159 msgid "Delete Company" msgstr "" -#: company/templates/company/company_base.html:48 +#: company/templates/company/company_base.html:53 #: part/templates/part/part_thumb.html:12 msgid "Upload new image" msgstr "Prześlij nowy obraz" -#: company/templates/company/company_base.html:51 +#: company/templates/company/company_base.html:56 #: part/templates/part/part_thumb.html:14 msgid "Download image from URL" msgstr "" -#: company/templates/company/company_base.html:81 -msgid "Uses default currency" -msgstr "" - -#: company/templates/company/company_base.html:95 -msgid "Phone" -msgstr "Telefon" - -#: company/templates/company/company_base.html:126 order/models.py:567 -#: order/templates/order/sales_order_base.html:114 stock/models.py:525 -#: stock/models.py:526 stock/templates/stock/item_base.html:263 -#: templates/js/translated/company.js:329 templates/js/translated/order.js:1073 -#: templates/js/translated/stock.js:2002 +#: company/templates/company/company_base.html:83 order/models.py:567 +#: order/templates/order/sales_order_base.html:115 stock/models.py:515 +#: stock/models.py:516 stock/templates/stock/item_base.html:291 +#: templates/js/translated/company.js:329 templates/js/translated/order.js:1072 +#: templates/js/translated/stock.js:2084 msgid "Customer" msgstr "Klient" -#: company/templates/company/company_base.html:194 -#: part/templates/part/part_base.html:342 +#: company/templates/company/company_base.html:108 +msgid "Uses default currency" +msgstr "" + +#: company/templates/company/company_base.html:122 +msgid "Phone" +msgstr "Telefon" + +#: company/templates/company/company_base.html:205 +#: part/templates/part/part_base.html:471 msgid "Upload Image" msgstr "" @@ -2509,23 +2526,23 @@ msgid "Create new supplier part" msgstr "Utwórz nowego dostawcę części" #: company/templates/company/detail.html:20 -#: company/templates/company/manufacturer_part.html:112 -#: part/templates/part/detail.html:440 +#: company/templates/company/manufacturer_part.html:118 +#: part/templates/part/detail.html:333 msgid "New Supplier Part" msgstr "Nowy dostawca części" #: company/templates/company/detail.html:32 #: company/templates/company/detail.html:79 -#: company/templates/company/manufacturer_part.html:121 -#: company/templates/company/manufacturer_part.html:150 -#: part/templates/part/category.html:160 part/templates/part/detail.html:449 -#: part/templates/part/detail.html:477 +#: company/templates/company/manufacturer_part.html:127 +#: company/templates/company/manufacturer_part.html:156 +#: part/templates/part/category.html:167 part/templates/part/detail.html:342 +#: part/templates/part/detail.html:370 msgid "Options" msgstr "Opcje" #: company/templates/company/detail.html:37 #: company/templates/company/detail.html:84 -#: part/templates/part/category.html:166 +#: part/templates/part/category.html:173 msgid "Order parts" msgstr "Zamów części" @@ -2547,7 +2564,7 @@ msgstr "Części producenta" msgid "Create new manufacturer part" msgstr "Utwórz nową część producenta" -#: company/templates/company/detail.html:67 part/templates/part/detail.html:467 +#: company/templates/company/detail.html:67 part/templates/part/detail.html:360 msgid "New Manufacturer Part" msgstr "Nowa część producenta" @@ -2561,7 +2578,7 @@ msgstr "Zapasy dostawcy" #: order/templates/order/order_base.html:13 #: order/templates/order/purchase_orders.html:8 #: order/templates/order/purchase_orders.html:12 -#: part/templates/part/detail.html:171 part/templates/part/part_sidebar.html:35 +#: part/templates/part/detail.html:64 part/templates/part/part_sidebar.html:33 #: templates/InvenTree/index.html:252 templates/InvenTree/search.html:203 #: templates/InvenTree/settings/sidebar.html:44 templates/navbar.html:45 #: users/models.py:45 @@ -2583,7 +2600,7 @@ msgstr "" #: order/templates/order/sales_order_base.html:13 #: order/templates/order/sales_orders.html:8 #: order/templates/order/sales_orders.html:15 -#: part/templates/part/detail.html:194 part/templates/part/part_sidebar.html:39 +#: part/templates/part/detail.html:87 part/templates/part/part_sidebar.html:37 #: templates/InvenTree/index.html:283 templates/InvenTree/search.html:223 #: templates/InvenTree/settings/sidebar.html:46 templates/navbar.html:56 #: users/models.py:46 @@ -2610,14 +2627,14 @@ msgid "Company Notes" msgstr "" #: company/templates/company/detail.html:383 -#: company/templates/company/manufacturer_part.html:209 -#: part/templates/part/detail.html:520 +#: company/templates/company/manufacturer_part.html:215 +#: part/templates/part/detail.html:413 msgid "Delete Supplier Parts?" msgstr "" #: company/templates/company/detail.html:384 -#: company/templates/company/manufacturer_part.html:210 -#: part/templates/part/detail.html:521 +#: company/templates/company/manufacturer_part.html:216 +#: part/templates/part/detail.html:414 msgid "All selected supplier parts will be deleted" msgstr "" @@ -2634,7 +2651,7 @@ msgstr "Producenci" #: company/templates/company/manufacturer_part.html:35 #: company/templates/company/supplier_part.html:34 #: company/templates/company/supplier_part.html:159 -#: part/templates/part/detail.html:174 part/templates/part/part_base.html:76 +#: part/templates/part/detail.html:67 part/templates/part/part_base.html:76 msgid "Order part" msgstr "Zamów część" @@ -2648,60 +2665,60 @@ msgstr "Edytuj część producenta" msgid "Delete manufacturer part" msgstr "Usuń cześć producenta" -#: company/templates/company/manufacturer_part.html:70 -#: company/templates/company/supplier_part.html:71 +#: company/templates/company/manufacturer_part.html:66 +#: company/templates/company/supplier_part.html:63 msgid "Internal Part" msgstr "Część wewnętrzna" -#: company/templates/company/manufacturer_part.html:108 +#: company/templates/company/manufacturer_part.html:114 #: company/templates/company/supplier_part.html:15 company/views.py:49 -#: part/templates/part/part_sidebar.html:33 part/templates/part/prices.html:163 +#: part/templates/part/part_sidebar.html:31 part/templates/part/prices.html:163 #: templates/InvenTree/search.html:194 templates/navbar.html:43 msgid "Suppliers" msgstr "Dostawcy" -#: company/templates/company/manufacturer_part.html:123 -#: part/templates/part/detail.html:451 +#: company/templates/company/manufacturer_part.html:129 +#: part/templates/part/detail.html:344 msgid "Delete supplier parts" msgstr "" -#: company/templates/company/manufacturer_part.html:123 -#: company/templates/company/manufacturer_part.html:152 -#: company/templates/company/manufacturer_part.html:248 -#: part/templates/part/detail.html:451 part/templates/part/detail.html:479 +#: company/templates/company/manufacturer_part.html:129 +#: company/templates/company/manufacturer_part.html:158 +#: company/templates/company/manufacturer_part.html:254 +#: part/templates/part/detail.html:344 part/templates/part/detail.html:372 #: templates/js/translated/company.js:425 templates/js/translated/helpers.js:31 #: users/models.py:204 msgid "Delete" msgstr "Usuń" -#: company/templates/company/manufacturer_part.html:137 +#: company/templates/company/manufacturer_part.html:143 #: company/templates/company/manufacturer_part_sidebar.html:5 #: part/templates/part/category_sidebar.html:17 -#: part/templates/part/detail.html:277 part/templates/part/part_sidebar.html:10 +#: part/templates/part/detail.html:170 part/templates/part/part_sidebar.html:8 msgid "Parameters" msgstr "Parametry" -#: company/templates/company/manufacturer_part.html:141 -#: part/templates/part/detail.html:282 +#: company/templates/company/manufacturer_part.html:147 +#: part/templates/part/detail.html:175 #: templates/InvenTree/settings/category.html:12 #: templates/InvenTree/settings/part.html:65 msgid "New Parameter" msgstr "" -#: company/templates/company/manufacturer_part.html:152 +#: company/templates/company/manufacturer_part.html:158 msgid "Delete parameters" msgstr "" -#: company/templates/company/manufacturer_part.html:185 -#: part/templates/part/detail.html:976 +#: company/templates/company/manufacturer_part.html:191 +#: part/templates/part/detail.html:867 msgid "Add Parameter" msgstr "Dodaj parametr" -#: company/templates/company/manufacturer_part.html:233 +#: company/templates/company/manufacturer_part.html:239 msgid "Selected parameters will be deleted" msgstr "" -#: company/templates/company/manufacturer_part.html:245 +#: company/templates/company/manufacturer_part.html:251 msgid "Delete Parameters" msgstr "" @@ -2722,9 +2739,9 @@ msgid "Assigned Stock Items" msgstr "" #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 stock/models.py:492 -#: stock/templates/stock/item_base.html:375 -#: templates/js/translated/company.js:787 templates/js/translated/stock.js:1323 +#: company/templates/company/supplier_part.html:24 stock/models.py:482 +#: stock/templates/stock/item_base.html:403 +#: templates/js/translated/company.js:787 templates/js/translated/stock.js:1405 msgid "Supplier Part" msgstr "" @@ -2744,13 +2761,13 @@ msgid "Supplier Part Stock" msgstr "" #: company/templates/company/supplier_part.html:141 -#: part/templates/part/detail.html:127 stock/templates/stock/location.html:147 +#: part/templates/part/detail.html:20 stock/templates/stock/location.html:162 msgid "Create new stock item" msgstr "" #: company/templates/company/supplier_part.html:142 -#: part/templates/part/detail.html:128 stock/templates/stock/location.html:148 -#: templates/js/translated/stock.js:354 +#: part/templates/part/detail.html:21 stock/templates/stock/location.html:163 +#: templates/js/translated/stock.js:355 msgid "New Stock Item" msgstr "" @@ -2760,7 +2777,7 @@ msgid "Supplier Part Orders" msgstr "" #: company/templates/company/supplier_part.html:160 -#: part/templates/part/detail.html:175 +#: part/templates/part/detail.html:68 msgid "Order Part" msgstr "" @@ -2796,15 +2813,15 @@ msgid "Delete price break" msgstr "" #: company/templates/company/supplier_part_navbar.html:15 -#: part/templates/part/part_sidebar.html:16 +#: part/templates/part/part_sidebar.html:14 #: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:14 #: stock/templates/stock/stock_app_base.html:10 #: templates/InvenTree/search.html:156 #: templates/InvenTree/settings/sidebar.html:40 -#: templates/js/translated/bom.js:216 templates/js/translated/part.js:427 -#: templates/js/translated/part.js:562 templates/js/translated/part.js:878 -#: templates/js/translated/part.js:1039 templates/js/translated/stock.js:509 -#: templates/js/translated/stock.js:1162 templates/navbar.html:26 +#: templates/js/translated/bom.js:216 templates/js/translated/part.js:434 +#: templates/js/translated/part.js:569 templates/js/translated/part.js:1059 +#: templates/js/translated/part.js:1220 templates/js/translated/stock.js:591 +#: templates/js/translated/stock.js:1244 templates/navbar.html:26 msgid "Stock" msgstr "Stan" @@ -2818,16 +2835,16 @@ msgid "Supplier Part Pricing" msgstr "" #: company/templates/company/supplier_part_navbar.html:29 -#: part/templates/part/part_sidebar.html:30 +#: part/templates/part/part_sidebar.html:28 msgid "Pricing" msgstr "Cennik" #: company/templates/company/supplier_part_sidebar.html:5 -#: stock/templates/stock/location.html:118 -#: stock/templates/stock/location.html:132 -#: stock/templates/stock/location.html:144 +#: stock/templates/stock/location.html:133 +#: stock/templates/stock/location.html:147 +#: stock/templates/stock/location.html:159 #: stock/templates/stock/location_sidebar.html:7 -#: templates/InvenTree/search.html:158 templates/js/translated/stock.js:1901 +#: templates/InvenTree/search.html:158 templates/js/translated/stock.js:1983 #: templates/stats.html:93 templates/stats.html:102 users/models.py:43 msgid "Stock Items" msgstr "" @@ -2947,7 +2964,7 @@ msgstr "" msgid "Place order" msgstr "Złóż zamówienie" -#: order/forms.py:37 order/templates/order/order_base.html:59 +#: order/forms.py:37 order/templates/order/order_base.html:60 msgid "Mark order as complete" msgstr "Oznacz zamówienie jako zakończone" @@ -3000,8 +3017,8 @@ msgstr "Status zamówienia zakupu" msgid "Company from which the items are being ordered" msgstr "" -#: order/models.py:267 order/templates/order/order_base.html:114 -#: templates/js/translated/order.js:669 +#: order/models.py:267 order/templates/order/order_base.html:118 +#: templates/js/translated/order.js:676 msgid "Supplier Reference" msgstr "" @@ -3061,7 +3078,7 @@ msgstr "" msgid "Target date for order completion. Order will be overdue after this date." msgstr "" -#: order/models.py:582 templates/js/translated/order.js:1114 +#: order/models.py:582 templates/js/translated/order.js:1113 msgid "Shipment Date" msgstr "Data wysyłki" @@ -3086,16 +3103,16 @@ msgid "Line item notes" msgstr "" #: order/models.py:768 order/models.py:856 -#: templates/js/translated/order.js:1166 +#: templates/js/translated/order.js:1165 msgid "Order" msgstr "Zamówienie" #: order/models.py:769 order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_po_report.html:77 -#: stock/templates/stock/item_base.html:325 -#: templates/js/translated/order.js:638 templates/js/translated/stock.js:1300 -#: templates/js/translated/stock.js:1983 +#: stock/templates/stock/item_base.html:353 +#: templates/js/translated/order.js:638 templates/js/translated/part.js:775 +#: templates/js/translated/stock.js:1382 templates/js/translated/stock.js:2065 msgid "Purchase Order" msgstr "Zlecenie zakupu" @@ -3103,9 +3120,10 @@ msgstr "Zlecenie zakupu" msgid "Supplier part" msgstr "" -#: order/models.py:797 order/templates/order/order_base.html:147 -#: order/templates/order/sales_order_base.html:154 -#: templates/js/translated/order.js:429 templates/js/translated/order.js:954 +#: order/models.py:797 order/templates/order/order_base.html:151 +#: order/templates/order/sales_order_base.html:155 +#: templates/js/translated/order.js:429 templates/js/translated/order.js:953 +#: templates/js/translated/part.js:847 templates/js/translated/part.js:873 msgid "Received" msgstr "Odebrane" @@ -3113,9 +3131,9 @@ msgstr "Odebrane" msgid "Number of items received" msgstr "" -#: order/models.py:805 part/templates/part/prices.html:176 stock/models.py:619 -#: stock/serializers.py:163 stock/templates/stock/item_base.html:332 -#: templates/js/translated/stock.js:1354 +#: order/models.py:805 part/templates/part/prices.html:176 stock/models.py:609 +#: stock/serializers.py:168 stock/templates/stock/item_base.html:360 +#: templates/js/translated/stock.js:1436 msgid "Purchase Price" msgstr "Cena zakupu" @@ -3176,47 +3194,47 @@ msgstr "" msgid "Enter stock allocation quantity" msgstr "" -#: order/serializers.py:169 +#: order/serializers.py:175 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:204 +#: order/serializers.py:213 msgid "Line Item" msgstr "" -#: order/serializers.py:210 +#: order/serializers.py:219 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:220 order/serializers.py:288 +#: order/serializers.py:229 order/serializers.py:297 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:244 +#: order/serializers.py:253 msgid "Barcode Hash" msgstr "" -#: order/serializers.py:245 +#: order/serializers.py:254 msgid "Unique identifier field" msgstr "" -#: order/serializers.py:262 +#: order/serializers.py:271 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:300 +#: order/serializers.py:309 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:317 +#: order/serializers.py:326 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:328 +#: order/serializers.py:337 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:569 +#: order/serializers.py:578 msgid "Sale price currency" msgstr "" @@ -3248,22 +3266,36 @@ msgstr "" msgid "Receive items" msgstr "" -#: order/templates/order/order_base.html:93 -#: order/templates/order/sales_order_base.html:98 +#: order/templates/order/order_base.html:58 +#: order/templates/order/purchase_order_detail.html:31 +msgid "Receive Items" +msgstr "" + +#: order/templates/order/order_base.html:62 order/views.py:185 +msgid "Complete Order" +msgstr "" + +#: order/templates/order/order_base.html:84 +#: order/templates/order/sales_order_base.html:79 msgid "Order Reference" msgstr "Numer zamówienia" -#: order/templates/order/order_base.html:98 -#: order/templates/order/sales_order_base.html:103 +#: order/templates/order/order_base.html:89 +#: order/templates/order/sales_order_base.html:84 +msgid "Order Description" +msgstr "" + +#: order/templates/order/order_base.html:94 +#: order/templates/order/sales_order_base.html:89 msgid "Order Status" msgstr "Status zamówienia" -#: order/templates/order/order_base.html:133 +#: order/templates/order/order_base.html:137 #: report/templates/report/inventree_build_order_base.html:122 msgid "Issued" msgstr "Wydany" -#: order/templates/order/order_base.html:203 +#: order/templates/order/order_base.html:207 msgid "Edit Purchase Order" msgstr "" @@ -3421,7 +3453,7 @@ msgid "Select existing purchase orders, or create new orders." msgstr "" #: order/templates/order/order_wizard/select_pos.html:31 -#: templates/js/translated/order.js:695 templates/js/translated/order.js:1119 +#: templates/js/translated/order.js:694 templates/js/translated/order.js:1118 msgid "Items" msgstr "Przedmioty" @@ -3465,10 +3497,6 @@ msgstr "Dodaj element zamówienia" msgid "Receive selected items" msgstr "" -#: order/templates/order/purchase_order_detail.html:31 -msgid "Receive Items" -msgstr "" - #: order/templates/order/purchase_order_detail.html:50 msgid "Received Items" msgstr "Otrzymane elementy" @@ -3496,16 +3524,16 @@ msgstr "" msgid "Ship Order" msgstr "Wyślij zamówienie" -#: order/templates/order/sales_order_base.html:86 +#: order/templates/order/sales_order_base.html:102 msgid "This Sales Order has not been fully allocated" msgstr "" -#: order/templates/order/sales_order_base.html:121 -#: templates/js/translated/order.js:1086 +#: order/templates/order/sales_order_base.html:122 +#: templates/js/translated/order.js:1085 msgid "Customer Reference" msgstr "" -#: order/templates/order/sales_order_base.html:194 +#: order/templates/order/sales_order_base.html:195 msgid "Edit Sales Order" msgstr "" @@ -3576,10 +3604,6 @@ msgstr "" msgid "Purchase order issued" msgstr "" -#: order/views.py:185 -msgid "Complete Order" -msgstr "" - #: order/views.py:201 msgid "Confirm order completion" msgstr "" @@ -3672,11 +3696,11 @@ msgid "This field is required" msgstr "" #: part/bom.py:125 part/models.py:81 part/models.py:816 -#: part/templates/part/category.html:90 part/templates/part/detail.html:104 +#: part/templates/part/category.html:104 part/templates/part/part_base.html:338 msgid "Default Location" msgstr "Domyślna lokalizacja" -#: part/bom.py:126 part/templates/part/part_base.html:167 +#: part/bom.py:126 part/templates/part/part_base.html:185 msgid "Available Stock" msgstr "Dostępna ilość" @@ -3793,19 +3817,19 @@ msgstr "" msgid "Part Category" msgstr "" -#: part/models.py:96 part/templates/part/category.html:117 +#: part/models.py:96 part/templates/part/category.html:124 #: templates/InvenTree/search.html:101 templates/stats.html:84 #: users/models.py:40 msgid "Part Categories" msgstr "" #: part/models.py:358 part/templates/part/cat_link.html:3 -#: part/templates/part/category.html:13 part/templates/part/category.html:122 -#: part/templates/part/category.html:142 +#: part/templates/part/category.html:13 part/templates/part/category.html:129 +#: part/templates/part/category.html:149 #: part/templates/part/category_sidebar.html:9 #: templates/InvenTree/index.html:85 templates/InvenTree/search.html:88 #: templates/InvenTree/settings/sidebar.html:36 -#: templates/js/translated/part.js:1416 templates/navbar.html:19 +#: templates/js/translated/part.js:1597 templates/navbar.html:19 #: templates/stats.html:80 templates/stats.html:89 users/models.py:41 msgid "Parts" msgstr "Części" @@ -3859,8 +3883,8 @@ msgstr "Wariant" msgid "Part description" msgstr "Opis części" -#: part/models.py:770 part/templates/part/category.html:97 -#: part/templates/part/detail.html:73 +#: part/models.py:770 part/templates/part/category.html:82 +#: part/templates/part/part_base.html:302 msgid "Keywords" msgstr "Słowa kluczowe" @@ -3869,9 +3893,10 @@ msgid "Part keywords to improve visibility in search results" msgstr "" #: part/models.py:778 part/models.py:2223 part/models.py:2472 -#: part/templates/part/detail.html:36 part/templates/part/set_category.html:15 +#: part/templates/part/part_base.html:265 +#: part/templates/part/set_category.html:15 #: templates/InvenTree/settings/settings.html:163 -#: templates/js/translated/part.js:1021 +#: templates/js/translated/part.js:1202 msgid "Category" msgstr "Kategoria" @@ -3879,9 +3904,9 @@ msgstr "Kategoria" msgid "Part category" msgstr "" -#: part/models.py:784 part/templates/part/detail.html:45 -#: templates/js/translated/part.js:550 templates/js/translated/part.js:974 -#: templates/js/translated/stock.js:1134 +#: part/models.py:784 part/templates/part/part_base.html:274 +#: templates/js/translated/part.js:557 templates/js/translated/part.js:1155 +#: templates/js/translated/stock.js:1216 msgid "IPN" msgstr "IPN" @@ -3893,8 +3918,8 @@ msgstr "" msgid "Part revision or version number" msgstr "" -#: part/models.py:792 part/templates/part/detail.html:52 report/models.py:200 -#: templates/js/translated/part.js:554 +#: part/models.py:792 part/templates/part/part_base.html:281 +#: report/models.py:200 templates/js/translated/part.js:561 msgid "Revision" msgstr "Wersja" @@ -3902,7 +3927,7 @@ msgstr "Wersja" msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:861 part/templates/part/detail.html:113 +#: part/models.py:861 part/templates/part/part_base.html:347 msgid "Default Supplier" msgstr "" @@ -3918,7 +3943,7 @@ msgstr "" msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:875 part/templates/part/part_base.html:178 +#: part/models.py:875 part/templates/part/part_base.html:196 msgid "Minimum Stock" msgstr "Minimalny stan magazynowy" @@ -4001,8 +4026,8 @@ msgstr "" msgid "Test with this name already exists for this part" msgstr "" -#: part/models.py:2310 templates/js/translated/part.js:1467 -#: templates/js/translated/stock.js:858 +#: part/models.py:2310 templates/js/translated/part.js:1648 +#: templates/js/translated/stock.js:940 msgid "Test Name" msgstr "Nazwa testu" @@ -4018,7 +4043,7 @@ msgstr "" msgid "Enter description for this test" msgstr "" -#: part/models.py:2322 templates/js/translated/part.js:1476 +#: part/models.py:2322 templates/js/translated/part.js:1657 #: templates/js/translated/table_filters.js:276 msgid "Required" msgstr "Wymagane" @@ -4027,7 +4052,7 @@ msgstr "Wymagane" msgid "Is this test required to pass?" msgstr "" -#: part/models.py:2328 templates/js/translated/part.js:1484 +#: part/models.py:2328 templates/js/translated/part.js:1665 msgid "Requires Value" msgstr "" @@ -4035,7 +4060,7 @@ msgstr "" msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:2334 templates/js/translated/part.js:1491 +#: part/models.py:2334 templates/js/translated/part.js:1672 msgid "Requires Attachment" msgstr "" @@ -4150,7 +4175,7 @@ msgstr "" msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:2686 stock/models.py:371 +#: part/models.py:2686 stock/models.py:361 msgid "Quantity must be integer value for trackable parts" msgstr "" @@ -4213,7 +4238,7 @@ msgstr "" msgid "The BOM for %(part)s has not been validated." msgstr "" -#: part/templates/part/bom.html:30 part/templates/part/detail.html:357 +#: part/templates/part/bom.html:30 part/templates/part/detail.html:250 msgid "BOM actions" msgstr "" @@ -4298,68 +4323,64 @@ msgstr "Stwórz nową kategorię komponentów" msgid "New Category" msgstr "" -#: part/templates/part/category.html:67 -msgid "Top level part category" -msgstr "" - -#: part/templates/part/category.html:79 +#: part/templates/part/category.html:76 part/templates/part/category.html:89 msgid "Category Path" msgstr "" -#: part/templates/part/category.html:84 -msgid "Category Description" +#: part/templates/part/category.html:90 +msgid "Top level part category" msgstr "" -#: part/templates/part/category.html:103 part/templates/part/category.html:194 +#: part/templates/part/category.html:110 part/templates/part/category.html:201 #: part/templates/part/category_sidebar.html:7 msgid "Subcategories" msgstr "" -#: part/templates/part/category.html:108 +#: part/templates/part/category.html:115 msgid "Parts (Including subcategories)" msgstr "" -#: part/templates/part/category.html:145 +#: part/templates/part/category.html:152 msgid "Export Part Data" msgstr "" -#: part/templates/part/category.html:146 part/templates/part/category.html:170 +#: part/templates/part/category.html:153 part/templates/part/category.html:177 msgid "Export" msgstr "Eksportuj" -#: part/templates/part/category.html:149 +#: part/templates/part/category.html:156 msgid "Create new part" msgstr "" -#: part/templates/part/category.html:150 templates/js/translated/bom.js:40 +#: part/templates/part/category.html:157 templates/js/translated/bom.js:40 msgid "New Part" msgstr "Nowy komponent" -#: part/templates/part/category.html:164 +#: part/templates/part/category.html:171 msgid "Set category" msgstr "Ustaw kategorię" -#: part/templates/part/category.html:164 +#: part/templates/part/category.html:171 msgid "Set Category" msgstr "Ustaw kategorię" -#: part/templates/part/category.html:168 +#: part/templates/part/category.html:175 msgid "Print Labels" msgstr "" -#: part/templates/part/category.html:170 +#: part/templates/part/category.html:177 msgid "Export Data" msgstr "Eksportuj dane" -#: part/templates/part/category.html:184 +#: part/templates/part/category.html:191 msgid "Part Parameters" msgstr "Parametry części" -#: part/templates/part/category.html:261 +#: part/templates/part/category.html:268 msgid "Create Part Category" msgstr "" -#: part/templates/part/category.html:288 +#: part/templates/part/category.html:295 msgid "Create Part" msgstr "" @@ -4402,7 +4423,7 @@ msgstr "" msgid "Import Parts" msgstr "" -#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:366 +#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:373 msgid "Duplicate Part" msgstr "Duplikuj część" @@ -4426,167 +4447,155 @@ msgstr "" msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)" msgstr "" -#: part/templates/part/detail.html:16 -msgid "Part Details" -msgstr "" - -#: part/templates/part/detail.html:66 -msgid "Minimum stock level" -msgstr "" - -#: part/templates/part/detail.html:97 -msgid "Latest Serial Number" -msgstr "Ostatni numer seryjny" - -#: part/templates/part/detail.html:124 +#: part/templates/part/detail.html:17 msgid "Part Stock" msgstr "Zapasy części" -#: part/templates/part/detail.html:136 +#: part/templates/part/detail.html:29 #, python-format msgid "Showing stock for all variants of %(full_name)s" msgstr "" -#: part/templates/part/detail.html:146 +#: part/templates/part/detail.html:39 msgid "Part Test Templates" msgstr "" -#: part/templates/part/detail.html:151 +#: part/templates/part/detail.html:44 msgid "Add Test Template" msgstr "" -#: part/templates/part/detail.html:208 +#: part/templates/part/detail.html:101 msgid "Sales Order Allocations" msgstr "" -#: part/templates/part/detail.html:249 +#: part/templates/part/detail.html:142 msgid "Part Variants" msgstr "Warianty Części" -#: part/templates/part/detail.html:253 +#: part/templates/part/detail.html:146 msgid "Create new variant" msgstr "Utwórz nowy wariant" -#: part/templates/part/detail.html:254 +#: part/templates/part/detail.html:147 msgid "New Variant" msgstr "Nowy wariant" -#: part/templates/part/detail.html:281 +#: part/templates/part/detail.html:174 msgid "Add new parameter" msgstr "" -#: part/templates/part/detail.html:315 part/templates/part/part_sidebar.html:47 +#: part/templates/part/detail.html:208 part/templates/part/part_sidebar.html:45 msgid "Related Parts" msgstr "" -#: part/templates/part/detail.html:319 part/templates/part/detail.html:320 +#: part/templates/part/detail.html:212 part/templates/part/detail.html:213 msgid "Add Related" msgstr "Dodaj powiązane" -#: part/templates/part/detail.html:340 part/templates/part/part_sidebar.html:19 +#: part/templates/part/detail.html:233 part/templates/part/part_sidebar.html:17 msgid "Bill of Materials" msgstr "Zestawienie materiałowe" -#: part/templates/part/detail.html:345 +#: part/templates/part/detail.html:238 msgid "Export actions" msgstr "" -#: part/templates/part/detail.html:349 +#: part/templates/part/detail.html:242 msgid "Export BOM" msgstr "" -#: part/templates/part/detail.html:351 +#: part/templates/part/detail.html:244 msgid "Print BOM Report" msgstr "" -#: part/templates/part/detail.html:361 +#: part/templates/part/detail.html:254 msgid "Upload BOM" msgstr "" -#: part/templates/part/detail.html:363 templates/js/translated/part.js:267 +#: part/templates/part/detail.html:256 templates/js/translated/part.js:270 msgid "Copy BOM" msgstr "Kopiuj BOM" -#: part/templates/part/detail.html:365 part/views.py:755 +#: part/templates/part/detail.html:258 part/views.py:755 msgid "Validate BOM" msgstr "" -#: part/templates/part/detail.html:370 +#: part/templates/part/detail.html:263 msgid "New BOM Item" msgstr "" -#: part/templates/part/detail.html:371 +#: part/templates/part/detail.html:264 msgid "Add BOM Item" msgstr "" -#: part/templates/part/detail.html:384 +#: part/templates/part/detail.html:277 msgid "Assemblies" msgstr "" -#: part/templates/part/detail.html:401 +#: part/templates/part/detail.html:294 msgid "Part Builds" msgstr "" -#: part/templates/part/detail.html:426 +#: part/templates/part/detail.html:319 msgid "Build Order Allocations" msgstr "" -#: part/templates/part/detail.html:436 +#: part/templates/part/detail.html:329 msgid "Part Suppliers" msgstr "" -#: part/templates/part/detail.html:463 +#: part/templates/part/detail.html:356 msgid "Part Manufacturers" msgstr "" -#: part/templates/part/detail.html:479 +#: part/templates/part/detail.html:372 msgid "Delete manufacturer parts" msgstr "" -#: part/templates/part/detail.html:660 +#: part/templates/part/detail.html:553 msgid "Delete selected BOM items?" msgstr "" -#: part/templates/part/detail.html:661 +#: part/templates/part/detail.html:554 msgid "All selected BOM items will be deleted" msgstr "" -#: part/templates/part/detail.html:712 +#: part/templates/part/detail.html:605 msgid "Create BOM Item" msgstr "" -#: part/templates/part/detail.html:764 +#: part/templates/part/detail.html:657 msgid "Related Part" msgstr "Powiązane części" -#: part/templates/part/detail.html:772 +#: part/templates/part/detail.html:665 msgid "Add Related Part" msgstr "Dodaj powiązaną część" -#: part/templates/part/detail.html:869 +#: part/templates/part/detail.html:760 msgid "Add Test Result Template" msgstr "" -#: part/templates/part/detail.html:926 +#: part/templates/part/detail.html:817 msgid "Edit Part Notes" msgstr "" -#: part/templates/part/detail.html:1039 +#: part/templates/part/detail.html:930 #, python-format msgid "Purchase Unit Price - %(currency)s" msgstr "" -#: part/templates/part/detail.html:1051 +#: part/templates/part/detail.html:942 #, python-format msgid "Unit Price-Cost Difference - %(currency)s" msgstr "" -#: part/templates/part/detail.html:1063 +#: part/templates/part/detail.html:954 #, python-format msgid "Supplier Unit Cost - %(currency)s" msgstr "" -#: part/templates/part/detail.html:1152 +#: part/templates/part/detail.html:1043 #, python-format msgid "Unit Price - %(currency)s" msgstr "" @@ -4668,86 +4677,108 @@ msgstr "Edytuj część" msgid "Delete part" msgstr "Usuń część" -#: part/templates/part/part_base.html:109 +#: part/templates/part/part_base.html:112 msgid "Part is a template part (variants can be made from this part)" msgstr "" -#: part/templates/part/part_base.html:113 +#: part/templates/part/part_base.html:116 msgid "Part can be assembled from other parts" msgstr "" -#: part/templates/part/part_base.html:117 +#: part/templates/part/part_base.html:120 msgid "Part can be used in assemblies" msgstr "" -#: part/templates/part/part_base.html:121 +#: part/templates/part/part_base.html:124 msgid "Part stock is tracked by serial number" msgstr "" -#: part/templates/part/part_base.html:125 +#: part/templates/part/part_base.html:128 msgid "Part can be purchased from external suppliers" msgstr "" -#: part/templates/part/part_base.html:129 +#: part/templates/part/part_base.html:132 msgid "Part can be sold to customers" msgstr "" -#: part/templates/part/part_base.html:135 -#: part/templates/part/part_base.html:143 +#: part/templates/part/part_base.html:138 +#: part/templates/part/part_base.html:146 msgid "Part is virtual (not a physical part)" msgstr "Część jest wirtualna (nie fizyczna)" -#: part/templates/part/part_base.html:136 +#: part/templates/part/part_base.html:139 #: templates/js/translated/company.js:505 #: templates/js/translated/company.js:762 #: templates/js/translated/model_renderers.js:175 -#: templates/js/translated/part.js:465 templates/js/translated/part.js:542 +#: templates/js/translated/part.js:472 templates/js/translated/part.js:549 msgid "Inactive" msgstr "Nieaktywny" -#: part/templates/part/part_base.html:155 +#: part/templates/part/part_base.html:156 +#: part/templates/part/part_base.html:579 +msgid "Show Part Details" +msgstr "" + +#: part/templates/part/part_base.html:173 #, python-format msgid "This part is a variant of %(link)s" msgstr "" -#: part/templates/part/part_base.html:172 templates/js/translated/order.js:1546 +#: part/templates/part/part_base.html:190 templates/js/translated/order.js:1545 #: templates/js/translated/table_filters.js:188 msgid "In Stock" msgstr "" -#: part/templates/part/part_base.html:185 templates/js/translated/part.js:1054 +#: part/templates/part/part_base.html:203 templates/js/translated/part.js:1235 msgid "On Order" msgstr "" -#: part/templates/part/part_base.html:192 templates/InvenTree/index.html:178 +#: part/templates/part/part_base.html:210 templates/InvenTree/index.html:178 msgid "Required for Build Orders" msgstr "" -#: part/templates/part/part_base.html:199 +#: part/templates/part/part_base.html:217 msgid "Required for Sales Orders" msgstr "" -#: part/templates/part/part_base.html:206 +#: part/templates/part/part_base.html:224 msgid "Allocated to Orders" msgstr "" -#: part/templates/part/part_base.html:221 templates/js/translated/bom.js:566 +#: part/templates/part/part_base.html:239 templates/js/translated/bom.js:566 msgid "Can Build" msgstr "" -#: part/templates/part/part_base.html:227 templates/js/translated/part.js:885 -#: templates/js/translated/part.js:1058 +#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1066 +#: templates/js/translated/part.js:1239 msgid "Building" msgstr "" -#: part/templates/part/part_base.html:320 part/templates/part/prices.html:144 +#: part/templates/part/part_base.html:295 +msgid "Minimum stock level" +msgstr "" + +#: part/templates/part/part_base.html:324 +msgid "Latest Serial Number" +msgstr "Ostatni numer seryjny" + +#: part/templates/part/part_base.html:328 +#: stock/templates/stock/item_base.html:159 +msgid "Search for serial number" +msgstr "" + +#: part/templates/part/part_base.html:449 part/templates/part/prices.html:144 msgid "Calculate" msgstr "" -#: part/templates/part/part_base.html:363 +#: part/templates/part/part_base.html:492 msgid "No matching images found" msgstr "" +#: part/templates/part/part_base.html:573 +msgid "Hide Part Details" +msgstr "" + #: part/templates/part/part_pricing.html:22 part/templates/part/prices.html:21 msgid "Supplier Pricing" msgstr "" @@ -4805,20 +4836,15 @@ msgstr "" msgid "No pricing information is available for this part." msgstr "" -#: part/templates/part/part_sidebar.html:8 -#: templates/js/translated/stock.js:1949 -msgid "Details" -msgstr "Szczegóły" - -#: part/templates/part/part_sidebar.html:13 +#: part/templates/part/part_sidebar.html:11 msgid "Variants" msgstr "" -#: part/templates/part/part_sidebar.html:27 +#: part/templates/part/part_sidebar.html:25 msgid "Used In" msgstr "" -#: part/templates/part/part_sidebar.html:43 +#: part/templates/part/part_sidebar.html:41 msgid "Test Templates" msgstr "" @@ -4934,8 +4960,8 @@ msgid "Set category for the following parts" msgstr "" #: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:476 -#: templates/js/translated/part.js:429 templates/js/translated/part.js:875 -#: templates/js/translated/part.js:1062 +#: templates/js/translated/part.js:436 templates/js/translated/part.js:1056 +#: templates/js/translated/part.js:1243 msgid "No Stock" msgstr "" @@ -5037,7 +5063,7 @@ msgstr "" msgid "Delete Part Parameter Template" msgstr "" -#: part/views.py:1489 templates/js/translated/part.js:310 +#: part/views.py:1489 templates/js/translated/part.js:313 msgid "Edit Part Category" msgstr "Edytuj kategorię części" @@ -5171,11 +5197,12 @@ msgid "Stock Item Test Report" msgstr "" #: report/templates/report/inventree_test_report_base.html:79 -#: stock/models.py:530 stock/templates/stock/item_base.html:238 +#: stock/models.py:520 stock/templates/stock/item_base.html:149 #: templates/js/translated/build.js:233 templates/js/translated/build.js:637 #: templates/js/translated/build.js:1013 #: templates/js/translated/model_renderers.js:95 -#: templates/js/translated/order.js:1288 templates/js/translated/order.js:1377 +#: templates/js/translated/order.js:1287 templates/js/translated/order.js:1376 +#: templates/js/translated/stock.js:410 msgid "Serial Number" msgstr "Numer Seryjny" @@ -5184,17 +5211,17 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:93 -#: stock/models.py:1855 +#: stock/models.py:1845 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:94 -#: stock/models.py:1861 +#: stock/models.py:1851 msgid "Result" msgstr "Wynik" #: report/templates/report/inventree_test_report_base.html:97 -#: templates/js/translated/order.js:685 templates/js/translated/stock.js:1917 +#: templates/js/translated/order.js:684 templates/js/translated/stock.js:1999 msgid "Date" msgstr "Data" @@ -5212,7 +5239,7 @@ msgid "Installed Items" msgstr "" #: report/templates/report/inventree_test_report_base.html:137 -#: templates/js/translated/stock.js:2177 +#: templates/js/translated/stock.js:2259 msgid "Serial" msgstr "" @@ -5220,9 +5247,9 @@ msgstr "" msgid "Quantity is required" msgstr "" -#: stock/forms.py:91 stock/forms.py:265 stock/models.py:587 -#: stock/templates/stock/item_base.html:382 -#: templates/js/translated/stock.js:1276 +#: stock/forms.py:91 stock/forms.py:265 stock/models.py:577 +#: stock/templates/stock/item_base.html:186 +#: templates/js/translated/stock.js:1358 msgid "Expiry Date" msgstr "Data ważności" @@ -5270,241 +5297,241 @@ msgstr "" msgid "Confirm removal of installed stock items" msgstr "" -#: stock/models.py:60 stock/models.py:624 -#: stock/templates/stock/item_base.html:422 +#: stock/models.py:60 stock/models.py:614 +#: stock/templates/stock/item_base.html:417 msgid "Owner" msgstr "" -#: stock/models.py:61 stock/models.py:625 +#: stock/models.py:61 stock/models.py:615 msgid "Select Owner" msgstr "" -#: stock/models.py:352 +#: stock/models.py:342 msgid "StockItem with this serial number already exists" msgstr "" -#: stock/models.py:388 +#: stock/models.py:378 #, python-brace-format msgid "Part type ('{pf}') must be {pe}" msgstr "" -#: stock/models.py:398 stock/models.py:407 +#: stock/models.py:388 stock/models.py:397 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:399 +#: stock/models.py:389 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:421 +#: stock/models.py:411 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:427 +#: stock/models.py:417 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:434 +#: stock/models.py:424 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:476 +#: stock/models.py:466 msgid "Parent Stock Item" msgstr "" -#: stock/models.py:485 +#: stock/models.py:475 msgid "Base part" msgstr "Część podstawowa" -#: stock/models.py:493 +#: stock/models.py:483 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:498 stock/templates/stock/location.html:12 +#: stock/models.py:488 stock/templates/stock/location.html:12 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" msgstr "" -#: stock/models.py:501 +#: stock/models.py:491 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:508 +#: stock/models.py:498 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:513 stock/templates/stock/item_base.html:271 +#: stock/models.py:503 stock/templates/stock/item_base.html:299 msgid "Installed In" msgstr "" -#: stock/models.py:516 +#: stock/models.py:506 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:532 +#: stock/models.py:522 msgid "Serial number for this item" msgstr "" -#: stock/models.py:546 +#: stock/models.py:536 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:550 +#: stock/models.py:540 msgid "Stock Quantity" msgstr "Ilość w magazynie" -#: stock/models.py:559 +#: stock/models.py:549 msgid "Source Build" msgstr "" -#: stock/models.py:561 +#: stock/models.py:551 msgid "Build for this stock item" msgstr "" -#: stock/models.py:572 +#: stock/models.py:562 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:575 +#: stock/models.py:565 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:581 +#: stock/models.py:571 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:588 +#: stock/models.py:578 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:601 +#: stock/models.py:591 msgid "Delete on deplete" msgstr "" -#: stock/models.py:601 +#: stock/models.py:591 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:611 stock/templates/stock/item.html:111 +#: stock/models.py:601 stock/templates/stock/item.html:111 msgid "Stock Item Notes" msgstr "" -#: stock/models.py:620 +#: stock/models.py:610 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:630 +#: stock/models.py:620 msgid "Scheduled for deletion" msgstr "" -#: stock/models.py:631 +#: stock/models.py:621 msgid "This StockItem will be deleted by the background worker" msgstr "" -#: stock/models.py:1094 +#: stock/models.py:1084 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1100 +#: stock/models.py:1090 msgid "Quantity must be integer" msgstr "Ilość musi być liczbą całkowitą" -#: stock/models.py:1106 +#: stock/models.py:1096 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({n})" msgstr "" -#: stock/models.py:1109 +#: stock/models.py:1099 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1112 +#: stock/models.py:1102 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1119 +#: stock/models.py:1109 #, python-brace-format msgid "Serial numbers already exist: {exists}" msgstr "" -#: stock/models.py:1277 +#: stock/models.py:1267 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:1775 +#: stock/models.py:1765 msgid "Entry notes" msgstr "" -#: stock/models.py:1832 +#: stock/models.py:1822 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:1838 +#: stock/models.py:1828 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:1856 +#: stock/models.py:1846 msgid "Test name" msgstr "" -#: stock/models.py:1862 templates/js/translated/table_filters.js:266 +#: stock/models.py:1852 templates/js/translated/table_filters.js:266 msgid "Test result" msgstr "" -#: stock/models.py:1868 +#: stock/models.py:1858 msgid "Test output value" msgstr "" -#: stock/models.py:1875 +#: stock/models.py:1865 msgid "Test result attachment" msgstr "" -#: stock/models.py:1881 +#: stock/models.py:1871 msgid "Test notes" msgstr "" -#: stock/serializers.py:166 +#: stock/serializers.py:171 msgid "Purchase price of this stock item" msgstr "" -#: stock/serializers.py:173 +#: stock/serializers.py:178 msgid "Purchase currency of this stock item" msgstr "" -#: stock/serializers.py:287 +#: stock/serializers.py:292 msgid "Enter number of stock items to serialize" msgstr "" -#: stock/serializers.py:302 +#: stock/serializers.py:307 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "" -#: stock/serializers.py:308 +#: stock/serializers.py:313 msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:319 stock/serializers.py:686 +#: stock/serializers.py:324 stock/serializers.py:691 msgid "Destination stock location" msgstr "" -#: stock/serializers.py:326 +#: stock/serializers.py:331 msgid "Optional note field" msgstr "" -#: stock/serializers.py:339 +#: stock/serializers.py:344 msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:556 +#: stock/serializers.py:561 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:584 +#: stock/serializers.py:589 msgid "Stock transaction notes" msgstr "" -#: stock/serializers.py:594 +#: stock/serializers.py:599 msgid "A list of stock items must be provided" msgstr "" @@ -5629,125 +5656,131 @@ msgstr "" msgid "Install" msgstr "" -#: stock/templates/stock/item_base.html:106 +#: stock/templates/stock/item_base.html:108 msgid "Convert to variant" msgstr "" -#: stock/templates/stock/item_base.html:109 +#: stock/templates/stock/item_base.html:111 msgid "Duplicate stock item" msgstr "" -#: stock/templates/stock/item_base.html:111 +#: stock/templates/stock/item_base.html:113 msgid "Edit stock item" msgstr "" -#: stock/templates/stock/item_base.html:114 +#: stock/templates/stock/item_base.html:116 msgid "Delete stock item" msgstr "" -#: stock/templates/stock/item_base.html:136 -#: stock/templates/stock/item_base.html:386 -#: templates/js/translated/table_filters.js:247 -msgid "Expired" -msgstr "Termin minął" - -#: stock/templates/stock/item_base.html:146 -#: stock/templates/stock/item_base.html:388 -#: templates/js/translated/table_filters.js:253 -msgid "Stale" +#: stock/templates/stock/item_base.html:154 +msgid "previous page" msgstr "" -#: stock/templates/stock/item_base.html:161 -msgid "You are not in the list of owners of this item. This stock item cannot be edited." +#: stock/templates/stock/item_base.html:154 +msgid "Navigate to previous serial number" msgstr "" -#: stock/templates/stock/item_base.html:168 -msgid "This stock item is in production and cannot be edited." +#: stock/templates/stock/item_base.html:163 +msgid "next page" msgstr "" -#: stock/templates/stock/item_base.html:169 -msgid "Edit the stock item from the build view." -msgstr "" - -#: stock/templates/stock/item_base.html:182 -msgid "This stock item has not passed all required tests" +#: stock/templates/stock/item_base.html:163 +msgid "Navigate to next serial number" msgstr "" #: stock/templates/stock/item_base.html:190 #, python-format -msgid "This stock item is allocated to Sales Order %(link)s (Quantity: %(qty)s)" -msgstr "" - -#: stock/templates/stock/item_base.html:198 -#, python-format -msgid "This stock item is allocated to Build %(link)s (Quantity: %(qty)s)" -msgstr "" - -#: stock/templates/stock/item_base.html:204 -msgid "This stock item is serialized - it has a unique serial number and the quantity cannot be adjusted." -msgstr "" - -#: stock/templates/stock/item_base.html:208 -msgid "This stock item cannot be deleted as it has child items" -msgstr "" - -#: stock/templates/stock/item_base.html:212 -msgid "This stock item will be automatically deleted when all stock is depleted." -msgstr "" - -#: stock/templates/stock/item_base.html:241 -msgid "previous page" -msgstr "" - -#: stock/templates/stock/item_base.html:247 -msgid "next page" -msgstr "" - -#: stock/templates/stock/item_base.html:290 -#: templates/js/translated/build.js:1035 -msgid "No location set" -msgstr "Lokacje nie są ustawione" - -#: stock/templates/stock/item_base.html:297 -msgid "Barcode Identifier" -msgstr "Skaner kodów" - -#: stock/templates/stock/item_base.html:339 -msgid "Parent Item" -msgstr "" - -#: stock/templates/stock/item_base.html:357 -msgid "No manufacturer set" -msgstr "" - -#: stock/templates/stock/item_base.html:386 -#, python-format msgid "This StockItem expired on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:388 +#: stock/templates/stock/item_base.html:190 +#: templates/js/translated/table_filters.js:247 +msgid "Expired" +msgstr "Termin minął" + +#: stock/templates/stock/item_base.html:192 #, python-format msgid "This StockItem expires on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:395 -#: templates/js/translated/stock.js:1289 +#: stock/templates/stock/item_base.html:192 +#: templates/js/translated/table_filters.js:253 +msgid "Stale" +msgstr "" + +#: stock/templates/stock/item_base.html:199 +#: templates/js/translated/stock.js:1371 msgid "Last Updated" msgstr "Ostatnia aktualizacja" -#: stock/templates/stock/item_base.html:400 +#: stock/templates/stock/item_base.html:204 msgid "Last Stocktake" msgstr "Ostatnia inwentaryzacja" -#: stock/templates/stock/item_base.html:404 +#: stock/templates/stock/item_base.html:208 msgid "No stocktake performed" msgstr "" -#: stock/templates/stock/item_base.html:415 +#: stock/templates/stock/item_base.html:226 +msgid "You are not in the list of owners of this item. This stock item cannot be edited." +msgstr "" + +#: stock/templates/stock/item_base.html:233 +msgid "This stock item is in production and cannot be edited." +msgstr "" + +#: stock/templates/stock/item_base.html:234 +msgid "Edit the stock item from the build view." +msgstr "" + +#: stock/templates/stock/item_base.html:247 +msgid "This stock item has not passed all required tests" +msgstr "" + +#: stock/templates/stock/item_base.html:255 +#, python-format +msgid "This stock item is allocated to Sales Order %(link)s (Quantity: %(qty)s)" +msgstr "" + +#: stock/templates/stock/item_base.html:263 +#, python-format +msgid "This stock item is allocated to Build %(link)s (Quantity: %(qty)s)" +msgstr "" + +#: stock/templates/stock/item_base.html:269 +msgid "This stock item is serialized - it has a unique serial number and the quantity cannot be adjusted." +msgstr "" + +#: stock/templates/stock/item_base.html:273 +msgid "This stock item cannot be deleted as it has child items" +msgstr "" + +#: stock/templates/stock/item_base.html:277 +msgid "This stock item will be automatically deleted when all stock is depleted." +msgstr "" + +#: stock/templates/stock/item_base.html:318 +#: templates/js/translated/build.js:1035 +msgid "No location set" +msgstr "Lokacje nie są ustawione" + +#: stock/templates/stock/item_base.html:325 +msgid "Barcode Identifier" +msgstr "Skaner kodów" + +#: stock/templates/stock/item_base.html:367 +msgid "Parent Item" +msgstr "" + +#: stock/templates/stock/item_base.html:385 +msgid "No manufacturer set" +msgstr "" + +#: stock/templates/stock/item_base.html:410 msgid "Tests" msgstr "" -#: stock/templates/stock/item_base.html:505 +#: stock/templates/stock/item_base.html:500 msgid "Edit Stock Status" msgstr "" @@ -5825,30 +5858,35 @@ msgstr "" msgid "New Location" msgstr "Nowa lokalizacja" -#: stock/templates/stock/location.html:86 +#: stock/templates/stock/location.html:95 +#: stock/templates/stock/location.html:101 +msgid "Location Path" +msgstr "" + +#: stock/templates/stock/location.html:102 msgid "Top level stock location" msgstr "" -#: stock/templates/stock/location.html:95 +#: stock/templates/stock/location.html:115 msgid "You are not in the list of owners of this location. This stock location cannot be edited." msgstr "" -#: stock/templates/stock/location.html:113 -#: stock/templates/stock/location.html:160 +#: stock/templates/stock/location.html:128 +#: stock/templates/stock/location.html:175 #: stock/templates/stock/location_sidebar.html:5 msgid "Sublocations" msgstr "" -#: stock/templates/stock/location.html:127 templates/InvenTree/search.html:170 +#: stock/templates/stock/location.html:142 templates/InvenTree/search.html:170 #: templates/stats.html:97 users/models.py:42 msgid "Stock Locations" msgstr "" -#: stock/templates/stock/location.html:167 templates/stock_table.html:30 +#: stock/templates/stock/location.html:182 templates/stock_table.html:30 msgid "Printing Actions" msgstr "" -#: stock/templates/stock/location.html:171 templates/stock_table.html:34 +#: stock/templates/stock/location.html:186 templates/stock_table.html:34 msgid "Print labels" msgstr "Drukuj etykiety" @@ -5942,7 +5980,7 @@ msgstr "" msgid "Uninstall Stock Items" msgstr "" -#: stock/views.py:760 templates/js/translated/stock.js:648 +#: stock/views.py:760 templates/js/translated/stock.js:730 msgid "Confirm stock adjustment" msgstr "" @@ -5950,7 +5988,7 @@ msgstr "" msgid "Uninstalled stock items" msgstr "" -#: stock/views.py:793 templates/js/translated/stock.js:318 +#: stock/views.py:793 templates/js/translated/stock.js:319 msgid "Edit Stock Item" msgstr "" @@ -5962,7 +6000,7 @@ msgstr "Utwórz nową lokalizację magazynową" msgid "Create new Stock Item" msgstr "" -#: stock/views.py:1186 templates/js/translated/stock.js:298 +#: stock/views.py:1186 templates/js/translated/stock.js:299 msgid "Duplicate Stock Item" msgstr "" @@ -6868,7 +6906,7 @@ msgstr "" msgid "Unlink" msgstr "" -#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:600 +#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:682 msgid "Remove stock item" msgstr "" @@ -6963,7 +7001,7 @@ msgid "View BOM" msgstr "" #: templates/js/translated/bom.js:608 templates/js/translated/build.js:1183 -#: templates/js/translated/order.js:1320 +#: templates/js/translated/order.js:1319 msgid "Actions" msgstr "Akcje" @@ -7055,7 +7093,7 @@ msgstr "" msgid "No build order allocations found" msgstr "" -#: templates/js/translated/build.js:424 templates/js/translated/order.js:1194 +#: templates/js/translated/build.js:424 templates/js/translated/order.js:1193 msgid "Location not specified" msgstr "" @@ -7064,12 +7102,12 @@ msgid "No active build outputs found" msgstr "" #: templates/js/translated/build.js:1052 templates/js/translated/build.js:1760 -#: templates/js/translated/order.js:1327 +#: templates/js/translated/order.js:1326 msgid "Edit stock allocation" msgstr "" #: templates/js/translated/build.js:1054 templates/js/translated/build.js:1761 -#: templates/js/translated/order.js:1328 +#: templates/js/translated/order.js:1327 msgid "Delete stock allocation" msgstr "" @@ -7090,11 +7128,11 @@ msgid "Quantity Per" msgstr "Ilość za" #: templates/js/translated/build.js:1134 templates/js/translated/build.js:1360 -#: templates/js/translated/build.js:1756 templates/js/translated/order.js:1557 +#: templates/js/translated/build.js:1756 templates/js/translated/order.js:1556 msgid "Allocated" msgstr "Przydzielono" -#: templates/js/translated/build.js:1190 templates/js/translated/order.js:1611 +#: templates/js/translated/build.js:1190 templates/js/translated/order.js:1610 msgid "Build stock" msgstr "" @@ -7102,7 +7140,7 @@ msgstr "" msgid "Order stock" msgstr "" -#: templates/js/translated/build.js:1197 templates/js/translated/order.js:1604 +#: templates/js/translated/build.js:1197 templates/js/translated/order.js:1603 msgid "Allocate stock" msgstr "" @@ -7143,9 +7181,9 @@ msgstr "" msgid "No builds matching query" msgstr "" -#: templates/js/translated/build.js:1593 templates/js/translated/part.js:966 -#: templates/js/translated/part.js:1377 templates/js/translated/stock.js:1094 -#: templates/js/translated/stock.js:1871 +#: templates/js/translated/build.js:1593 templates/js/translated/part.js:1147 +#: templates/js/translated/part.js:1558 templates/js/translated/stock.js:1176 +#: templates/js/translated/stock.js:1953 msgid "Select" msgstr "" @@ -7153,7 +7191,7 @@ msgstr "" msgid "Build order is overdue" msgstr "" -#: templates/js/translated/build.js:1674 templates/js/translated/stock.js:2090 +#: templates/js/translated/build.js:1674 templates/js/translated/stock.js:2172 msgid "No user information" msgstr "" @@ -7197,10 +7235,6 @@ msgstr "" msgid "Delete Supplier Part" msgstr "" -#: templates/js/translated/company.js:265 -msgid "Edit Company" -msgstr "Edytuj firmę" - #: templates/js/translated/company.js:286 msgid "Add new Company" msgstr "Dodaj nową firmę" @@ -7230,34 +7264,34 @@ msgid "No manufacturer parts found" msgstr "" #: templates/js/translated/company.js:497 -#: templates/js/translated/company.js:754 templates/js/translated/part.js:449 -#: templates/js/translated/part.js:534 +#: templates/js/translated/company.js:754 templates/js/translated/part.js:456 +#: templates/js/translated/part.js:541 msgid "Template part" msgstr "" #: templates/js/translated/company.js:501 -#: templates/js/translated/company.js:758 templates/js/translated/part.js:453 -#: templates/js/translated/part.js:538 +#: templates/js/translated/company.js:758 templates/js/translated/part.js:460 +#: templates/js/translated/part.js:545 msgid "Assembled part" msgstr "" -#: templates/js/translated/company.js:628 templates/js/translated/part.js:626 +#: templates/js/translated/company.js:628 templates/js/translated/part.js:633 msgid "No parameters found" msgstr "" -#: templates/js/translated/company.js:665 templates/js/translated/part.js:668 +#: templates/js/translated/company.js:665 templates/js/translated/part.js:675 msgid "Edit parameter" msgstr "" -#: templates/js/translated/company.js:666 templates/js/translated/part.js:669 +#: templates/js/translated/company.js:666 templates/js/translated/part.js:676 msgid "Delete parameter" msgstr "" -#: templates/js/translated/company.js:685 templates/js/translated/part.js:686 +#: templates/js/translated/company.js:685 templates/js/translated/part.js:693 msgid "Edit Parameter" msgstr "" -#: templates/js/translated/company.js:696 templates/js/translated/part.js:698 +#: templates/js/translated/company.js:696 templates/js/translated/part.js:705 msgid "Delete Parameter" msgstr "" @@ -7346,7 +7380,7 @@ msgid "NO" msgstr "" #: templates/js/translated/label.js:29 templates/js/translated/report.js:118 -#: templates/js/translated/stock.js:624 +#: templates/js/translated/stock.js:706 msgid "Select Stock Items" msgstr "" @@ -7502,11 +7536,11 @@ msgstr "" msgid "Export Order" msgstr "" -#: templates/js/translated/order.js:211 templates/js/translated/stock.js:423 +#: templates/js/translated/order.js:211 templates/js/translated/stock.js:505 msgid "Format" msgstr "" -#: templates/js/translated/order.js:212 templates/js/translated/stock.js:424 +#: templates/js/translated/order.js:212 templates/js/translated/stock.js:506 msgid "Select file format" msgstr "" @@ -7522,7 +7556,7 @@ msgstr "" msgid "Quantity to receive" msgstr "" -#: templates/js/translated/order.js:360 templates/js/translated/stock.js:1673 +#: templates/js/translated/order.js:360 templates/js/translated/stock.js:1755 msgid "Stock Status" msgstr "" @@ -7546,321 +7580,321 @@ msgstr "" msgid "Receive Purchase Order Items" msgstr "" -#: templates/js/translated/order.js:627 +#: templates/js/translated/order.js:627 templates/js/translated/part.js:746 msgid "No purchase orders found" msgstr "" -#: templates/js/translated/order.js:652 templates/js/translated/order.js:1063 +#: templates/js/translated/order.js:659 templates/js/translated/order.js:1062 msgid "Order is overdue" msgstr "" -#: templates/js/translated/order.js:772 templates/js/translated/order.js:1646 +#: templates/js/translated/order.js:771 templates/js/translated/order.js:1645 msgid "Edit Line Item" msgstr "" -#: templates/js/translated/order.js:784 templates/js/translated/order.js:1657 +#: templates/js/translated/order.js:783 templates/js/translated/order.js:1656 msgid "Delete Line Item" msgstr "" -#: templates/js/translated/order.js:823 +#: templates/js/translated/order.js:822 msgid "No line items found" msgstr "" -#: templates/js/translated/order.js:850 templates/js/translated/order.js:1467 +#: templates/js/translated/order.js:849 templates/js/translated/order.js:1466 msgid "Total" msgstr "" -#: templates/js/translated/order.js:904 templates/js/translated/order.js:1492 -#: templates/js/translated/part.js:1594 templates/js/translated/part.js:1805 +#: templates/js/translated/order.js:903 templates/js/translated/order.js:1491 +#: templates/js/translated/part.js:1775 templates/js/translated/part.js:1986 msgid "Unit Price" msgstr "Cena jednostkowa" -#: templates/js/translated/order.js:919 templates/js/translated/order.js:1508 +#: templates/js/translated/order.js:918 templates/js/translated/order.js:1507 msgid "Total Price" msgstr "" -#: templates/js/translated/order.js:997 templates/js/translated/order.js:1617 +#: templates/js/translated/order.js:996 templates/js/translated/order.js:1616 msgid "Edit line item" msgstr "" -#: templates/js/translated/order.js:998 +#: templates/js/translated/order.js:997 msgid "Delete line item" msgstr "" -#: templates/js/translated/order.js:1002 +#: templates/js/translated/order.js:1001 templates/js/translated/part.js:878 msgid "Receive line item" msgstr "" -#: templates/js/translated/order.js:1039 +#: templates/js/translated/order.js:1038 msgid "No sales orders found" msgstr "" -#: templates/js/translated/order.js:1077 +#: templates/js/translated/order.js:1076 msgid "Invalid Customer" msgstr "" -#: templates/js/translated/order.js:1155 +#: templates/js/translated/order.js:1154 msgid "No sales order allocations found" msgstr "" -#: templates/js/translated/order.js:1248 +#: templates/js/translated/order.js:1247 msgid "Edit Stock Allocation" msgstr "" -#: templates/js/translated/order.js:1265 +#: templates/js/translated/order.js:1264 msgid "Confirm Delete Operation" msgstr "" -#: templates/js/translated/order.js:1266 +#: templates/js/translated/order.js:1265 msgid "Delete Stock Allocation" msgstr "" -#: templates/js/translated/order.js:1308 +#: templates/js/translated/order.js:1307 msgid "Stock location not specified" msgstr "" -#: templates/js/translated/order.js:1557 +#: templates/js/translated/order.js:1556 msgid "Fulfilled" msgstr "" -#: templates/js/translated/order.js:1601 +#: templates/js/translated/order.js:1600 msgid "Allocate serial numbers" msgstr "" -#: templates/js/translated/order.js:1607 +#: templates/js/translated/order.js:1606 msgid "Purchase stock" msgstr "Cena zakupu" -#: templates/js/translated/order.js:1614 templates/js/translated/order.js:1793 +#: templates/js/translated/order.js:1613 templates/js/translated/order.js:1792 msgid "Calculate price" msgstr "Oblicz cenę" -#: templates/js/translated/order.js:1618 +#: templates/js/translated/order.js:1617 msgid "Delete line item " msgstr "" -#: templates/js/translated/order.js:1741 +#: templates/js/translated/order.js:1740 msgid "Allocate Stock Item" msgstr "" -#: templates/js/translated/order.js:1801 +#: templates/js/translated/order.js:1800 msgid "Update Unit Price" msgstr "Zaktualizuj cenę jednostkową" -#: templates/js/translated/order.js:1815 +#: templates/js/translated/order.js:1814 msgid "No matching line items" msgstr "" -#: templates/js/translated/part.js:51 +#: templates/js/translated/part.js:52 msgid "Part Attributes" msgstr "" -#: templates/js/translated/part.js:55 +#: templates/js/translated/part.js:56 msgid "Part Creation Options" msgstr "" -#: templates/js/translated/part.js:59 +#: templates/js/translated/part.js:60 msgid "Part Duplication Options" msgstr "" -#: templates/js/translated/part.js:63 +#: templates/js/translated/part.js:64 msgid "Supplier Options" msgstr "" -#: templates/js/translated/part.js:77 +#: templates/js/translated/part.js:78 msgid "Add Part Category" msgstr "" -#: templates/js/translated/part.js:166 +#: templates/js/translated/part.js:162 msgid "Create Initial Stock" msgstr "" -#: templates/js/translated/part.js:167 +#: templates/js/translated/part.js:163 msgid "Create an initial stock item for this part" msgstr "" -#: templates/js/translated/part.js:174 +#: templates/js/translated/part.js:170 msgid "Initial Stock Quantity" msgstr "" -#: templates/js/translated/part.js:175 +#: templates/js/translated/part.js:171 msgid "Specify initial stock quantity for this part" msgstr "" -#: templates/js/translated/part.js:182 +#: templates/js/translated/part.js:178 msgid "Select destination stock location" msgstr "" -#: templates/js/translated/part.js:193 +#: templates/js/translated/part.js:196 msgid "Copy Category Parameters" msgstr "" -#: templates/js/translated/part.js:194 +#: templates/js/translated/part.js:197 msgid "Copy parameter templates from selected part category" msgstr "" -#: templates/js/translated/part.js:202 +#: templates/js/translated/part.js:205 msgid "Add Supplier Data" msgstr "" -#: templates/js/translated/part.js:203 +#: templates/js/translated/part.js:206 msgid "Create initial supplier data for this part" msgstr "" -#: templates/js/translated/part.js:259 +#: templates/js/translated/part.js:262 msgid "Copy Image" msgstr "" -#: templates/js/translated/part.js:260 +#: templates/js/translated/part.js:263 msgid "Copy image from original part" msgstr "" -#: templates/js/translated/part.js:268 +#: templates/js/translated/part.js:271 msgid "Copy bill of materials from original part" msgstr "" -#: templates/js/translated/part.js:275 +#: templates/js/translated/part.js:278 msgid "Copy Parameters" msgstr "" -#: templates/js/translated/part.js:276 +#: templates/js/translated/part.js:279 msgid "Copy parameter data from original part" msgstr "" -#: templates/js/translated/part.js:289 +#: templates/js/translated/part.js:292 msgid "Parent part category" msgstr "" -#: templates/js/translated/part.js:333 +#: templates/js/translated/part.js:336 msgid "Edit Part" msgstr "" -#: templates/js/translated/part.js:335 +#: templates/js/translated/part.js:338 msgid "Part edited" msgstr "" -#: templates/js/translated/part.js:403 +#: templates/js/translated/part.js:410 msgid "You are subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:405 +#: templates/js/translated/part.js:412 msgid "You have subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:410 +#: templates/js/translated/part.js:417 msgid "Subscribe to notifications for this item" msgstr "" -#: templates/js/translated/part.js:412 +#: templates/js/translated/part.js:419 msgid "You have unsubscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:441 templates/js/translated/part.js:526 +#: templates/js/translated/part.js:448 templates/js/translated/part.js:533 msgid "Trackable part" msgstr "" -#: templates/js/translated/part.js:445 templates/js/translated/part.js:530 +#: templates/js/translated/part.js:452 templates/js/translated/part.js:537 msgid "Virtual part" msgstr "" -#: templates/js/translated/part.js:457 +#: templates/js/translated/part.js:464 msgid "Subscribed part" msgstr "" -#: templates/js/translated/part.js:461 +#: templates/js/translated/part.js:468 msgid "Salable part" msgstr "" -#: templates/js/translated/part.js:576 +#: templates/js/translated/part.js:583 msgid "No variants found" msgstr "" -#: templates/js/translated/part.js:765 +#: templates/js/translated/part.js:946 msgid "Delete part relationship" msgstr "" -#: templates/js/translated/part.js:789 +#: templates/js/translated/part.js:970 msgid "Delete Part Relationship" msgstr "" -#: templates/js/translated/part.js:856 templates/js/translated/part.js:1116 +#: templates/js/translated/part.js:1037 templates/js/translated/part.js:1297 msgid "No parts found" msgstr "" -#: templates/js/translated/part.js:1026 +#: templates/js/translated/part.js:1207 msgid "No category" msgstr "" -#: templates/js/translated/part.js:1049 +#: templates/js/translated/part.js:1230 #: templates/js/translated/table_filters.js:381 msgid "Low stock" msgstr "" -#: templates/js/translated/part.js:1140 templates/js/translated/part.js:1312 -#: templates/js/translated/stock.js:1832 +#: templates/js/translated/part.js:1321 templates/js/translated/part.js:1493 +#: templates/js/translated/stock.js:1914 msgid "Display as list" msgstr "" -#: templates/js/translated/part.js:1156 +#: templates/js/translated/part.js:1337 msgid "Display as grid" msgstr "" -#: templates/js/translated/part.js:1331 templates/js/translated/stock.js:1851 +#: templates/js/translated/part.js:1512 templates/js/translated/stock.js:1933 msgid "Display as tree" msgstr "" -#: templates/js/translated/part.js:1395 +#: templates/js/translated/part.js:1576 msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:1409 templates/js/translated/stock.js:1895 +#: templates/js/translated/part.js:1590 templates/js/translated/stock.js:1977 msgid "Path" msgstr "" -#: templates/js/translated/part.js:1453 +#: templates/js/translated/part.js:1634 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:1504 templates/js/translated/stock.js:816 +#: templates/js/translated/part.js:1685 templates/js/translated/stock.js:898 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:1505 templates/js/translated/stock.js:817 +#: templates/js/translated/part.js:1686 templates/js/translated/stock.js:899 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:1511 +#: templates/js/translated/part.js:1692 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:1533 +#: templates/js/translated/part.js:1714 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:1547 +#: templates/js/translated/part.js:1728 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:1572 +#: templates/js/translated/part.js:1753 #, python-brace-format msgid "No ${human_name} information found" msgstr "" -#: templates/js/translated/part.js:1627 +#: templates/js/translated/part.js:1808 #, python-brace-format msgid "Edit ${human_name}" msgstr "" -#: templates/js/translated/part.js:1628 +#: templates/js/translated/part.js:1809 #, python-brace-format msgid "Delete ${human_name}" msgstr "" -#: templates/js/translated/part.js:1729 +#: templates/js/translated/part.js:1910 msgid "Single Price" msgstr "Cena jednostkowa" -#: templates/js/translated/part.js:1748 +#: templates/js/translated/part.js:1929 msgid "Single Price Difference" msgstr "" @@ -7930,276 +7964,300 @@ msgstr "" msgid "Sales Order(s) must be selected before printing report" msgstr "" -#: templates/js/translated/stock.js:70 +#: templates/js/translated/stock.js:71 msgid "Serialize Stock Item" msgstr "" -#: templates/js/translated/stock.js:88 templates/js/translated/stock.js:167 +#: templates/js/translated/stock.js:89 templates/js/translated/stock.js:168 msgid "Next available serial number" msgstr "" -#: templates/js/translated/stock.js:90 templates/js/translated/stock.js:169 +#: templates/js/translated/stock.js:91 templates/js/translated/stock.js:170 msgid "Latest serial number" msgstr "" -#: templates/js/translated/stock.js:104 +#: templates/js/translated/stock.js:105 msgid "Parent stock location" msgstr "" -#: templates/js/translated/stock.js:140 +#: templates/js/translated/stock.js:141 msgid "New Stock Location" msgstr "" -#: templates/js/translated/stock.js:180 +#: templates/js/translated/stock.js:181 msgid "This part cannot be serialized" msgstr "" -#: templates/js/translated/stock.js:219 +#: templates/js/translated/stock.js:220 msgid "Enter initial quantity for this stock item" msgstr "" -#: templates/js/translated/stock.js:225 +#: templates/js/translated/stock.js:226 msgid "Enter serial numbers for new stock (or leave blank)" msgstr "" -#: templates/js/translated/stock.js:368 +#: templates/js/translated/stock.js:369 msgid "Created new stock item" msgstr "" -#: templates/js/translated/stock.js:381 +#: templates/js/translated/stock.js:382 msgid "Created multiple stock items" msgstr "" -#: templates/js/translated/stock.js:420 +#: templates/js/translated/stock.js:407 +msgid "Find Serial Number" +msgstr "" + +#: templates/js/translated/stock.js:411 templates/js/translated/stock.js:412 +msgid "Enter serial number" +msgstr "" + +#: templates/js/translated/stock.js:428 +msgid "Enter a serial number" +msgstr "" + +#: templates/js/translated/stock.js:448 +msgid "No matching serial number" +msgstr "" + +#: templates/js/translated/stock.js:457 +msgid "More than one matching result found" +msgstr "" + +#: templates/js/translated/stock.js:502 msgid "Export Stock" msgstr "" -#: templates/js/translated/stock.js:431 +#: templates/js/translated/stock.js:513 msgid "Include Sublocations" msgstr "" -#: templates/js/translated/stock.js:432 +#: templates/js/translated/stock.js:514 msgid "Include stock items in sublocations" msgstr "" -#: templates/js/translated/stock.js:474 +#: templates/js/translated/stock.js:556 msgid "Transfer Stock" msgstr "" -#: templates/js/translated/stock.js:475 +#: templates/js/translated/stock.js:557 msgid "Move" msgstr "" -#: templates/js/translated/stock.js:481 +#: templates/js/translated/stock.js:563 msgid "Count Stock" msgstr "" -#: templates/js/translated/stock.js:482 +#: templates/js/translated/stock.js:564 msgid "Count" msgstr "" -#: templates/js/translated/stock.js:486 +#: templates/js/translated/stock.js:568 msgid "Remove Stock" msgstr "" -#: templates/js/translated/stock.js:487 +#: templates/js/translated/stock.js:569 msgid "Take" msgstr "" -#: templates/js/translated/stock.js:491 +#: templates/js/translated/stock.js:573 msgid "Add Stock" msgstr "Dodaj stan" -#: templates/js/translated/stock.js:492 users/models.py:200 +#: templates/js/translated/stock.js:574 users/models.py:200 msgid "Add" msgstr "Dodaj" -#: templates/js/translated/stock.js:496 templates/stock_table.html:56 +#: templates/js/translated/stock.js:578 templates/stock_table.html:56 msgid "Delete Stock" msgstr "" -#: templates/js/translated/stock.js:585 +#: templates/js/translated/stock.js:667 msgid "Quantity cannot be adjusted for serialized stock" msgstr "" -#: templates/js/translated/stock.js:585 +#: templates/js/translated/stock.js:667 msgid "Specify stock quantity" msgstr "" -#: templates/js/translated/stock.js:625 +#: templates/js/translated/stock.js:707 msgid "You must select at least one available stock item" msgstr "" -#: templates/js/translated/stock.js:783 +#: templates/js/translated/stock.js:865 msgid "PASS" msgstr "" -#: templates/js/translated/stock.js:785 +#: templates/js/translated/stock.js:867 msgid "FAIL" msgstr "" -#: templates/js/translated/stock.js:790 +#: templates/js/translated/stock.js:872 msgid "NO RESULT" msgstr "" -#: templates/js/translated/stock.js:812 +#: templates/js/translated/stock.js:894 msgid "Add test result" msgstr "" -#: templates/js/translated/stock.js:838 +#: templates/js/translated/stock.js:920 msgid "No test results found" msgstr "" -#: templates/js/translated/stock.js:895 +#: templates/js/translated/stock.js:977 msgid "Test Date" msgstr "" -#: templates/js/translated/stock.js:1002 +#: templates/js/translated/stock.js:1084 msgid "In production" msgstr "" -#: templates/js/translated/stock.js:1006 +#: templates/js/translated/stock.js:1088 msgid "Installed in Stock Item" msgstr "" -#: templates/js/translated/stock.js:1010 +#: templates/js/translated/stock.js:1092 msgid "Shipped to customer" msgstr "" -#: templates/js/translated/stock.js:1014 +#: templates/js/translated/stock.js:1096 msgid "Assigned to Sales Order" msgstr "" -#: templates/js/translated/stock.js:1020 +#: templates/js/translated/stock.js:1102 msgid "No stock location set" msgstr "" -#: templates/js/translated/stock.js:1178 +#: templates/js/translated/stock.js:1260 msgid "Stock item is in production" msgstr "" -#: templates/js/translated/stock.js:1183 +#: templates/js/translated/stock.js:1265 msgid "Stock item assigned to sales order" msgstr "" -#: templates/js/translated/stock.js:1186 +#: templates/js/translated/stock.js:1268 msgid "Stock item assigned to customer" msgstr "" -#: templates/js/translated/stock.js:1190 +#: templates/js/translated/stock.js:1272 msgid "Stock item has expired" msgstr "" -#: templates/js/translated/stock.js:1192 +#: templates/js/translated/stock.js:1274 msgid "Stock item will expire soon" msgstr "" -#: templates/js/translated/stock.js:1196 +#: templates/js/translated/stock.js:1278 msgid "Stock item has been allocated" msgstr "" -#: templates/js/translated/stock.js:1200 +#: templates/js/translated/stock.js:1282 msgid "Stock item has been installed in another item" msgstr "" -#: templates/js/translated/stock.js:1207 +#: templates/js/translated/stock.js:1289 msgid "Stock item has been rejected" msgstr "" -#: templates/js/translated/stock.js:1209 +#: templates/js/translated/stock.js:1291 msgid "Stock item is lost" msgstr "" -#: templates/js/translated/stock.js:1211 +#: templates/js/translated/stock.js:1293 msgid "Stock item is destroyed" msgstr "" -#: templates/js/translated/stock.js:1215 +#: templates/js/translated/stock.js:1297 #: templates/js/translated/table_filters.js:183 msgid "Depleted" msgstr "" -#: templates/js/translated/stock.js:1265 +#: templates/js/translated/stock.js:1347 msgid "Stocktake" msgstr "" -#: templates/js/translated/stock.js:1338 +#: templates/js/translated/stock.js:1420 msgid "Supplier part not specified" msgstr "" -#: templates/js/translated/stock.js:1376 +#: templates/js/translated/stock.js:1458 msgid "No stock items matching query" msgstr "" -#: templates/js/translated/stock.js:1397 templates/js/translated/stock.js:1445 +#: templates/js/translated/stock.js:1479 templates/js/translated/stock.js:1527 msgid "items" msgstr "" -#: templates/js/translated/stock.js:1485 +#: templates/js/translated/stock.js:1567 msgid "batches" msgstr "" -#: templates/js/translated/stock.js:1512 +#: templates/js/translated/stock.js:1594 msgid "locations" msgstr "" -#: templates/js/translated/stock.js:1514 +#: templates/js/translated/stock.js:1596 msgid "Undefined location" msgstr "" -#: templates/js/translated/stock.js:1688 +#: templates/js/translated/stock.js:1770 msgid "Set Stock Status" msgstr "" -#: templates/js/translated/stock.js:1702 +#: templates/js/translated/stock.js:1784 msgid "Select Status Code" msgstr "" -#: templates/js/translated/stock.js:1703 +#: templates/js/translated/stock.js:1785 msgid "Status code must be selected" msgstr "" -#: templates/js/translated/stock.js:1927 +#: templates/js/translated/stock.js:2009 msgid "Invalid date" msgstr "" -#: templates/js/translated/stock.js:1974 +#: templates/js/translated/stock.js:2031 +msgid "Details" +msgstr "Szczegóły" + +#: templates/js/translated/stock.js:2056 msgid "Location no longer exists" msgstr "" -#: templates/js/translated/stock.js:1993 +#: templates/js/translated/stock.js:2075 msgid "Purchase order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2012 +#: templates/js/translated/stock.js:2094 msgid "Customer no longer exists" msgstr "" -#: templates/js/translated/stock.js:2030 +#: templates/js/translated/stock.js:2112 msgid "Stock item no longer exists" msgstr "" -#: templates/js/translated/stock.js:2053 +#: templates/js/translated/stock.js:2135 msgid "Added" msgstr "Dodano" -#: templates/js/translated/stock.js:2061 +#: templates/js/translated/stock.js:2143 msgid "Removed" msgstr "" -#: templates/js/translated/stock.js:2102 +#: templates/js/translated/stock.js:2184 msgid "Edit tracking entry" msgstr "" -#: templates/js/translated/stock.js:2103 +#: templates/js/translated/stock.js:2185 msgid "Delete tracking entry" msgstr "" -#: templates/js/translated/stock.js:2154 +#: templates/js/translated/stock.js:2236 msgid "No installed items" msgstr "" -#: templates/js/translated/stock.js:2205 +#: templates/js/translated/stock.js:2287 msgid "Uninstall Stock Item" msgstr "" diff --git a/InvenTree/locale/pt/LC_MESSAGES/django.po b/InvenTree/locale/pt/LC_MESSAGES/django.po index 61da5feab6..03d5295103 100644 --- a/InvenTree/locale/pt/LC_MESSAGES/django.po +++ b/InvenTree/locale/pt/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-11-30 21:49+0000\n" -"PO-Revision-Date: 2021-11-30 21:51\n" +"POT-Creation-Date: 2021-12-03 10:37+0000\n" +"PO-Revision-Date: 2021-12-03 11:25\n" "Last-Translator: \n" "Language-Team: Portuguese\n" "Language: pt_PT\n" @@ -114,129 +114,130 @@ msgstr "" msgid "Number of unique serial number ({s}) must match quantity ({q})" msgstr "" -#: InvenTree/models.py:114 +#: InvenTree/models.py:120 msgid "Missing file" msgstr "" -#: InvenTree/models.py:115 +#: InvenTree/models.py:121 msgid "Missing external link" msgstr "" -#: InvenTree/models.py:126 stock/models.py:1874 +#: InvenTree/models.py:132 stock/models.py:1864 #: templates/js/translated/attachment.js:117 msgid "Attachment" msgstr "" -#: InvenTree/models.py:127 +#: InvenTree/models.py:133 msgid "Select file to attach" msgstr "" -#: InvenTree/models.py:133 company/models.py:131 company/models.py:348 +#: InvenTree/models.py:139 company/models.py:131 company/models.py:348 #: company/models.py:564 order/models.py:163 part/models.py:797 #: report/templates/report/inventree_build_order_base.html:165 #: templates/js/translated/company.js:537 -#: templates/js/translated/company.js:826 templates/js/translated/part.js:1077 +#: templates/js/translated/company.js:826 templates/js/translated/part.js:1258 msgid "Link" msgstr "" -#: InvenTree/models.py:134 build/models.py:330 part/models.py:798 -#: stock/models.py:540 +#: InvenTree/models.py:140 build/models.py:330 part/models.py:798 +#: stock/models.py:530 msgid "Link to external URL" msgstr "" -#: InvenTree/models.py:137 templates/js/translated/attachment.js:161 +#: InvenTree/models.py:143 templates/js/translated/attachment.js:161 msgid "Comment" msgstr "" -#: InvenTree/models.py:137 +#: InvenTree/models.py:143 msgid "File comment" msgstr "" -#: InvenTree/models.py:143 InvenTree/models.py:144 common/models.py:1185 +#: InvenTree/models.py:149 InvenTree/models.py:150 common/models.py:1185 #: common/models.py:1186 part/models.py:2205 part/models.py:2225 #: report/templates/report/inventree_test_report_base.html:96 -#: templates/js/translated/stock.js:2084 +#: templates/js/translated/stock.js:2166 msgid "User" msgstr "" -#: InvenTree/models.py:147 +#: InvenTree/models.py:153 msgid "upload date" msgstr "" -#: InvenTree/models.py:170 +#: InvenTree/models.py:176 msgid "Filename must not be empty" msgstr "" -#: InvenTree/models.py:193 +#: InvenTree/models.py:199 msgid "Invalid attachment directory" msgstr "" -#: InvenTree/models.py:203 +#: InvenTree/models.py:209 #, python-brace-format msgid "Filename contains illegal character '{c}'" msgstr "" -#: InvenTree/models.py:206 +#: InvenTree/models.py:212 msgid "Filename missing extension" msgstr "" -#: InvenTree/models.py:213 +#: InvenTree/models.py:219 msgid "Attachment with this filename already exists" msgstr "" -#: InvenTree/models.py:220 +#: InvenTree/models.py:226 msgid "Error renaming file" msgstr "" -#: InvenTree/models.py:255 +#: InvenTree/models.py:261 msgid "Invalid choice" msgstr "" -#: InvenTree/models.py:271 InvenTree/models.py:272 company/models.py:415 +#: InvenTree/models.py:277 InvenTree/models.py:278 company/models.py:415 #: label/models.py:112 part/models.py:741 part/models.py:2389 -#: part/templates/part/detail.html:25 report/models.py:181 -#: templates/InvenTree/settings/settings.html:259 -#: templates/js/translated/company.js:638 templates/js/translated/part.js:499 -#: templates/js/translated/part.js:636 templates/js/translated/part.js:1384 -#: templates/js/translated/stock.js:1877 +#: report/models.py:181 templates/InvenTree/settings/settings.html:259 +#: templates/js/translated/company.js:638 templates/js/translated/part.js:506 +#: templates/js/translated/part.js:643 templates/js/translated/part.js:1565 +#: templates/js/translated/stock.js:1959 msgid "Name" msgstr "" -#: InvenTree/models.py:278 build/models.py:207 +#: InvenTree/models.py:284 build/models.py:207 #: build/templates/build/detail.html:25 company/models.py:354 -#: company/models.py:570 company/templates/company/manufacturer_part.html:80 -#: company/templates/company/supplier_part.html:81 label/models.py:119 -#: order/models.py:161 part/models.py:764 part/templates/part/detail.html:30 +#: company/models.py:570 company/templates/company/company_base.html:68 +#: company/templates/company/manufacturer_part.html:76 +#: company/templates/company/supplier_part.html:73 label/models.py:119 +#: order/models.py:161 part/models.py:764 part/templates/part/category.html:70 +#: part/templates/part/part_base.html:163 #: part/templates/part/set_category.html:14 report/models.py:194 #: report/models.py:553 report/models.py:592 #: report/templates/report/inventree_build_order_base.html:118 -#: stock/templates/stock/location.html:108 templates/js/translated/bom.js:215 +#: stock/templates/stock/location.html:89 templates/js/translated/bom.js:215 #: templates/js/translated/bom.js:428 templates/js/translated/build.js:1621 #: templates/js/translated/company.js:345 #: templates/js/translated/company.js:548 -#: templates/js/translated/company.js:837 templates/js/translated/order.js:673 -#: templates/js/translated/order.js:855 templates/js/translated/order.js:1091 -#: templates/js/translated/part.js:558 templates/js/translated/part.js:752 -#: templates/js/translated/part.js:837 templates/js/translated/part.js:1007 -#: templates/js/translated/part.js:1403 templates/js/translated/part.js:1472 -#: templates/js/translated/stock.js:1151 templates/js/translated/stock.js:1889 -#: templates/js/translated/stock.js:1934 +#: templates/js/translated/company.js:837 templates/js/translated/order.js:680 +#: templates/js/translated/order.js:854 templates/js/translated/order.js:1090 +#: templates/js/translated/part.js:565 templates/js/translated/part.js:933 +#: templates/js/translated/part.js:1018 templates/js/translated/part.js:1188 +#: templates/js/translated/part.js:1584 templates/js/translated/part.js:1653 +#: templates/js/translated/stock.js:1233 templates/js/translated/stock.js:1971 +#: templates/js/translated/stock.js:2016 msgid "Description" msgstr "" -#: InvenTree/models.py:279 +#: InvenTree/models.py:285 msgid "Description (optional)" msgstr "" -#: InvenTree/models.py:287 +#: InvenTree/models.py:293 msgid "parent" msgstr "" -#: InvenTree/serializers.py:62 part/models.py:2674 +#: InvenTree/serializers.py:65 part/models.py:2674 msgid "Must be a valid number" msgstr "" -#: InvenTree/serializers.py:285 +#: InvenTree/serializers.py:299 msgid "Filename" msgstr "" @@ -361,7 +362,7 @@ msgid "Returned" msgstr "" #: InvenTree/status_codes.py:143 -#: order/templates/order/sales_order_base.html:147 +#: order/templates/order/sales_order_base.html:148 msgid "Shipped" msgstr "" @@ -566,7 +567,7 @@ msgid "Barcode associated with StockItem" msgstr "" #: build/forms.py:36 build/models.py:1283 -#: build/templates/build/build_base.html:124 +#: build/templates/build/build_base.html:132 #: build/templates/build/detail.html:35 common/models.py:1225 #: company/forms.py:42 company/templates/company/supplier_part.html:251 #: order/forms.py:102 order/models.py:729 order/models.py:991 @@ -574,26 +575,27 @@ msgstr "" #: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:223 #: part/forms.py:239 part/forms.py:255 part/models.py:2576 #: part/templates/part/bom_upload/match_parts.html:31 -#: part/templates/part/detail.html:1076 part/templates/part/detail.html:1162 +#: part/templates/part/detail.html:967 part/templates/part/detail.html:1053 #: part/templates/part/part_pricing.html:16 #: report/templates/report/inventree_build_order_base.html:114 #: report/templates/report/inventree_po_report.html:91 #: report/templates/report/inventree_so_report.html:91 #: report/templates/report/inventree_test_report_base.html:81 #: report/templates/report/inventree_test_report_base.html:139 -#: stock/forms.py:156 stock/serializers.py:286 -#: stock/templates/stock/item_base.html:256 +#: stock/forms.py:156 stock/serializers.py:291 +#: stock/templates/stock/item_base.html:174 #: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:443 #: templates/js/translated/build.js:235 templates/js/translated/build.js:435 #: templates/js/translated/build.js:629 templates/js/translated/build.js:639 #: templates/js/translated/build.js:1015 templates/js/translated/build.js:1362 #: templates/js/translated/model_renderers.js:99 -#: templates/js/translated/order.js:892 templates/js/translated/order.js:1205 -#: templates/js/translated/order.js:1283 templates/js/translated/order.js:1290 -#: templates/js/translated/order.js:1379 templates/js/translated/order.js:1479 -#: templates/js/translated/part.js:1615 templates/js/translated/part.js:1738 -#: templates/js/translated/part.js:1816 templates/js/translated/stock.js:377 -#: templates/js/translated/stock.js:2069 templates/js/translated/stock.js:2171 +#: templates/js/translated/order.js:891 templates/js/translated/order.js:1204 +#: templates/js/translated/order.js:1282 templates/js/translated/order.js:1289 +#: templates/js/translated/order.js:1378 templates/js/translated/order.js:1478 +#: templates/js/translated/part.js:843 templates/js/translated/part.js:1796 +#: templates/js/translated/part.js:1919 templates/js/translated/part.js:1997 +#: templates/js/translated/stock.js:378 templates/js/translated/stock.js:2151 +#: templates/js/translated/stock.js:2253 msgid "Quantity" msgstr "" @@ -602,8 +604,8 @@ msgid "Enter quantity for build output" msgstr "" #: build/forms.py:41 order/forms.py:96 stock/forms.py:95 -#: stock/serializers.py:307 templates/js/translated/stock.js:224 -#: templates/js/translated/stock.js:378 +#: stock/serializers.py:312 templates/js/translated/stock.js:225 +#: templates/js/translated/stock.js:379 msgid "Serial Numbers" msgstr "" @@ -646,7 +648,7 @@ msgstr "" #: build/templates/build/index.html:8 build/templates/build/index.html:12 #: order/templates/order/sales_order_detail.html:42 #: order/templates/order/so_sidebar.html:7 -#: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:221 +#: part/templates/part/part_sidebar.html:20 templates/InvenTree/index.html:221 #: templates/InvenTree/search.html:145 #: templates/InvenTree/settings/sidebar.html:42 users/models.py:44 msgid "Build Orders" @@ -662,7 +664,7 @@ msgstr "" #: report/templates/report/inventree_po_report.html:92 #: report/templates/report/inventree_so_report.html:92 #: templates/js/translated/bom.js:435 templates/js/translated/build.js:1119 -#: templates/js/translated/order.js:886 templates/js/translated/order.js:1473 +#: templates/js/translated/order.js:885 templates/js/translated/order.js:1472 msgid "Reference" msgstr "" @@ -670,7 +672,7 @@ msgstr "" msgid "Brief description of the build" msgstr "" -#: build/models.py:219 build/templates/build/build_base.html:156 +#: build/models.py:219 build/templates/build/build_base.html:164 #: build/templates/build/detail.html:88 msgid "Parent Build" msgstr "" @@ -679,7 +681,7 @@ msgstr "" msgid "BuildOrder to which this build is allocated" msgstr "" -#: build/models.py:225 build/templates/build/build_base.html:119 +#: build/models.py:225 build/templates/build/build_base.html:77 #: build/templates/build/detail.html:30 company/models.py:705 #: order/models.py:789 order/models.py:860 #: order/templates/order/order_wizard/select_parts.html:32 part/models.py:357 @@ -700,10 +702,10 @@ msgstr "" #: templates/js/translated/build.js:988 templates/js/translated/build.js:1359 #: templates/js/translated/build.js:1626 templates/js/translated/company.js:489 #: templates/js/translated/company.js:746 templates/js/translated/order.js:426 -#: templates/js/translated/order.js:840 templates/js/translated/order.js:1457 -#: templates/js/translated/part.js:737 templates/js/translated/part.js:818 -#: templates/js/translated/part.js:985 templates/js/translated/stock.js:508 -#: templates/js/translated/stock.js:1108 templates/js/translated/stock.js:2159 +#: templates/js/translated/order.js:839 templates/js/translated/order.js:1456 +#: templates/js/translated/part.js:918 templates/js/translated/part.js:999 +#: templates/js/translated/part.js:1166 templates/js/translated/stock.js:590 +#: templates/js/translated/stock.js:1190 templates/js/translated/stock.js:2241 msgid "Part" msgstr "" @@ -751,7 +753,7 @@ msgstr "" msgid "Number of stock items which have been completed" msgstr "" -#: build/models.py:277 part/templates/part/part_base.html:216 +#: build/models.py:277 part/templates/part/part_base.html:234 msgid "Build Status" msgstr "" @@ -759,7 +761,7 @@ msgstr "" msgid "Build status code" msgstr "" -#: build/models.py:285 stock/models.py:544 +#: build/models.py:285 stock/models.py:534 msgid "Batch Code" msgstr "" @@ -768,7 +770,7 @@ msgid "Batch code for this build output" msgstr "" #: build/models.py:292 order/models.py:165 part/models.py:936 -#: part/templates/part/detail.html:86 templates/js/translated/order.js:1104 +#: part/templates/part/part_base.html:313 templates/js/translated/order.js:1103 msgid "Creation Date" msgstr "" @@ -797,12 +799,12 @@ msgstr "" msgid "User who issued this build order" msgstr "" -#: build/models.py:323 build/templates/build/build_base.html:177 +#: build/models.py:323 build/templates/build/build_base.html:185 #: build/templates/build/detail.html:116 order/models.py:179 -#: order/templates/order/order_base.html:154 -#: order/templates/order/sales_order_base.html:161 part/models.py:940 +#: order/templates/order/order_base.html:158 +#: order/templates/order/sales_order_base.html:162 part/models.py:940 #: report/templates/report/inventree_build_order_base.html:159 -#: templates/js/translated/build.js:1680 templates/js/translated/order.js:700 +#: templates/js/translated/build.js:1680 templates/js/translated/order.js:699 msgid "Responsible" msgstr "" @@ -811,10 +813,10 @@ msgid "User responsible for this build order" msgstr "" #: build/models.py:329 build/templates/build/detail.html:102 -#: company/templates/company/manufacturer_part.html:87 -#: company/templates/company/supplier_part.html:88 -#: part/templates/part/detail.html:80 stock/models.py:538 -#: stock/templates/stock/item_base.html:346 +#: company/templates/company/manufacturer_part.html:102 +#: company/templates/company/supplier_part.html:126 +#: part/templates/part/part_base.html:354 stock/models.py:528 +#: stock/templates/stock/item_base.html:374 msgid "External Link" msgstr "" @@ -824,15 +826,15 @@ msgstr "" #: order/models.py:183 order/models.py:738 #: order/templates/order/po_sidebar.html:11 #: order/templates/order/so_sidebar.html:11 part/models.py:925 -#: part/templates/part/detail.html:223 part/templates/part/part_sidebar.html:52 +#: part/templates/part/detail.html:116 part/templates/part/part_sidebar.html:50 #: report/templates/report/inventree_build_order_base.html:173 -#: stock/forms.py:154 stock/forms.py:204 stock/forms.py:238 stock/models.py:610 -#: stock/models.py:1774 stock/models.py:1880 stock/serializers.py:325 -#: stock/serializers.py:583 stock/templates/stock/stock_sidebar.html:21 +#: stock/forms.py:154 stock/forms.py:204 stock/forms.py:238 stock/models.py:600 +#: stock/models.py:1764 stock/models.py:1870 stock/serializers.py:330 +#: stock/serializers.py:588 stock/templates/stock/stock_sidebar.html:21 #: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:599 -#: templates/js/translated/company.js:842 templates/js/translated/order.js:985 -#: templates/js/translated/order.js:1583 templates/js/translated/stock.js:891 -#: templates/js/translated/stock.js:1370 +#: templates/js/translated/company.js:842 templates/js/translated/order.js:984 +#: templates/js/translated/order.js:1582 templates/js/translated/stock.js:973 +#: templates/js/translated/stock.js:1452 msgid "Notes" msgstr "" @@ -877,7 +879,7 @@ msgstr "" msgid "Selected stock item not found in BOM" msgstr "" -#: build/models.py:1253 stock/templates/stock/item_base.html:318 +#: build/models.py:1253 stock/templates/stock/item_base.html:346 #: templates/InvenTree/search.html:143 templates/js/translated/build.js:1599 #: templates/navbar.html:33 msgid "Build" @@ -890,11 +892,11 @@ msgstr "" #: build/models.py:1270 build/serializers.py:328 #: stock/templates/stock/item_base.html:8 #: stock/templates/stock/item_base.html:16 -#: stock/templates/stock/item_base.html:340 +#: stock/templates/stock/item_base.html:368 #: templates/js/translated/build.js:408 templates/js/translated/build.js:413 #: templates/js/translated/build.js:1361 templates/js/translated/build.js:1742 -#: templates/js/translated/order.js:1178 templates/js/translated/order.js:1183 -#: templates/js/translated/stock.js:2020 +#: templates/js/translated/order.js:1177 templates/js/translated/order.js:1182 +#: templates/js/translated/stock.js:2102 msgid "Stock Item" msgstr "" @@ -934,16 +936,16 @@ msgstr "" msgid "This build output is not fully allocated" msgstr "" -#: build/serializers.py:190 order/serializers.py:219 order/serializers.py:287 -#: stock/forms.py:236 stock/serializers.py:318 stock/serializers.py:685 -#: stock/templates/stock/item_base.html:286 +#: build/serializers.py:190 order/serializers.py:228 order/serializers.py:296 +#: stock/forms.py:236 stock/serializers.py:323 stock/serializers.py:690 +#: stock/templates/stock/item_base.html:314 #: templates/js/translated/barcode.js:384 #: templates/js/translated/barcode.js:557 templates/js/translated/build.js:420 #: templates/js/translated/build.js:1027 templates/js/translated/order.js:348 -#: templates/js/translated/order.js:1190 templates/js/translated/order.js:1298 -#: templates/js/translated/order.js:1304 templates/js/translated/part.js:181 -#: templates/js/translated/stock.js:510 templates/js/translated/stock.js:1251 -#: templates/js/translated/stock.js:1961 +#: templates/js/translated/order.js:1189 templates/js/translated/order.js:1297 +#: templates/js/translated/order.js:1303 templates/js/translated/part.js:177 +#: templates/js/translated/stock.js:592 templates/js/translated/stock.js:1333 +#: templates/js/translated/stock.js:2043 msgid "Location" msgstr "" @@ -951,13 +953,13 @@ msgstr "" msgid "Location for completed build outputs" msgstr "" -#: build/serializers.py:197 build/templates/build/build_base.html:129 +#: build/serializers.py:197 build/templates/build/build_base.html:137 #: build/templates/build/detail.html:63 order/models.py:572 -#: order/serializers.py:240 stock/templates/stock/item_base.html:409 +#: order/serializers.py:249 stock/templates/stock/item_base.html:180 #: templates/js/translated/barcode.js:140 templates/js/translated/build.js:1655 -#: templates/js/translated/order.js:431 templates/js/translated/order.js:677 -#: templates/js/translated/order.js:1096 templates/js/translated/stock.js:1226 -#: templates/js/translated/stock.js:2038 templates/js/translated/stock.js:2187 +#: templates/js/translated/order.js:431 templates/js/translated/order.js:1095 +#: templates/js/translated/stock.js:1308 templates/js/translated/stock.js:2120 +#: templates/js/translated/stock.js:2269 msgid "Status" msgstr "" @@ -986,8 +988,8 @@ msgstr "" msgid "Item must be in stock" msgstr "" -#: build/serializers.py:348 order/models.py:316 order/serializers.py:233 -#: stock/models.py:381 stock/models.py:1103 stock/serializers.py:298 +#: build/serializers.py:348 order/models.py:316 order/serializers.py:242 +#: stock/models.py:371 stock/models.py:1093 stock/serializers.py:303 msgid "Quantity must be greater than zero" msgstr "" @@ -1031,7 +1033,7 @@ msgid "Edit Build" msgstr "" #: build/templates/build/build_base.html:56 -#: build/templates/build/build_base.html:207 build/views.py:56 +#: build/templates/build/build_base.html:215 build/views.py:56 msgid "Cancel Build" msgstr "" @@ -1041,93 +1043,95 @@ msgstr "" #: build/templates/build/build_base.html:64 #: build/templates/build/build_base.html:65 -#: build/templates/build/build_base.html:223 +#: build/templates/build/build_base.html:231 msgid "Complete Build" msgstr "" -#: build/templates/build/build_base.html:79 +#: build/templates/build/build_base.html:82 +msgid "Build Description" +msgstr "" + +#: build/templates/build/build_base.html:91 #, python-format msgid "This Build Order is allocated to Sales Order %(link)s" msgstr "" -#: build/templates/build/build_base.html:86 +#: build/templates/build/build_base.html:98 #, python-format msgid "This Build Order is a child of Build Order %(link)s" msgstr "" -#: build/templates/build/build_base.html:93 +#: build/templates/build/build_base.html:105 msgid "Build Order is ready to mark as completed" msgstr "" -#: build/templates/build/build_base.html:98 +#: build/templates/build/build_base.html:110 msgid "Build Order cannot be completed as outstanding outputs remain" msgstr "" -#: build/templates/build/build_base.html:103 +#: build/templates/build/build_base.html:115 msgid "Required build quantity has not yet been completed" msgstr "" -#: build/templates/build/build_base.html:108 +#: build/templates/build/build_base.html:120 msgid "Stock has not been fully allocated to this Build Order" msgstr "" -#: build/templates/build/build_base.html:138 +#: build/templates/build/build_base.html:146 #: build/templates/build/detail.html:132 -#: order/templates/order/order_base.html:140 -#: order/templates/order/sales_order_base.html:140 +#: order/templates/order/order_base.html:144 +#: order/templates/order/sales_order_base.html:141 #: report/templates/report/inventree_build_order_base.html:126 -#: templates/js/translated/build.js:1692 templates/js/translated/order.js:690 -#: templates/js/translated/order.js:1109 +#: templates/js/translated/build.js:1692 templates/js/translated/order.js:689 +#: templates/js/translated/order.js:1108 msgid "Target Date" msgstr "" -#: build/templates/build/build_base.html:143 +#: build/templates/build/build_base.html:151 #, python-format msgid "This build was due on %(target)s" msgstr "" -#: build/templates/build/build_base.html:143 -#: build/templates/build/build_base.html:188 -#: order/templates/order/order_base.html:81 -#: order/templates/order/order_base.html:102 -#: order/templates/order/sales_order_base.html:78 -#: order/templates/order/sales_order_base.html:107 +#: build/templates/build/build_base.html:151 +#: build/templates/build/build_base.html:196 +#: order/templates/order/order_base.html:98 +#: order/templates/order/sales_order_base.html:93 #: templates/js/translated/table_filters.js:294 #: templates/js/translated/table_filters.js:322 #: templates/js/translated/table_filters.js:339 msgid "Overdue" msgstr "" -#: build/templates/build/build_base.html:150 +#: build/templates/build/build_base.html:158 #: build/templates/build/detail.html:68 build/templates/build/detail.html:143 #: templates/js/translated/build.js:1641 #: templates/js/translated/table_filters.js:304 msgid "Completed" msgstr "" -#: build/templates/build/build_base.html:163 +#: build/templates/build/build_base.html:171 #: build/templates/build/detail.html:95 order/models.py:857 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: order/templates/order/sales_order_ship.html:25 #: report/templates/report/inventree_build_order_base.html:136 #: report/templates/report/inventree_so_report.html:77 -#: stock/templates/stock/item_base.html:280 -#: templates/js/translated/order.js:1051 +#: stock/templates/stock/item_base.html:308 +#: templates/js/translated/order.js:1050 msgid "Sales Order" msgstr "" -#: build/templates/build/build_base.html:170 +#: build/templates/build/build_base.html:178 #: build/templates/build/detail.html:109 #: report/templates/report/inventree_build_order_base.html:153 msgid "Issued By" msgstr "" -#: build/templates/build/build_base.html:215 +#: build/templates/build/build_base.html:223 msgid "Incomplete Outputs" msgstr "" -#: build/templates/build/build_base.html:216 +#: build/templates/build/build_base.html:224 msgid "Build Order cannot be completed as incomplete build outputs remain" msgstr "" @@ -1188,7 +1192,7 @@ msgid "Stock can be taken from any available location." msgstr "" #: build/templates/build/detail.html:50 order/models.py:811 stock/forms.py:150 -#: templates/js/translated/order.js:432 templates/js/translated/order.js:974 +#: templates/js/translated/order.js:432 templates/js/translated/order.js:973 msgid "Destination" msgstr "" @@ -1201,16 +1205,16 @@ msgid "Allocated Parts" msgstr "" #: build/templates/build/detail.html:81 -#: stock/templates/stock/item_base.html:304 -#: templates/js/translated/stock.js:1240 templates/js/translated/stock.js:2194 +#: stock/templates/stock/item_base.html:332 +#: templates/js/translated/stock.js:1322 templates/js/translated/stock.js:2276 #: templates/js/translated/table_filters.js:151 #: templates/js/translated/table_filters.js:233 msgid "Batch" msgstr "" #: build/templates/build/detail.html:127 -#: order/templates/order/order_base.html:127 -#: order/templates/order/sales_order_base.html:134 +#: order/templates/order/order_base.html:131 +#: order/templates/order/sales_order_base.html:135 #: templates/js/translated/build.js:1663 msgid "Created" msgstr "" @@ -1254,7 +1258,7 @@ msgstr "" #: build/templates/build/detail.html:185 #: company/templates/company/detail.html:38 #: company/templates/company/detail.html:85 order/views.py:509 -#: part/templates/part/category.html:166 +#: part/templates/part/category.html:173 msgid "Order Parts" msgstr "" @@ -1306,8 +1310,8 @@ msgstr "" #: order/templates/order/po_sidebar.html:9 #: order/templates/order/purchase_order_detail.html:60 #: order/templates/order/sales_order_detail.html:52 -#: order/templates/order/so_sidebar.html:9 part/templates/part/detail.html:300 -#: part/templates/part/part_sidebar.html:50 stock/templates/stock/item.html:95 +#: order/templates/order/so_sidebar.html:9 part/templates/part/detail.html:193 +#: part/templates/part/part_sidebar.html:48 stock/templates/stock/item.html:95 #: stock/templates/stock/stock_sidebar.html:19 msgid "Attachments" msgstr "" @@ -1323,7 +1327,7 @@ msgstr "" #: order/templates/order/purchase_order_detail.html:108 #: order/templates/order/sales_order_detail.html:72 #: order/templates/order/sales_order_detail.html:99 -#: part/templates/part/detail.html:227 stock/templates/stock/item.html:115 +#: part/templates/part/detail.html:120 stock/templates/stock/item.html:115 #: stock/templates/stock/item.html:205 msgid "Edit Notes" msgstr "" @@ -1336,7 +1340,7 @@ msgstr "" msgid "All untracked stock items have been allocated" msgstr "" -#: build/templates/build/index.html:18 part/templates/part/detail.html:407 +#: build/templates/build/index.html:18 part/templates/part/detail.html:300 msgid "New Build Order" msgstr "" @@ -1380,7 +1384,7 @@ msgstr "" msgid "Maximum output quantity is " msgstr "" -#: build/views.py:122 stock/serializers.py:356 stock/views.py:1290 +#: build/views.py:122 stock/serializers.py:361 stock/views.py:1290 msgid "Serial numbers already exist" msgstr "" @@ -1675,7 +1679,7 @@ msgid "Parts are trackable by default" msgstr "" #: common/models.py:745 part/models.py:920 -#: part/templates/part/part_base.html:144 +#: part/templates/part/part_base.html:147 #: templates/js/translated/table_filters.js:42 msgid "Virtual" msgstr "" @@ -2142,7 +2146,7 @@ msgstr "" #: common/models.py:1233 company/serializers.py:264 #: company/templates/company/supplier_part.html:256 -#: templates/js/translated/part.js:1620 +#: templates/js/translated/part.js:852 templates/js/translated/part.js:1801 msgid "Price" msgstr "" @@ -2206,7 +2210,7 @@ msgstr "" msgid "Description of the company" msgstr "" -#: company/models.py:112 company/templates/company/company_base.html:70 +#: company/models.py:112 company/templates/company/company_base.html:97 #: templates/js/translated/company.js:349 msgid "Website" msgstr "" @@ -2215,7 +2219,7 @@ msgstr "" msgid "Company website URL" msgstr "" -#: company/models.py:117 company/templates/company/company_base.html:88 +#: company/models.py:117 company/templates/company/company_base.html:115 msgid "Address" msgstr "" @@ -2231,7 +2235,7 @@ msgstr "" msgid "Contact phone number" msgstr "" -#: company/models.py:125 company/templates/company/company_base.html:102 +#: company/models.py:125 company/templates/company/company_base.html:129 #: templates/InvenTree/settings/user.html:47 msgid "Email" msgstr "" @@ -2240,7 +2244,7 @@ msgstr "" msgid "Contact email address" msgstr "" -#: company/models.py:128 company/templates/company/company_base.html:109 +#: company/models.py:128 company/templates/company/company_base.html:136 msgid "Contact" msgstr "" @@ -2281,7 +2285,7 @@ msgid "Does this company manufacture parts?" msgstr "" #: company/models.py:152 company/serializers.py:270 -#: company/templates/company/company_base.html:76 stock/serializers.py:172 +#: company/templates/company/company_base.html:103 stock/serializers.py:177 msgid "Currency" msgstr "" @@ -2289,8 +2293,8 @@ msgstr "" msgid "Default currency used for this company" msgstr "" -#: company/models.py:320 company/models.py:535 stock/models.py:484 -#: stock/templates/stock/item_base.html:224 +#: company/models.py:320 company/models.py:535 stock/models.py:474 +#: stock/templates/stock/item_base.html:135 msgid "Base Part" msgstr "" @@ -2298,29 +2302,29 @@ msgstr "" msgid "Select part" msgstr "" -#: company/models.py:335 company/templates/company/company_base.html:116 -#: company/templates/company/manufacturer_part.html:93 -#: company/templates/company/supplier_part.html:104 -#: stock/templates/stock/item_base.html:353 +#: company/models.py:335 company/templates/company/company_base.html:73 +#: company/templates/company/manufacturer_part.html:91 +#: company/templates/company/supplier_part.html:97 +#: stock/templates/stock/item_base.html:381 #: templates/js/translated/company.js:333 #: templates/js/translated/company.js:514 -#: templates/js/translated/company.js:797 templates/js/translated/part.js:229 +#: templates/js/translated/company.js:797 templates/js/translated/part.js:232 msgid "Manufacturer" msgstr "" -#: company/models.py:336 templates/js/translated/part.js:230 +#: company/models.py:336 templates/js/translated/part.js:233 msgid "Select manufacturer" msgstr "" -#: company/models.py:342 company/templates/company/manufacturer_part.html:97 -#: company/templates/company/supplier_part.html:112 +#: company/models.py:342 company/templates/company/manufacturer_part.html:96 +#: company/templates/company/supplier_part.html:105 #: templates/js/translated/company.js:530 -#: templates/js/translated/company.js:815 templates/js/translated/order.js:874 -#: templates/js/translated/part.js:240 +#: templates/js/translated/company.js:815 templates/js/translated/order.js:873 +#: templates/js/translated/part.js:243 templates/js/translated/part.js:832 msgid "MPN" msgstr "" -#: company/models.py:343 templates/js/translated/part.js:241 +#: company/models.py:343 templates/js/translated/part.js:244 msgid "Manufacturer Part Number" msgstr "" @@ -2335,7 +2339,7 @@ msgstr "" #: company/models.py:409 company/models.py:558 #: company/templates/company/manufacturer_part.html:6 #: company/templates/company/manufacturer_part.html:23 -#: stock/templates/stock/item_base.html:363 +#: stock/templates/stock/item_base.html:391 msgid "Manufacturer Part" msgstr "" @@ -2345,8 +2349,8 @@ msgstr "" #: company/models.py:422 #: report/templates/report/inventree_test_report_base.html:95 -#: stock/models.py:1867 templates/js/translated/company.js:644 -#: templates/js/translated/part.js:645 templates/js/translated/stock.js:878 +#: stock/models.py:1857 templates/js/translated/company.js:644 +#: templates/js/translated/part.js:652 templates/js/translated/stock.js:960 msgid "Value" msgstr "" @@ -2355,9 +2359,9 @@ msgid "Parameter value" msgstr "" #: company/models.py:429 part/models.py:882 part/models.py:2397 -#: part/templates/part/detail.html:59 +#: part/templates/part/part_base.html:288 #: templates/InvenTree/settings/settings.html:264 -#: templates/js/translated/company.js:650 templates/js/translated/part.js:651 +#: templates/js/translated/company.js:650 templates/js/translated/part.js:658 msgid "Units" msgstr "" @@ -2369,28 +2373,28 @@ msgstr "" msgid "Linked manufacturer part must reference the same base part" msgstr "" -#: company/models.py:545 company/templates/company/company_base.html:121 -#: company/templates/company/supplier_part.html:94 order/models.py:263 -#: order/templates/order/order_base.html:108 +#: company/models.py:545 company/templates/company/company_base.html:78 +#: company/templates/company/supplier_part.html:87 order/models.py:263 +#: order/templates/order/order_base.html:112 #: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:219 -#: part/bom.py:247 stock/templates/stock/item_base.html:370 +#: part/bom.py:247 stock/templates/stock/item_base.html:398 #: templates/js/translated/company.js:337 -#: templates/js/translated/company.js:771 templates/js/translated/order.js:660 -#: templates/js/translated/part.js:210 +#: templates/js/translated/company.js:771 templates/js/translated/order.js:667 +#: templates/js/translated/part.js:213 templates/js/translated/part.js:800 msgid "Supplier" msgstr "" -#: company/models.py:546 templates/js/translated/part.js:211 +#: company/models.py:546 templates/js/translated/part.js:214 msgid "Select supplier" msgstr "" -#: company/models.py:551 company/templates/company/supplier_part.html:98 -#: part/bom.py:220 part/bom.py:248 templates/js/translated/order.js:861 -#: templates/js/translated/part.js:221 +#: company/models.py:551 company/templates/company/supplier_part.html:91 +#: part/bom.py:220 part/bom.py:248 templates/js/translated/order.js:860 +#: templates/js/translated/part.js:224 templates/js/translated/part.js:818 msgid "SKU" msgstr "" -#: company/models.py:552 templates/js/translated/part.js:222 +#: company/models.py:552 templates/js/translated/part.js:225 msgid "Supplier stock keeping unit" msgstr "" @@ -2406,7 +2410,7 @@ msgstr "" msgid "Supplier part description" msgstr "" -#: company/models.py:576 company/templates/company/supplier_part.html:126 +#: company/models.py:576 company/templates/company/supplier_part.html:119 #: part/models.py:2588 report/templates/report/inventree_po_report.html:93 #: report/templates/report/inventree_so_report.html:93 msgid "Note" @@ -2420,9 +2424,9 @@ msgstr "" msgid "Minimum charge (e.g. stocking fee)" msgstr "" -#: company/models.py:582 company/templates/company/supplier_part.html:119 -#: stock/models.py:507 stock/templates/stock/item_base.html:311 -#: templates/js/translated/company.js:847 templates/js/translated/stock.js:1366 +#: company/models.py:582 company/templates/company/supplier_part.html:112 +#: stock/models.py:497 stock/templates/stock/item_base.html:339 +#: templates/js/translated/company.js:847 templates/js/translated/stock.js:1448 msgid "Packaging" msgstr "" @@ -2457,43 +2461,56 @@ msgstr "" msgid "Create Purchase Order" msgstr "" -#: company/templates/company/company_base.html:27 +#: company/templates/company/company_base.html:26 +msgid "Company actions" +msgstr "" + +#: company/templates/company/company_base.html:31 msgid "Edit company information" msgstr "" #: company/templates/company/company_base.html:32 -#: company/templates/company/company_base.html:148 +#: templates/js/translated/company.js:265 +msgid "Edit Company" +msgstr "" + +#: company/templates/company/company_base.html:36 +msgid "Delete company" +msgstr "" + +#: company/templates/company/company_base.html:37 +#: company/templates/company/company_base.html:159 msgid "Delete Company" msgstr "" -#: company/templates/company/company_base.html:48 +#: company/templates/company/company_base.html:53 #: part/templates/part/part_thumb.html:12 msgid "Upload new image" msgstr "" -#: company/templates/company/company_base.html:51 +#: company/templates/company/company_base.html:56 #: part/templates/part/part_thumb.html:14 msgid "Download image from URL" msgstr "" -#: company/templates/company/company_base.html:81 -msgid "Uses default currency" -msgstr "" - -#: company/templates/company/company_base.html:95 -msgid "Phone" -msgstr "" - -#: company/templates/company/company_base.html:126 order/models.py:567 -#: order/templates/order/sales_order_base.html:114 stock/models.py:525 -#: stock/models.py:526 stock/templates/stock/item_base.html:263 -#: templates/js/translated/company.js:329 templates/js/translated/order.js:1073 -#: templates/js/translated/stock.js:2002 +#: company/templates/company/company_base.html:83 order/models.py:567 +#: order/templates/order/sales_order_base.html:115 stock/models.py:515 +#: stock/models.py:516 stock/templates/stock/item_base.html:291 +#: templates/js/translated/company.js:329 templates/js/translated/order.js:1072 +#: templates/js/translated/stock.js:2084 msgid "Customer" msgstr "" -#: company/templates/company/company_base.html:194 -#: part/templates/part/part_base.html:342 +#: company/templates/company/company_base.html:108 +msgid "Uses default currency" +msgstr "" + +#: company/templates/company/company_base.html:122 +msgid "Phone" +msgstr "" + +#: company/templates/company/company_base.html:205 +#: part/templates/part/part_base.html:471 msgid "Upload Image" msgstr "" @@ -2509,23 +2526,23 @@ msgid "Create new supplier part" msgstr "" #: company/templates/company/detail.html:20 -#: company/templates/company/manufacturer_part.html:112 -#: part/templates/part/detail.html:440 +#: company/templates/company/manufacturer_part.html:118 +#: part/templates/part/detail.html:333 msgid "New Supplier Part" msgstr "" #: company/templates/company/detail.html:32 #: company/templates/company/detail.html:79 -#: company/templates/company/manufacturer_part.html:121 -#: company/templates/company/manufacturer_part.html:150 -#: part/templates/part/category.html:160 part/templates/part/detail.html:449 -#: part/templates/part/detail.html:477 +#: company/templates/company/manufacturer_part.html:127 +#: company/templates/company/manufacturer_part.html:156 +#: part/templates/part/category.html:167 part/templates/part/detail.html:342 +#: part/templates/part/detail.html:370 msgid "Options" msgstr "" #: company/templates/company/detail.html:37 #: company/templates/company/detail.html:84 -#: part/templates/part/category.html:166 +#: part/templates/part/category.html:173 msgid "Order parts" msgstr "" @@ -2547,7 +2564,7 @@ msgstr "" msgid "Create new manufacturer part" msgstr "" -#: company/templates/company/detail.html:67 part/templates/part/detail.html:467 +#: company/templates/company/detail.html:67 part/templates/part/detail.html:360 msgid "New Manufacturer Part" msgstr "" @@ -2561,7 +2578,7 @@ msgstr "" #: order/templates/order/order_base.html:13 #: order/templates/order/purchase_orders.html:8 #: order/templates/order/purchase_orders.html:12 -#: part/templates/part/detail.html:171 part/templates/part/part_sidebar.html:35 +#: part/templates/part/detail.html:64 part/templates/part/part_sidebar.html:33 #: templates/InvenTree/index.html:252 templates/InvenTree/search.html:203 #: templates/InvenTree/settings/sidebar.html:44 templates/navbar.html:45 #: users/models.py:45 @@ -2583,7 +2600,7 @@ msgstr "" #: order/templates/order/sales_order_base.html:13 #: order/templates/order/sales_orders.html:8 #: order/templates/order/sales_orders.html:15 -#: part/templates/part/detail.html:194 part/templates/part/part_sidebar.html:39 +#: part/templates/part/detail.html:87 part/templates/part/part_sidebar.html:37 #: templates/InvenTree/index.html:283 templates/InvenTree/search.html:223 #: templates/InvenTree/settings/sidebar.html:46 templates/navbar.html:56 #: users/models.py:46 @@ -2610,14 +2627,14 @@ msgid "Company Notes" msgstr "" #: company/templates/company/detail.html:383 -#: company/templates/company/manufacturer_part.html:209 -#: part/templates/part/detail.html:520 +#: company/templates/company/manufacturer_part.html:215 +#: part/templates/part/detail.html:413 msgid "Delete Supplier Parts?" msgstr "" #: company/templates/company/detail.html:384 -#: company/templates/company/manufacturer_part.html:210 -#: part/templates/part/detail.html:521 +#: company/templates/company/manufacturer_part.html:216 +#: part/templates/part/detail.html:414 msgid "All selected supplier parts will be deleted" msgstr "" @@ -2634,7 +2651,7 @@ msgstr "" #: company/templates/company/manufacturer_part.html:35 #: company/templates/company/supplier_part.html:34 #: company/templates/company/supplier_part.html:159 -#: part/templates/part/detail.html:174 part/templates/part/part_base.html:76 +#: part/templates/part/detail.html:67 part/templates/part/part_base.html:76 msgid "Order part" msgstr "" @@ -2648,60 +2665,60 @@ msgstr "" msgid "Delete manufacturer part" msgstr "" -#: company/templates/company/manufacturer_part.html:70 -#: company/templates/company/supplier_part.html:71 +#: company/templates/company/manufacturer_part.html:66 +#: company/templates/company/supplier_part.html:63 msgid "Internal Part" msgstr "" -#: company/templates/company/manufacturer_part.html:108 +#: company/templates/company/manufacturer_part.html:114 #: company/templates/company/supplier_part.html:15 company/views.py:49 -#: part/templates/part/part_sidebar.html:33 part/templates/part/prices.html:163 +#: part/templates/part/part_sidebar.html:31 part/templates/part/prices.html:163 #: templates/InvenTree/search.html:194 templates/navbar.html:43 msgid "Suppliers" msgstr "" -#: company/templates/company/manufacturer_part.html:123 -#: part/templates/part/detail.html:451 +#: company/templates/company/manufacturer_part.html:129 +#: part/templates/part/detail.html:344 msgid "Delete supplier parts" msgstr "" -#: company/templates/company/manufacturer_part.html:123 -#: company/templates/company/manufacturer_part.html:152 -#: company/templates/company/manufacturer_part.html:248 -#: part/templates/part/detail.html:451 part/templates/part/detail.html:479 +#: company/templates/company/manufacturer_part.html:129 +#: company/templates/company/manufacturer_part.html:158 +#: company/templates/company/manufacturer_part.html:254 +#: part/templates/part/detail.html:344 part/templates/part/detail.html:372 #: templates/js/translated/company.js:425 templates/js/translated/helpers.js:31 #: users/models.py:204 msgid "Delete" msgstr "" -#: company/templates/company/manufacturer_part.html:137 +#: company/templates/company/manufacturer_part.html:143 #: company/templates/company/manufacturer_part_sidebar.html:5 #: part/templates/part/category_sidebar.html:17 -#: part/templates/part/detail.html:277 part/templates/part/part_sidebar.html:10 +#: part/templates/part/detail.html:170 part/templates/part/part_sidebar.html:8 msgid "Parameters" msgstr "" -#: company/templates/company/manufacturer_part.html:141 -#: part/templates/part/detail.html:282 +#: company/templates/company/manufacturer_part.html:147 +#: part/templates/part/detail.html:175 #: templates/InvenTree/settings/category.html:12 #: templates/InvenTree/settings/part.html:65 msgid "New Parameter" msgstr "" -#: company/templates/company/manufacturer_part.html:152 +#: company/templates/company/manufacturer_part.html:158 msgid "Delete parameters" msgstr "" -#: company/templates/company/manufacturer_part.html:185 -#: part/templates/part/detail.html:976 +#: company/templates/company/manufacturer_part.html:191 +#: part/templates/part/detail.html:867 msgid "Add Parameter" msgstr "" -#: company/templates/company/manufacturer_part.html:233 +#: company/templates/company/manufacturer_part.html:239 msgid "Selected parameters will be deleted" msgstr "" -#: company/templates/company/manufacturer_part.html:245 +#: company/templates/company/manufacturer_part.html:251 msgid "Delete Parameters" msgstr "" @@ -2722,9 +2739,9 @@ msgid "Assigned Stock Items" msgstr "" #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 stock/models.py:492 -#: stock/templates/stock/item_base.html:375 -#: templates/js/translated/company.js:787 templates/js/translated/stock.js:1323 +#: company/templates/company/supplier_part.html:24 stock/models.py:482 +#: stock/templates/stock/item_base.html:403 +#: templates/js/translated/company.js:787 templates/js/translated/stock.js:1405 msgid "Supplier Part" msgstr "" @@ -2744,13 +2761,13 @@ msgid "Supplier Part Stock" msgstr "" #: company/templates/company/supplier_part.html:141 -#: part/templates/part/detail.html:127 stock/templates/stock/location.html:147 +#: part/templates/part/detail.html:20 stock/templates/stock/location.html:162 msgid "Create new stock item" msgstr "" #: company/templates/company/supplier_part.html:142 -#: part/templates/part/detail.html:128 stock/templates/stock/location.html:148 -#: templates/js/translated/stock.js:354 +#: part/templates/part/detail.html:21 stock/templates/stock/location.html:163 +#: templates/js/translated/stock.js:355 msgid "New Stock Item" msgstr "" @@ -2760,7 +2777,7 @@ msgid "Supplier Part Orders" msgstr "" #: company/templates/company/supplier_part.html:160 -#: part/templates/part/detail.html:175 +#: part/templates/part/detail.html:68 msgid "Order Part" msgstr "" @@ -2796,15 +2813,15 @@ msgid "Delete price break" msgstr "" #: company/templates/company/supplier_part_navbar.html:15 -#: part/templates/part/part_sidebar.html:16 +#: part/templates/part/part_sidebar.html:14 #: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:14 #: stock/templates/stock/stock_app_base.html:10 #: templates/InvenTree/search.html:156 #: templates/InvenTree/settings/sidebar.html:40 -#: templates/js/translated/bom.js:216 templates/js/translated/part.js:427 -#: templates/js/translated/part.js:562 templates/js/translated/part.js:878 -#: templates/js/translated/part.js:1039 templates/js/translated/stock.js:509 -#: templates/js/translated/stock.js:1162 templates/navbar.html:26 +#: templates/js/translated/bom.js:216 templates/js/translated/part.js:434 +#: templates/js/translated/part.js:569 templates/js/translated/part.js:1059 +#: templates/js/translated/part.js:1220 templates/js/translated/stock.js:591 +#: templates/js/translated/stock.js:1244 templates/navbar.html:26 msgid "Stock" msgstr "" @@ -2818,16 +2835,16 @@ msgid "Supplier Part Pricing" msgstr "" #: company/templates/company/supplier_part_navbar.html:29 -#: part/templates/part/part_sidebar.html:30 +#: part/templates/part/part_sidebar.html:28 msgid "Pricing" msgstr "" #: company/templates/company/supplier_part_sidebar.html:5 -#: stock/templates/stock/location.html:118 -#: stock/templates/stock/location.html:132 -#: stock/templates/stock/location.html:144 +#: stock/templates/stock/location.html:133 +#: stock/templates/stock/location.html:147 +#: stock/templates/stock/location.html:159 #: stock/templates/stock/location_sidebar.html:7 -#: templates/InvenTree/search.html:158 templates/js/translated/stock.js:1901 +#: templates/InvenTree/search.html:158 templates/js/translated/stock.js:1983 #: templates/stats.html:93 templates/stats.html:102 users/models.py:43 msgid "Stock Items" msgstr "" @@ -2947,7 +2964,7 @@ msgstr "" msgid "Place order" msgstr "" -#: order/forms.py:37 order/templates/order/order_base.html:59 +#: order/forms.py:37 order/templates/order/order_base.html:60 msgid "Mark order as complete" msgstr "" @@ -3000,8 +3017,8 @@ msgstr "" msgid "Company from which the items are being ordered" msgstr "" -#: order/models.py:267 order/templates/order/order_base.html:114 -#: templates/js/translated/order.js:669 +#: order/models.py:267 order/templates/order/order_base.html:118 +#: templates/js/translated/order.js:676 msgid "Supplier Reference" msgstr "" @@ -3061,7 +3078,7 @@ msgstr "" msgid "Target date for order completion. Order will be overdue after this date." msgstr "" -#: order/models.py:582 templates/js/translated/order.js:1114 +#: order/models.py:582 templates/js/translated/order.js:1113 msgid "Shipment Date" msgstr "" @@ -3086,16 +3103,16 @@ msgid "Line item notes" msgstr "" #: order/models.py:768 order/models.py:856 -#: templates/js/translated/order.js:1166 +#: templates/js/translated/order.js:1165 msgid "Order" msgstr "" #: order/models.py:769 order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_po_report.html:77 -#: stock/templates/stock/item_base.html:325 -#: templates/js/translated/order.js:638 templates/js/translated/stock.js:1300 -#: templates/js/translated/stock.js:1983 +#: stock/templates/stock/item_base.html:353 +#: templates/js/translated/order.js:638 templates/js/translated/part.js:775 +#: templates/js/translated/stock.js:1382 templates/js/translated/stock.js:2065 msgid "Purchase Order" msgstr "" @@ -3103,9 +3120,10 @@ msgstr "" msgid "Supplier part" msgstr "" -#: order/models.py:797 order/templates/order/order_base.html:147 -#: order/templates/order/sales_order_base.html:154 -#: templates/js/translated/order.js:429 templates/js/translated/order.js:954 +#: order/models.py:797 order/templates/order/order_base.html:151 +#: order/templates/order/sales_order_base.html:155 +#: templates/js/translated/order.js:429 templates/js/translated/order.js:953 +#: templates/js/translated/part.js:847 templates/js/translated/part.js:873 msgid "Received" msgstr "" @@ -3113,9 +3131,9 @@ msgstr "" msgid "Number of items received" msgstr "" -#: order/models.py:805 part/templates/part/prices.html:176 stock/models.py:619 -#: stock/serializers.py:163 stock/templates/stock/item_base.html:332 -#: templates/js/translated/stock.js:1354 +#: order/models.py:805 part/templates/part/prices.html:176 stock/models.py:609 +#: stock/serializers.py:168 stock/templates/stock/item_base.html:360 +#: templates/js/translated/stock.js:1436 msgid "Purchase Price" msgstr "" @@ -3176,47 +3194,47 @@ msgstr "" msgid "Enter stock allocation quantity" msgstr "" -#: order/serializers.py:169 +#: order/serializers.py:175 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:204 +#: order/serializers.py:213 msgid "Line Item" msgstr "" -#: order/serializers.py:210 +#: order/serializers.py:219 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:220 order/serializers.py:288 +#: order/serializers.py:229 order/serializers.py:297 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:244 +#: order/serializers.py:253 msgid "Barcode Hash" msgstr "" -#: order/serializers.py:245 +#: order/serializers.py:254 msgid "Unique identifier field" msgstr "" -#: order/serializers.py:262 +#: order/serializers.py:271 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:300 +#: order/serializers.py:309 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:317 +#: order/serializers.py:326 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:328 +#: order/serializers.py:337 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:569 +#: order/serializers.py:578 msgid "Sale price currency" msgstr "" @@ -3248,22 +3266,36 @@ msgstr "" msgid "Receive items" msgstr "" -#: order/templates/order/order_base.html:93 -#: order/templates/order/sales_order_base.html:98 +#: order/templates/order/order_base.html:58 +#: order/templates/order/purchase_order_detail.html:31 +msgid "Receive Items" +msgstr "" + +#: order/templates/order/order_base.html:62 order/views.py:185 +msgid "Complete Order" +msgstr "" + +#: order/templates/order/order_base.html:84 +#: order/templates/order/sales_order_base.html:79 msgid "Order Reference" msgstr "" -#: order/templates/order/order_base.html:98 -#: order/templates/order/sales_order_base.html:103 +#: order/templates/order/order_base.html:89 +#: order/templates/order/sales_order_base.html:84 +msgid "Order Description" +msgstr "" + +#: order/templates/order/order_base.html:94 +#: order/templates/order/sales_order_base.html:89 msgid "Order Status" msgstr "" -#: order/templates/order/order_base.html:133 +#: order/templates/order/order_base.html:137 #: report/templates/report/inventree_build_order_base.html:122 msgid "Issued" msgstr "" -#: order/templates/order/order_base.html:203 +#: order/templates/order/order_base.html:207 msgid "Edit Purchase Order" msgstr "" @@ -3421,7 +3453,7 @@ msgid "Select existing purchase orders, or create new orders." msgstr "" #: order/templates/order/order_wizard/select_pos.html:31 -#: templates/js/translated/order.js:695 templates/js/translated/order.js:1119 +#: templates/js/translated/order.js:694 templates/js/translated/order.js:1118 msgid "Items" msgstr "" @@ -3465,10 +3497,6 @@ msgstr "" msgid "Receive selected items" msgstr "" -#: order/templates/order/purchase_order_detail.html:31 -msgid "Receive Items" -msgstr "" - #: order/templates/order/purchase_order_detail.html:50 msgid "Received Items" msgstr "" @@ -3496,16 +3524,16 @@ msgstr "" msgid "Ship Order" msgstr "" -#: order/templates/order/sales_order_base.html:86 +#: order/templates/order/sales_order_base.html:102 msgid "This Sales Order has not been fully allocated" msgstr "" -#: order/templates/order/sales_order_base.html:121 -#: templates/js/translated/order.js:1086 +#: order/templates/order/sales_order_base.html:122 +#: templates/js/translated/order.js:1085 msgid "Customer Reference" msgstr "" -#: order/templates/order/sales_order_base.html:194 +#: order/templates/order/sales_order_base.html:195 msgid "Edit Sales Order" msgstr "" @@ -3576,10 +3604,6 @@ msgstr "" msgid "Purchase order issued" msgstr "" -#: order/views.py:185 -msgid "Complete Order" -msgstr "" - #: order/views.py:201 msgid "Confirm order completion" msgstr "" @@ -3672,11 +3696,11 @@ msgid "This field is required" msgstr "" #: part/bom.py:125 part/models.py:81 part/models.py:816 -#: part/templates/part/category.html:90 part/templates/part/detail.html:104 +#: part/templates/part/category.html:104 part/templates/part/part_base.html:338 msgid "Default Location" msgstr "" -#: part/bom.py:126 part/templates/part/part_base.html:167 +#: part/bom.py:126 part/templates/part/part_base.html:185 msgid "Available Stock" msgstr "" @@ -3793,19 +3817,19 @@ msgstr "" msgid "Part Category" msgstr "" -#: part/models.py:96 part/templates/part/category.html:117 +#: part/models.py:96 part/templates/part/category.html:124 #: templates/InvenTree/search.html:101 templates/stats.html:84 #: users/models.py:40 msgid "Part Categories" msgstr "" #: part/models.py:358 part/templates/part/cat_link.html:3 -#: part/templates/part/category.html:13 part/templates/part/category.html:122 -#: part/templates/part/category.html:142 +#: part/templates/part/category.html:13 part/templates/part/category.html:129 +#: part/templates/part/category.html:149 #: part/templates/part/category_sidebar.html:9 #: templates/InvenTree/index.html:85 templates/InvenTree/search.html:88 #: templates/InvenTree/settings/sidebar.html:36 -#: templates/js/translated/part.js:1416 templates/navbar.html:19 +#: templates/js/translated/part.js:1597 templates/navbar.html:19 #: templates/stats.html:80 templates/stats.html:89 users/models.py:41 msgid "Parts" msgstr "" @@ -3859,8 +3883,8 @@ msgstr "" msgid "Part description" msgstr "" -#: part/models.py:770 part/templates/part/category.html:97 -#: part/templates/part/detail.html:73 +#: part/models.py:770 part/templates/part/category.html:82 +#: part/templates/part/part_base.html:302 msgid "Keywords" msgstr "" @@ -3869,9 +3893,10 @@ msgid "Part keywords to improve visibility in search results" msgstr "" #: part/models.py:778 part/models.py:2223 part/models.py:2472 -#: part/templates/part/detail.html:36 part/templates/part/set_category.html:15 +#: part/templates/part/part_base.html:265 +#: part/templates/part/set_category.html:15 #: templates/InvenTree/settings/settings.html:163 -#: templates/js/translated/part.js:1021 +#: templates/js/translated/part.js:1202 msgid "Category" msgstr "" @@ -3879,9 +3904,9 @@ msgstr "" msgid "Part category" msgstr "" -#: part/models.py:784 part/templates/part/detail.html:45 -#: templates/js/translated/part.js:550 templates/js/translated/part.js:974 -#: templates/js/translated/stock.js:1134 +#: part/models.py:784 part/templates/part/part_base.html:274 +#: templates/js/translated/part.js:557 templates/js/translated/part.js:1155 +#: templates/js/translated/stock.js:1216 msgid "IPN" msgstr "" @@ -3893,8 +3918,8 @@ msgstr "" msgid "Part revision or version number" msgstr "" -#: part/models.py:792 part/templates/part/detail.html:52 report/models.py:200 -#: templates/js/translated/part.js:554 +#: part/models.py:792 part/templates/part/part_base.html:281 +#: report/models.py:200 templates/js/translated/part.js:561 msgid "Revision" msgstr "" @@ -3902,7 +3927,7 @@ msgstr "" msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:861 part/templates/part/detail.html:113 +#: part/models.py:861 part/templates/part/part_base.html:347 msgid "Default Supplier" msgstr "" @@ -3918,7 +3943,7 @@ msgstr "" msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:875 part/templates/part/part_base.html:178 +#: part/models.py:875 part/templates/part/part_base.html:196 msgid "Minimum Stock" msgstr "" @@ -4001,8 +4026,8 @@ msgstr "" msgid "Test with this name already exists for this part" msgstr "" -#: part/models.py:2310 templates/js/translated/part.js:1467 -#: templates/js/translated/stock.js:858 +#: part/models.py:2310 templates/js/translated/part.js:1648 +#: templates/js/translated/stock.js:940 msgid "Test Name" msgstr "" @@ -4018,7 +4043,7 @@ msgstr "" msgid "Enter description for this test" msgstr "" -#: part/models.py:2322 templates/js/translated/part.js:1476 +#: part/models.py:2322 templates/js/translated/part.js:1657 #: templates/js/translated/table_filters.js:276 msgid "Required" msgstr "" @@ -4027,7 +4052,7 @@ msgstr "" msgid "Is this test required to pass?" msgstr "" -#: part/models.py:2328 templates/js/translated/part.js:1484 +#: part/models.py:2328 templates/js/translated/part.js:1665 msgid "Requires Value" msgstr "" @@ -4035,7 +4060,7 @@ msgstr "" msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:2334 templates/js/translated/part.js:1491 +#: part/models.py:2334 templates/js/translated/part.js:1672 msgid "Requires Attachment" msgstr "" @@ -4150,7 +4175,7 @@ msgstr "" msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:2686 stock/models.py:371 +#: part/models.py:2686 stock/models.py:361 msgid "Quantity must be integer value for trackable parts" msgstr "" @@ -4213,7 +4238,7 @@ msgstr "" msgid "The BOM for %(part)s has not been validated." msgstr "" -#: part/templates/part/bom.html:30 part/templates/part/detail.html:357 +#: part/templates/part/bom.html:30 part/templates/part/detail.html:250 msgid "BOM actions" msgstr "" @@ -4298,68 +4323,64 @@ msgstr "" msgid "New Category" msgstr "" -#: part/templates/part/category.html:67 -msgid "Top level part category" -msgstr "" - -#: part/templates/part/category.html:79 +#: part/templates/part/category.html:76 part/templates/part/category.html:89 msgid "Category Path" msgstr "" -#: part/templates/part/category.html:84 -msgid "Category Description" +#: part/templates/part/category.html:90 +msgid "Top level part category" msgstr "" -#: part/templates/part/category.html:103 part/templates/part/category.html:194 +#: part/templates/part/category.html:110 part/templates/part/category.html:201 #: part/templates/part/category_sidebar.html:7 msgid "Subcategories" msgstr "" -#: part/templates/part/category.html:108 +#: part/templates/part/category.html:115 msgid "Parts (Including subcategories)" msgstr "" -#: part/templates/part/category.html:145 +#: part/templates/part/category.html:152 msgid "Export Part Data" msgstr "" -#: part/templates/part/category.html:146 part/templates/part/category.html:170 +#: part/templates/part/category.html:153 part/templates/part/category.html:177 msgid "Export" msgstr "" -#: part/templates/part/category.html:149 +#: part/templates/part/category.html:156 msgid "Create new part" msgstr "" -#: part/templates/part/category.html:150 templates/js/translated/bom.js:40 +#: part/templates/part/category.html:157 templates/js/translated/bom.js:40 msgid "New Part" msgstr "" -#: part/templates/part/category.html:164 +#: part/templates/part/category.html:171 msgid "Set category" msgstr "" -#: part/templates/part/category.html:164 +#: part/templates/part/category.html:171 msgid "Set Category" msgstr "" -#: part/templates/part/category.html:168 +#: part/templates/part/category.html:175 msgid "Print Labels" msgstr "" -#: part/templates/part/category.html:170 +#: part/templates/part/category.html:177 msgid "Export Data" msgstr "" -#: part/templates/part/category.html:184 +#: part/templates/part/category.html:191 msgid "Part Parameters" msgstr "" -#: part/templates/part/category.html:261 +#: part/templates/part/category.html:268 msgid "Create Part Category" msgstr "" -#: part/templates/part/category.html:288 +#: part/templates/part/category.html:295 msgid "Create Part" msgstr "" @@ -4402,7 +4423,7 @@ msgstr "" msgid "Import Parts" msgstr "" -#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:366 +#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:373 msgid "Duplicate Part" msgstr "" @@ -4426,167 +4447,155 @@ msgstr "" msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)" msgstr "" -#: part/templates/part/detail.html:16 -msgid "Part Details" -msgstr "" - -#: part/templates/part/detail.html:66 -msgid "Minimum stock level" -msgstr "" - -#: part/templates/part/detail.html:97 -msgid "Latest Serial Number" -msgstr "" - -#: part/templates/part/detail.html:124 +#: part/templates/part/detail.html:17 msgid "Part Stock" msgstr "" -#: part/templates/part/detail.html:136 +#: part/templates/part/detail.html:29 #, python-format msgid "Showing stock for all variants of %(full_name)s" msgstr "" -#: part/templates/part/detail.html:146 +#: part/templates/part/detail.html:39 msgid "Part Test Templates" msgstr "" -#: part/templates/part/detail.html:151 +#: part/templates/part/detail.html:44 msgid "Add Test Template" msgstr "" -#: part/templates/part/detail.html:208 +#: part/templates/part/detail.html:101 msgid "Sales Order Allocations" msgstr "" -#: part/templates/part/detail.html:249 +#: part/templates/part/detail.html:142 msgid "Part Variants" msgstr "" -#: part/templates/part/detail.html:253 +#: part/templates/part/detail.html:146 msgid "Create new variant" msgstr "" -#: part/templates/part/detail.html:254 +#: part/templates/part/detail.html:147 msgid "New Variant" msgstr "" -#: part/templates/part/detail.html:281 +#: part/templates/part/detail.html:174 msgid "Add new parameter" msgstr "" -#: part/templates/part/detail.html:315 part/templates/part/part_sidebar.html:47 +#: part/templates/part/detail.html:208 part/templates/part/part_sidebar.html:45 msgid "Related Parts" msgstr "" -#: part/templates/part/detail.html:319 part/templates/part/detail.html:320 +#: part/templates/part/detail.html:212 part/templates/part/detail.html:213 msgid "Add Related" msgstr "" -#: part/templates/part/detail.html:340 part/templates/part/part_sidebar.html:19 +#: part/templates/part/detail.html:233 part/templates/part/part_sidebar.html:17 msgid "Bill of Materials" msgstr "" -#: part/templates/part/detail.html:345 +#: part/templates/part/detail.html:238 msgid "Export actions" msgstr "" -#: part/templates/part/detail.html:349 +#: part/templates/part/detail.html:242 msgid "Export BOM" msgstr "" -#: part/templates/part/detail.html:351 +#: part/templates/part/detail.html:244 msgid "Print BOM Report" msgstr "" -#: part/templates/part/detail.html:361 +#: part/templates/part/detail.html:254 msgid "Upload BOM" msgstr "" -#: part/templates/part/detail.html:363 templates/js/translated/part.js:267 +#: part/templates/part/detail.html:256 templates/js/translated/part.js:270 msgid "Copy BOM" msgstr "" -#: part/templates/part/detail.html:365 part/views.py:755 +#: part/templates/part/detail.html:258 part/views.py:755 msgid "Validate BOM" msgstr "" -#: part/templates/part/detail.html:370 +#: part/templates/part/detail.html:263 msgid "New BOM Item" msgstr "" -#: part/templates/part/detail.html:371 +#: part/templates/part/detail.html:264 msgid "Add BOM Item" msgstr "" -#: part/templates/part/detail.html:384 +#: part/templates/part/detail.html:277 msgid "Assemblies" msgstr "" -#: part/templates/part/detail.html:401 +#: part/templates/part/detail.html:294 msgid "Part Builds" msgstr "" -#: part/templates/part/detail.html:426 +#: part/templates/part/detail.html:319 msgid "Build Order Allocations" msgstr "" -#: part/templates/part/detail.html:436 +#: part/templates/part/detail.html:329 msgid "Part Suppliers" msgstr "" -#: part/templates/part/detail.html:463 +#: part/templates/part/detail.html:356 msgid "Part Manufacturers" msgstr "" -#: part/templates/part/detail.html:479 +#: part/templates/part/detail.html:372 msgid "Delete manufacturer parts" msgstr "" -#: part/templates/part/detail.html:660 +#: part/templates/part/detail.html:553 msgid "Delete selected BOM items?" msgstr "" -#: part/templates/part/detail.html:661 +#: part/templates/part/detail.html:554 msgid "All selected BOM items will be deleted" msgstr "" -#: part/templates/part/detail.html:712 +#: part/templates/part/detail.html:605 msgid "Create BOM Item" msgstr "" -#: part/templates/part/detail.html:764 +#: part/templates/part/detail.html:657 msgid "Related Part" msgstr "" -#: part/templates/part/detail.html:772 +#: part/templates/part/detail.html:665 msgid "Add Related Part" msgstr "" -#: part/templates/part/detail.html:869 +#: part/templates/part/detail.html:760 msgid "Add Test Result Template" msgstr "" -#: part/templates/part/detail.html:926 +#: part/templates/part/detail.html:817 msgid "Edit Part Notes" msgstr "" -#: part/templates/part/detail.html:1039 +#: part/templates/part/detail.html:930 #, python-format msgid "Purchase Unit Price - %(currency)s" msgstr "" -#: part/templates/part/detail.html:1051 +#: part/templates/part/detail.html:942 #, python-format msgid "Unit Price-Cost Difference - %(currency)s" msgstr "" -#: part/templates/part/detail.html:1063 +#: part/templates/part/detail.html:954 #, python-format msgid "Supplier Unit Cost - %(currency)s" msgstr "" -#: part/templates/part/detail.html:1152 +#: part/templates/part/detail.html:1043 #, python-format msgid "Unit Price - %(currency)s" msgstr "" @@ -4668,86 +4677,108 @@ msgstr "" msgid "Delete part" msgstr "" -#: part/templates/part/part_base.html:109 +#: part/templates/part/part_base.html:112 msgid "Part is a template part (variants can be made from this part)" msgstr "" -#: part/templates/part/part_base.html:113 +#: part/templates/part/part_base.html:116 msgid "Part can be assembled from other parts" msgstr "" -#: part/templates/part/part_base.html:117 +#: part/templates/part/part_base.html:120 msgid "Part can be used in assemblies" msgstr "" -#: part/templates/part/part_base.html:121 +#: part/templates/part/part_base.html:124 msgid "Part stock is tracked by serial number" msgstr "" -#: part/templates/part/part_base.html:125 +#: part/templates/part/part_base.html:128 msgid "Part can be purchased from external suppliers" msgstr "" -#: part/templates/part/part_base.html:129 +#: part/templates/part/part_base.html:132 msgid "Part can be sold to customers" msgstr "" -#: part/templates/part/part_base.html:135 -#: part/templates/part/part_base.html:143 +#: part/templates/part/part_base.html:138 +#: part/templates/part/part_base.html:146 msgid "Part is virtual (not a physical part)" msgstr "" -#: part/templates/part/part_base.html:136 +#: part/templates/part/part_base.html:139 #: templates/js/translated/company.js:505 #: templates/js/translated/company.js:762 #: templates/js/translated/model_renderers.js:175 -#: templates/js/translated/part.js:465 templates/js/translated/part.js:542 +#: templates/js/translated/part.js:472 templates/js/translated/part.js:549 msgid "Inactive" msgstr "" -#: part/templates/part/part_base.html:155 +#: part/templates/part/part_base.html:156 +#: part/templates/part/part_base.html:579 +msgid "Show Part Details" +msgstr "" + +#: part/templates/part/part_base.html:173 #, python-format msgid "This part is a variant of %(link)s" msgstr "" -#: part/templates/part/part_base.html:172 templates/js/translated/order.js:1546 +#: part/templates/part/part_base.html:190 templates/js/translated/order.js:1545 #: templates/js/translated/table_filters.js:188 msgid "In Stock" msgstr "" -#: part/templates/part/part_base.html:185 templates/js/translated/part.js:1054 +#: part/templates/part/part_base.html:203 templates/js/translated/part.js:1235 msgid "On Order" msgstr "" -#: part/templates/part/part_base.html:192 templates/InvenTree/index.html:178 +#: part/templates/part/part_base.html:210 templates/InvenTree/index.html:178 msgid "Required for Build Orders" msgstr "" -#: part/templates/part/part_base.html:199 +#: part/templates/part/part_base.html:217 msgid "Required for Sales Orders" msgstr "" -#: part/templates/part/part_base.html:206 +#: part/templates/part/part_base.html:224 msgid "Allocated to Orders" msgstr "" -#: part/templates/part/part_base.html:221 templates/js/translated/bom.js:566 +#: part/templates/part/part_base.html:239 templates/js/translated/bom.js:566 msgid "Can Build" msgstr "" -#: part/templates/part/part_base.html:227 templates/js/translated/part.js:885 -#: templates/js/translated/part.js:1058 +#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1066 +#: templates/js/translated/part.js:1239 msgid "Building" msgstr "" -#: part/templates/part/part_base.html:320 part/templates/part/prices.html:144 +#: part/templates/part/part_base.html:295 +msgid "Minimum stock level" +msgstr "" + +#: part/templates/part/part_base.html:324 +msgid "Latest Serial Number" +msgstr "" + +#: part/templates/part/part_base.html:328 +#: stock/templates/stock/item_base.html:159 +msgid "Search for serial number" +msgstr "" + +#: part/templates/part/part_base.html:449 part/templates/part/prices.html:144 msgid "Calculate" msgstr "" -#: part/templates/part/part_base.html:363 +#: part/templates/part/part_base.html:492 msgid "No matching images found" msgstr "" +#: part/templates/part/part_base.html:573 +msgid "Hide Part Details" +msgstr "" + #: part/templates/part/part_pricing.html:22 part/templates/part/prices.html:21 msgid "Supplier Pricing" msgstr "" @@ -4805,20 +4836,15 @@ msgstr "" msgid "No pricing information is available for this part." msgstr "" -#: part/templates/part/part_sidebar.html:8 -#: templates/js/translated/stock.js:1949 -msgid "Details" -msgstr "" - -#: part/templates/part/part_sidebar.html:13 +#: part/templates/part/part_sidebar.html:11 msgid "Variants" msgstr "" -#: part/templates/part/part_sidebar.html:27 +#: part/templates/part/part_sidebar.html:25 msgid "Used In" msgstr "" -#: part/templates/part/part_sidebar.html:43 +#: part/templates/part/part_sidebar.html:41 msgid "Test Templates" msgstr "" @@ -4934,8 +4960,8 @@ msgid "Set category for the following parts" msgstr "" #: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:476 -#: templates/js/translated/part.js:429 templates/js/translated/part.js:875 -#: templates/js/translated/part.js:1062 +#: templates/js/translated/part.js:436 templates/js/translated/part.js:1056 +#: templates/js/translated/part.js:1243 msgid "No Stock" msgstr "" @@ -5037,7 +5063,7 @@ msgstr "" msgid "Delete Part Parameter Template" msgstr "" -#: part/views.py:1489 templates/js/translated/part.js:310 +#: part/views.py:1489 templates/js/translated/part.js:313 msgid "Edit Part Category" msgstr "" @@ -5171,11 +5197,12 @@ msgid "Stock Item Test Report" msgstr "" #: report/templates/report/inventree_test_report_base.html:79 -#: stock/models.py:530 stock/templates/stock/item_base.html:238 +#: stock/models.py:520 stock/templates/stock/item_base.html:149 #: templates/js/translated/build.js:233 templates/js/translated/build.js:637 #: templates/js/translated/build.js:1013 #: templates/js/translated/model_renderers.js:95 -#: templates/js/translated/order.js:1288 templates/js/translated/order.js:1377 +#: templates/js/translated/order.js:1287 templates/js/translated/order.js:1376 +#: templates/js/translated/stock.js:410 msgid "Serial Number" msgstr "" @@ -5184,17 +5211,17 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:93 -#: stock/models.py:1855 +#: stock/models.py:1845 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:94 -#: stock/models.py:1861 +#: stock/models.py:1851 msgid "Result" msgstr "" #: report/templates/report/inventree_test_report_base.html:97 -#: templates/js/translated/order.js:685 templates/js/translated/stock.js:1917 +#: templates/js/translated/order.js:684 templates/js/translated/stock.js:1999 msgid "Date" msgstr "" @@ -5212,7 +5239,7 @@ msgid "Installed Items" msgstr "" #: report/templates/report/inventree_test_report_base.html:137 -#: templates/js/translated/stock.js:2177 +#: templates/js/translated/stock.js:2259 msgid "Serial" msgstr "" @@ -5220,9 +5247,9 @@ msgstr "" msgid "Quantity is required" msgstr "" -#: stock/forms.py:91 stock/forms.py:265 stock/models.py:587 -#: stock/templates/stock/item_base.html:382 -#: templates/js/translated/stock.js:1276 +#: stock/forms.py:91 stock/forms.py:265 stock/models.py:577 +#: stock/templates/stock/item_base.html:186 +#: templates/js/translated/stock.js:1358 msgid "Expiry Date" msgstr "" @@ -5270,241 +5297,241 @@ msgstr "" msgid "Confirm removal of installed stock items" msgstr "" -#: stock/models.py:60 stock/models.py:624 -#: stock/templates/stock/item_base.html:422 +#: stock/models.py:60 stock/models.py:614 +#: stock/templates/stock/item_base.html:417 msgid "Owner" msgstr "" -#: stock/models.py:61 stock/models.py:625 +#: stock/models.py:61 stock/models.py:615 msgid "Select Owner" msgstr "" -#: stock/models.py:352 +#: stock/models.py:342 msgid "StockItem with this serial number already exists" msgstr "" -#: stock/models.py:388 +#: stock/models.py:378 #, python-brace-format msgid "Part type ('{pf}') must be {pe}" msgstr "" -#: stock/models.py:398 stock/models.py:407 +#: stock/models.py:388 stock/models.py:397 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:399 +#: stock/models.py:389 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:421 +#: stock/models.py:411 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:427 +#: stock/models.py:417 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:434 +#: stock/models.py:424 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:476 +#: stock/models.py:466 msgid "Parent Stock Item" msgstr "" -#: stock/models.py:485 +#: stock/models.py:475 msgid "Base part" msgstr "" -#: stock/models.py:493 +#: stock/models.py:483 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:498 stock/templates/stock/location.html:12 +#: stock/models.py:488 stock/templates/stock/location.html:12 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" msgstr "" -#: stock/models.py:501 +#: stock/models.py:491 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:508 +#: stock/models.py:498 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:513 stock/templates/stock/item_base.html:271 +#: stock/models.py:503 stock/templates/stock/item_base.html:299 msgid "Installed In" msgstr "" -#: stock/models.py:516 +#: stock/models.py:506 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:532 +#: stock/models.py:522 msgid "Serial number for this item" msgstr "" -#: stock/models.py:546 +#: stock/models.py:536 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:550 +#: stock/models.py:540 msgid "Stock Quantity" msgstr "" -#: stock/models.py:559 +#: stock/models.py:549 msgid "Source Build" msgstr "" -#: stock/models.py:561 +#: stock/models.py:551 msgid "Build for this stock item" msgstr "" -#: stock/models.py:572 +#: stock/models.py:562 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:575 +#: stock/models.py:565 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:581 +#: stock/models.py:571 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:588 +#: stock/models.py:578 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:601 +#: stock/models.py:591 msgid "Delete on deplete" msgstr "" -#: stock/models.py:601 +#: stock/models.py:591 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:611 stock/templates/stock/item.html:111 +#: stock/models.py:601 stock/templates/stock/item.html:111 msgid "Stock Item Notes" msgstr "" -#: stock/models.py:620 +#: stock/models.py:610 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:630 +#: stock/models.py:620 msgid "Scheduled for deletion" msgstr "" -#: stock/models.py:631 +#: stock/models.py:621 msgid "This StockItem will be deleted by the background worker" msgstr "" -#: stock/models.py:1094 +#: stock/models.py:1084 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1100 +#: stock/models.py:1090 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1106 +#: stock/models.py:1096 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({n})" msgstr "" -#: stock/models.py:1109 +#: stock/models.py:1099 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1112 +#: stock/models.py:1102 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1119 +#: stock/models.py:1109 #, python-brace-format msgid "Serial numbers already exist: {exists}" msgstr "" -#: stock/models.py:1277 +#: stock/models.py:1267 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:1775 +#: stock/models.py:1765 msgid "Entry notes" msgstr "" -#: stock/models.py:1832 +#: stock/models.py:1822 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:1838 +#: stock/models.py:1828 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:1856 +#: stock/models.py:1846 msgid "Test name" msgstr "" -#: stock/models.py:1862 templates/js/translated/table_filters.js:266 +#: stock/models.py:1852 templates/js/translated/table_filters.js:266 msgid "Test result" msgstr "" -#: stock/models.py:1868 +#: stock/models.py:1858 msgid "Test output value" msgstr "" -#: stock/models.py:1875 +#: stock/models.py:1865 msgid "Test result attachment" msgstr "" -#: stock/models.py:1881 +#: stock/models.py:1871 msgid "Test notes" msgstr "" -#: stock/serializers.py:166 +#: stock/serializers.py:171 msgid "Purchase price of this stock item" msgstr "" -#: stock/serializers.py:173 +#: stock/serializers.py:178 msgid "Purchase currency of this stock item" msgstr "" -#: stock/serializers.py:287 +#: stock/serializers.py:292 msgid "Enter number of stock items to serialize" msgstr "" -#: stock/serializers.py:302 +#: stock/serializers.py:307 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "" -#: stock/serializers.py:308 +#: stock/serializers.py:313 msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:319 stock/serializers.py:686 +#: stock/serializers.py:324 stock/serializers.py:691 msgid "Destination stock location" msgstr "" -#: stock/serializers.py:326 +#: stock/serializers.py:331 msgid "Optional note field" msgstr "" -#: stock/serializers.py:339 +#: stock/serializers.py:344 msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:556 +#: stock/serializers.py:561 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:584 +#: stock/serializers.py:589 msgid "Stock transaction notes" msgstr "" -#: stock/serializers.py:594 +#: stock/serializers.py:599 msgid "A list of stock items must be provided" msgstr "" @@ -5629,125 +5656,131 @@ msgstr "" msgid "Install" msgstr "" -#: stock/templates/stock/item_base.html:106 +#: stock/templates/stock/item_base.html:108 msgid "Convert to variant" msgstr "" -#: stock/templates/stock/item_base.html:109 +#: stock/templates/stock/item_base.html:111 msgid "Duplicate stock item" msgstr "" -#: stock/templates/stock/item_base.html:111 +#: stock/templates/stock/item_base.html:113 msgid "Edit stock item" msgstr "" -#: stock/templates/stock/item_base.html:114 +#: stock/templates/stock/item_base.html:116 msgid "Delete stock item" msgstr "" -#: stock/templates/stock/item_base.html:136 -#: stock/templates/stock/item_base.html:386 -#: templates/js/translated/table_filters.js:247 -msgid "Expired" +#: stock/templates/stock/item_base.html:154 +msgid "previous page" msgstr "" -#: stock/templates/stock/item_base.html:146 -#: stock/templates/stock/item_base.html:388 -#: templates/js/translated/table_filters.js:253 -msgid "Stale" +#: stock/templates/stock/item_base.html:154 +msgid "Navigate to previous serial number" msgstr "" -#: stock/templates/stock/item_base.html:161 -msgid "You are not in the list of owners of this item. This stock item cannot be edited." +#: stock/templates/stock/item_base.html:163 +msgid "next page" msgstr "" -#: stock/templates/stock/item_base.html:168 -msgid "This stock item is in production and cannot be edited." -msgstr "" - -#: stock/templates/stock/item_base.html:169 -msgid "Edit the stock item from the build view." -msgstr "" - -#: stock/templates/stock/item_base.html:182 -msgid "This stock item has not passed all required tests" +#: stock/templates/stock/item_base.html:163 +msgid "Navigate to next serial number" msgstr "" #: stock/templates/stock/item_base.html:190 #, python-format -msgid "This stock item is allocated to Sales Order %(link)s (Quantity: %(qty)s)" -msgstr "" - -#: stock/templates/stock/item_base.html:198 -#, python-format -msgid "This stock item is allocated to Build %(link)s (Quantity: %(qty)s)" -msgstr "" - -#: stock/templates/stock/item_base.html:204 -msgid "This stock item is serialized - it has a unique serial number and the quantity cannot be adjusted." -msgstr "" - -#: stock/templates/stock/item_base.html:208 -msgid "This stock item cannot be deleted as it has child items" -msgstr "" - -#: stock/templates/stock/item_base.html:212 -msgid "This stock item will be automatically deleted when all stock is depleted." -msgstr "" - -#: stock/templates/stock/item_base.html:241 -msgid "previous page" -msgstr "" - -#: stock/templates/stock/item_base.html:247 -msgid "next page" -msgstr "" - -#: stock/templates/stock/item_base.html:290 -#: templates/js/translated/build.js:1035 -msgid "No location set" -msgstr "" - -#: stock/templates/stock/item_base.html:297 -msgid "Barcode Identifier" -msgstr "" - -#: stock/templates/stock/item_base.html:339 -msgid "Parent Item" -msgstr "" - -#: stock/templates/stock/item_base.html:357 -msgid "No manufacturer set" -msgstr "" - -#: stock/templates/stock/item_base.html:386 -#, python-format msgid "This StockItem expired on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:388 +#: stock/templates/stock/item_base.html:190 +#: templates/js/translated/table_filters.js:247 +msgid "Expired" +msgstr "" + +#: stock/templates/stock/item_base.html:192 #, python-format msgid "This StockItem expires on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:395 -#: templates/js/translated/stock.js:1289 +#: stock/templates/stock/item_base.html:192 +#: templates/js/translated/table_filters.js:253 +msgid "Stale" +msgstr "" + +#: stock/templates/stock/item_base.html:199 +#: templates/js/translated/stock.js:1371 msgid "Last Updated" msgstr "" -#: stock/templates/stock/item_base.html:400 +#: stock/templates/stock/item_base.html:204 msgid "Last Stocktake" msgstr "" -#: stock/templates/stock/item_base.html:404 +#: stock/templates/stock/item_base.html:208 msgid "No stocktake performed" msgstr "" -#: stock/templates/stock/item_base.html:415 +#: stock/templates/stock/item_base.html:226 +msgid "You are not in the list of owners of this item. This stock item cannot be edited." +msgstr "" + +#: stock/templates/stock/item_base.html:233 +msgid "This stock item is in production and cannot be edited." +msgstr "" + +#: stock/templates/stock/item_base.html:234 +msgid "Edit the stock item from the build view." +msgstr "" + +#: stock/templates/stock/item_base.html:247 +msgid "This stock item has not passed all required tests" +msgstr "" + +#: stock/templates/stock/item_base.html:255 +#, python-format +msgid "This stock item is allocated to Sales Order %(link)s (Quantity: %(qty)s)" +msgstr "" + +#: stock/templates/stock/item_base.html:263 +#, python-format +msgid "This stock item is allocated to Build %(link)s (Quantity: %(qty)s)" +msgstr "" + +#: stock/templates/stock/item_base.html:269 +msgid "This stock item is serialized - it has a unique serial number and the quantity cannot be adjusted." +msgstr "" + +#: stock/templates/stock/item_base.html:273 +msgid "This stock item cannot be deleted as it has child items" +msgstr "" + +#: stock/templates/stock/item_base.html:277 +msgid "This stock item will be automatically deleted when all stock is depleted." +msgstr "" + +#: stock/templates/stock/item_base.html:318 +#: templates/js/translated/build.js:1035 +msgid "No location set" +msgstr "" + +#: stock/templates/stock/item_base.html:325 +msgid "Barcode Identifier" +msgstr "" + +#: stock/templates/stock/item_base.html:367 +msgid "Parent Item" +msgstr "" + +#: stock/templates/stock/item_base.html:385 +msgid "No manufacturer set" +msgstr "" + +#: stock/templates/stock/item_base.html:410 msgid "Tests" msgstr "" -#: stock/templates/stock/item_base.html:505 +#: stock/templates/stock/item_base.html:500 msgid "Edit Stock Status" msgstr "" @@ -5825,30 +5858,35 @@ msgstr "" msgid "New Location" msgstr "" -#: stock/templates/stock/location.html:86 +#: stock/templates/stock/location.html:95 +#: stock/templates/stock/location.html:101 +msgid "Location Path" +msgstr "" + +#: stock/templates/stock/location.html:102 msgid "Top level stock location" msgstr "" -#: stock/templates/stock/location.html:95 +#: stock/templates/stock/location.html:115 msgid "You are not in the list of owners of this location. This stock location cannot be edited." msgstr "" -#: stock/templates/stock/location.html:113 -#: stock/templates/stock/location.html:160 +#: stock/templates/stock/location.html:128 +#: stock/templates/stock/location.html:175 #: stock/templates/stock/location_sidebar.html:5 msgid "Sublocations" msgstr "" -#: stock/templates/stock/location.html:127 templates/InvenTree/search.html:170 +#: stock/templates/stock/location.html:142 templates/InvenTree/search.html:170 #: templates/stats.html:97 users/models.py:42 msgid "Stock Locations" msgstr "" -#: stock/templates/stock/location.html:167 templates/stock_table.html:30 +#: stock/templates/stock/location.html:182 templates/stock_table.html:30 msgid "Printing Actions" msgstr "" -#: stock/templates/stock/location.html:171 templates/stock_table.html:34 +#: stock/templates/stock/location.html:186 templates/stock_table.html:34 msgid "Print labels" msgstr "" @@ -5942,7 +5980,7 @@ msgstr "" msgid "Uninstall Stock Items" msgstr "" -#: stock/views.py:760 templates/js/translated/stock.js:648 +#: stock/views.py:760 templates/js/translated/stock.js:730 msgid "Confirm stock adjustment" msgstr "" @@ -5950,7 +5988,7 @@ msgstr "" msgid "Uninstalled stock items" msgstr "" -#: stock/views.py:793 templates/js/translated/stock.js:318 +#: stock/views.py:793 templates/js/translated/stock.js:319 msgid "Edit Stock Item" msgstr "" @@ -5962,7 +6000,7 @@ msgstr "" msgid "Create new Stock Item" msgstr "" -#: stock/views.py:1186 templates/js/translated/stock.js:298 +#: stock/views.py:1186 templates/js/translated/stock.js:299 msgid "Duplicate Stock Item" msgstr "" @@ -6868,7 +6906,7 @@ msgstr "" msgid "Unlink" msgstr "" -#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:600 +#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:682 msgid "Remove stock item" msgstr "" @@ -6963,7 +7001,7 @@ msgid "View BOM" msgstr "" #: templates/js/translated/bom.js:608 templates/js/translated/build.js:1183 -#: templates/js/translated/order.js:1320 +#: templates/js/translated/order.js:1319 msgid "Actions" msgstr "" @@ -7055,7 +7093,7 @@ msgstr "" msgid "No build order allocations found" msgstr "" -#: templates/js/translated/build.js:424 templates/js/translated/order.js:1194 +#: templates/js/translated/build.js:424 templates/js/translated/order.js:1193 msgid "Location not specified" msgstr "" @@ -7064,12 +7102,12 @@ msgid "No active build outputs found" msgstr "" #: templates/js/translated/build.js:1052 templates/js/translated/build.js:1760 -#: templates/js/translated/order.js:1327 +#: templates/js/translated/order.js:1326 msgid "Edit stock allocation" msgstr "" #: templates/js/translated/build.js:1054 templates/js/translated/build.js:1761 -#: templates/js/translated/order.js:1328 +#: templates/js/translated/order.js:1327 msgid "Delete stock allocation" msgstr "" @@ -7090,11 +7128,11 @@ msgid "Quantity Per" msgstr "" #: templates/js/translated/build.js:1134 templates/js/translated/build.js:1360 -#: templates/js/translated/build.js:1756 templates/js/translated/order.js:1557 +#: templates/js/translated/build.js:1756 templates/js/translated/order.js:1556 msgid "Allocated" msgstr "" -#: templates/js/translated/build.js:1190 templates/js/translated/order.js:1611 +#: templates/js/translated/build.js:1190 templates/js/translated/order.js:1610 msgid "Build stock" msgstr "" @@ -7102,7 +7140,7 @@ msgstr "" msgid "Order stock" msgstr "" -#: templates/js/translated/build.js:1197 templates/js/translated/order.js:1604 +#: templates/js/translated/build.js:1197 templates/js/translated/order.js:1603 msgid "Allocate stock" msgstr "" @@ -7143,9 +7181,9 @@ msgstr "" msgid "No builds matching query" msgstr "" -#: templates/js/translated/build.js:1593 templates/js/translated/part.js:966 -#: templates/js/translated/part.js:1377 templates/js/translated/stock.js:1094 -#: templates/js/translated/stock.js:1871 +#: templates/js/translated/build.js:1593 templates/js/translated/part.js:1147 +#: templates/js/translated/part.js:1558 templates/js/translated/stock.js:1176 +#: templates/js/translated/stock.js:1953 msgid "Select" msgstr "" @@ -7153,7 +7191,7 @@ msgstr "" msgid "Build order is overdue" msgstr "" -#: templates/js/translated/build.js:1674 templates/js/translated/stock.js:2090 +#: templates/js/translated/build.js:1674 templates/js/translated/stock.js:2172 msgid "No user information" msgstr "" @@ -7197,10 +7235,6 @@ msgstr "" msgid "Delete Supplier Part" msgstr "" -#: templates/js/translated/company.js:265 -msgid "Edit Company" -msgstr "" - #: templates/js/translated/company.js:286 msgid "Add new Company" msgstr "" @@ -7230,34 +7264,34 @@ msgid "No manufacturer parts found" msgstr "" #: templates/js/translated/company.js:497 -#: templates/js/translated/company.js:754 templates/js/translated/part.js:449 -#: templates/js/translated/part.js:534 +#: templates/js/translated/company.js:754 templates/js/translated/part.js:456 +#: templates/js/translated/part.js:541 msgid "Template part" msgstr "" #: templates/js/translated/company.js:501 -#: templates/js/translated/company.js:758 templates/js/translated/part.js:453 -#: templates/js/translated/part.js:538 +#: templates/js/translated/company.js:758 templates/js/translated/part.js:460 +#: templates/js/translated/part.js:545 msgid "Assembled part" msgstr "" -#: templates/js/translated/company.js:628 templates/js/translated/part.js:626 +#: templates/js/translated/company.js:628 templates/js/translated/part.js:633 msgid "No parameters found" msgstr "" -#: templates/js/translated/company.js:665 templates/js/translated/part.js:668 +#: templates/js/translated/company.js:665 templates/js/translated/part.js:675 msgid "Edit parameter" msgstr "" -#: templates/js/translated/company.js:666 templates/js/translated/part.js:669 +#: templates/js/translated/company.js:666 templates/js/translated/part.js:676 msgid "Delete parameter" msgstr "" -#: templates/js/translated/company.js:685 templates/js/translated/part.js:686 +#: templates/js/translated/company.js:685 templates/js/translated/part.js:693 msgid "Edit Parameter" msgstr "" -#: templates/js/translated/company.js:696 templates/js/translated/part.js:698 +#: templates/js/translated/company.js:696 templates/js/translated/part.js:705 msgid "Delete Parameter" msgstr "" @@ -7346,7 +7380,7 @@ msgid "NO" msgstr "" #: templates/js/translated/label.js:29 templates/js/translated/report.js:118 -#: templates/js/translated/stock.js:624 +#: templates/js/translated/stock.js:706 msgid "Select Stock Items" msgstr "" @@ -7502,11 +7536,11 @@ msgstr "" msgid "Export Order" msgstr "" -#: templates/js/translated/order.js:211 templates/js/translated/stock.js:423 +#: templates/js/translated/order.js:211 templates/js/translated/stock.js:505 msgid "Format" msgstr "" -#: templates/js/translated/order.js:212 templates/js/translated/stock.js:424 +#: templates/js/translated/order.js:212 templates/js/translated/stock.js:506 msgid "Select file format" msgstr "" @@ -7522,7 +7556,7 @@ msgstr "" msgid "Quantity to receive" msgstr "" -#: templates/js/translated/order.js:360 templates/js/translated/stock.js:1673 +#: templates/js/translated/order.js:360 templates/js/translated/stock.js:1755 msgid "Stock Status" msgstr "" @@ -7546,321 +7580,321 @@ msgstr "" msgid "Receive Purchase Order Items" msgstr "" -#: templates/js/translated/order.js:627 +#: templates/js/translated/order.js:627 templates/js/translated/part.js:746 msgid "No purchase orders found" msgstr "" -#: templates/js/translated/order.js:652 templates/js/translated/order.js:1063 +#: templates/js/translated/order.js:659 templates/js/translated/order.js:1062 msgid "Order is overdue" msgstr "" -#: templates/js/translated/order.js:772 templates/js/translated/order.js:1646 +#: templates/js/translated/order.js:771 templates/js/translated/order.js:1645 msgid "Edit Line Item" msgstr "" -#: templates/js/translated/order.js:784 templates/js/translated/order.js:1657 +#: templates/js/translated/order.js:783 templates/js/translated/order.js:1656 msgid "Delete Line Item" msgstr "" -#: templates/js/translated/order.js:823 +#: templates/js/translated/order.js:822 msgid "No line items found" msgstr "" -#: templates/js/translated/order.js:850 templates/js/translated/order.js:1467 +#: templates/js/translated/order.js:849 templates/js/translated/order.js:1466 msgid "Total" msgstr "" -#: templates/js/translated/order.js:904 templates/js/translated/order.js:1492 -#: templates/js/translated/part.js:1594 templates/js/translated/part.js:1805 +#: templates/js/translated/order.js:903 templates/js/translated/order.js:1491 +#: templates/js/translated/part.js:1775 templates/js/translated/part.js:1986 msgid "Unit Price" msgstr "" -#: templates/js/translated/order.js:919 templates/js/translated/order.js:1508 +#: templates/js/translated/order.js:918 templates/js/translated/order.js:1507 msgid "Total Price" msgstr "" -#: templates/js/translated/order.js:997 templates/js/translated/order.js:1617 +#: templates/js/translated/order.js:996 templates/js/translated/order.js:1616 msgid "Edit line item" msgstr "" -#: templates/js/translated/order.js:998 +#: templates/js/translated/order.js:997 msgid "Delete line item" msgstr "" -#: templates/js/translated/order.js:1002 +#: templates/js/translated/order.js:1001 templates/js/translated/part.js:878 msgid "Receive line item" msgstr "" -#: templates/js/translated/order.js:1039 +#: templates/js/translated/order.js:1038 msgid "No sales orders found" msgstr "" -#: templates/js/translated/order.js:1077 +#: templates/js/translated/order.js:1076 msgid "Invalid Customer" msgstr "" -#: templates/js/translated/order.js:1155 +#: templates/js/translated/order.js:1154 msgid "No sales order allocations found" msgstr "" -#: templates/js/translated/order.js:1248 +#: templates/js/translated/order.js:1247 msgid "Edit Stock Allocation" msgstr "" -#: templates/js/translated/order.js:1265 +#: templates/js/translated/order.js:1264 msgid "Confirm Delete Operation" msgstr "" -#: templates/js/translated/order.js:1266 +#: templates/js/translated/order.js:1265 msgid "Delete Stock Allocation" msgstr "" -#: templates/js/translated/order.js:1308 +#: templates/js/translated/order.js:1307 msgid "Stock location not specified" msgstr "" -#: templates/js/translated/order.js:1557 +#: templates/js/translated/order.js:1556 msgid "Fulfilled" msgstr "" -#: templates/js/translated/order.js:1601 +#: templates/js/translated/order.js:1600 msgid "Allocate serial numbers" msgstr "" -#: templates/js/translated/order.js:1607 +#: templates/js/translated/order.js:1606 msgid "Purchase stock" msgstr "" -#: templates/js/translated/order.js:1614 templates/js/translated/order.js:1793 +#: templates/js/translated/order.js:1613 templates/js/translated/order.js:1792 msgid "Calculate price" msgstr "" -#: templates/js/translated/order.js:1618 +#: templates/js/translated/order.js:1617 msgid "Delete line item " msgstr "" -#: templates/js/translated/order.js:1741 +#: templates/js/translated/order.js:1740 msgid "Allocate Stock Item" msgstr "" -#: templates/js/translated/order.js:1801 +#: templates/js/translated/order.js:1800 msgid "Update Unit Price" msgstr "" -#: templates/js/translated/order.js:1815 +#: templates/js/translated/order.js:1814 msgid "No matching line items" msgstr "" -#: templates/js/translated/part.js:51 +#: templates/js/translated/part.js:52 msgid "Part Attributes" msgstr "" -#: templates/js/translated/part.js:55 +#: templates/js/translated/part.js:56 msgid "Part Creation Options" msgstr "" -#: templates/js/translated/part.js:59 +#: templates/js/translated/part.js:60 msgid "Part Duplication Options" msgstr "" -#: templates/js/translated/part.js:63 +#: templates/js/translated/part.js:64 msgid "Supplier Options" msgstr "" -#: templates/js/translated/part.js:77 +#: templates/js/translated/part.js:78 msgid "Add Part Category" msgstr "" -#: templates/js/translated/part.js:166 +#: templates/js/translated/part.js:162 msgid "Create Initial Stock" msgstr "" -#: templates/js/translated/part.js:167 +#: templates/js/translated/part.js:163 msgid "Create an initial stock item for this part" msgstr "" -#: templates/js/translated/part.js:174 +#: templates/js/translated/part.js:170 msgid "Initial Stock Quantity" msgstr "" -#: templates/js/translated/part.js:175 +#: templates/js/translated/part.js:171 msgid "Specify initial stock quantity for this part" msgstr "" -#: templates/js/translated/part.js:182 +#: templates/js/translated/part.js:178 msgid "Select destination stock location" msgstr "" -#: templates/js/translated/part.js:193 +#: templates/js/translated/part.js:196 msgid "Copy Category Parameters" msgstr "" -#: templates/js/translated/part.js:194 +#: templates/js/translated/part.js:197 msgid "Copy parameter templates from selected part category" msgstr "" -#: templates/js/translated/part.js:202 +#: templates/js/translated/part.js:205 msgid "Add Supplier Data" msgstr "" -#: templates/js/translated/part.js:203 +#: templates/js/translated/part.js:206 msgid "Create initial supplier data for this part" msgstr "" -#: templates/js/translated/part.js:259 +#: templates/js/translated/part.js:262 msgid "Copy Image" msgstr "" -#: templates/js/translated/part.js:260 +#: templates/js/translated/part.js:263 msgid "Copy image from original part" msgstr "" -#: templates/js/translated/part.js:268 +#: templates/js/translated/part.js:271 msgid "Copy bill of materials from original part" msgstr "" -#: templates/js/translated/part.js:275 +#: templates/js/translated/part.js:278 msgid "Copy Parameters" msgstr "" -#: templates/js/translated/part.js:276 +#: templates/js/translated/part.js:279 msgid "Copy parameter data from original part" msgstr "" -#: templates/js/translated/part.js:289 +#: templates/js/translated/part.js:292 msgid "Parent part category" msgstr "" -#: templates/js/translated/part.js:333 +#: templates/js/translated/part.js:336 msgid "Edit Part" msgstr "" -#: templates/js/translated/part.js:335 +#: templates/js/translated/part.js:338 msgid "Part edited" msgstr "" -#: templates/js/translated/part.js:403 +#: templates/js/translated/part.js:410 msgid "You are subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:405 +#: templates/js/translated/part.js:412 msgid "You have subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:410 +#: templates/js/translated/part.js:417 msgid "Subscribe to notifications for this item" msgstr "" -#: templates/js/translated/part.js:412 +#: templates/js/translated/part.js:419 msgid "You have unsubscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:441 templates/js/translated/part.js:526 +#: templates/js/translated/part.js:448 templates/js/translated/part.js:533 msgid "Trackable part" msgstr "" -#: templates/js/translated/part.js:445 templates/js/translated/part.js:530 +#: templates/js/translated/part.js:452 templates/js/translated/part.js:537 msgid "Virtual part" msgstr "" -#: templates/js/translated/part.js:457 +#: templates/js/translated/part.js:464 msgid "Subscribed part" msgstr "" -#: templates/js/translated/part.js:461 +#: templates/js/translated/part.js:468 msgid "Salable part" msgstr "" -#: templates/js/translated/part.js:576 +#: templates/js/translated/part.js:583 msgid "No variants found" msgstr "" -#: templates/js/translated/part.js:765 +#: templates/js/translated/part.js:946 msgid "Delete part relationship" msgstr "" -#: templates/js/translated/part.js:789 +#: templates/js/translated/part.js:970 msgid "Delete Part Relationship" msgstr "" -#: templates/js/translated/part.js:856 templates/js/translated/part.js:1116 +#: templates/js/translated/part.js:1037 templates/js/translated/part.js:1297 msgid "No parts found" msgstr "" -#: templates/js/translated/part.js:1026 +#: templates/js/translated/part.js:1207 msgid "No category" msgstr "" -#: templates/js/translated/part.js:1049 +#: templates/js/translated/part.js:1230 #: templates/js/translated/table_filters.js:381 msgid "Low stock" msgstr "" -#: templates/js/translated/part.js:1140 templates/js/translated/part.js:1312 -#: templates/js/translated/stock.js:1832 +#: templates/js/translated/part.js:1321 templates/js/translated/part.js:1493 +#: templates/js/translated/stock.js:1914 msgid "Display as list" msgstr "" -#: templates/js/translated/part.js:1156 +#: templates/js/translated/part.js:1337 msgid "Display as grid" msgstr "" -#: templates/js/translated/part.js:1331 templates/js/translated/stock.js:1851 +#: templates/js/translated/part.js:1512 templates/js/translated/stock.js:1933 msgid "Display as tree" msgstr "" -#: templates/js/translated/part.js:1395 +#: templates/js/translated/part.js:1576 msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:1409 templates/js/translated/stock.js:1895 +#: templates/js/translated/part.js:1590 templates/js/translated/stock.js:1977 msgid "Path" msgstr "" -#: templates/js/translated/part.js:1453 +#: templates/js/translated/part.js:1634 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:1504 templates/js/translated/stock.js:816 +#: templates/js/translated/part.js:1685 templates/js/translated/stock.js:898 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:1505 templates/js/translated/stock.js:817 +#: templates/js/translated/part.js:1686 templates/js/translated/stock.js:899 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:1511 +#: templates/js/translated/part.js:1692 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:1533 +#: templates/js/translated/part.js:1714 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:1547 +#: templates/js/translated/part.js:1728 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:1572 +#: templates/js/translated/part.js:1753 #, python-brace-format msgid "No ${human_name} information found" msgstr "" -#: templates/js/translated/part.js:1627 +#: templates/js/translated/part.js:1808 #, python-brace-format msgid "Edit ${human_name}" msgstr "" -#: templates/js/translated/part.js:1628 +#: templates/js/translated/part.js:1809 #, python-brace-format msgid "Delete ${human_name}" msgstr "" -#: templates/js/translated/part.js:1729 +#: templates/js/translated/part.js:1910 msgid "Single Price" msgstr "" -#: templates/js/translated/part.js:1748 +#: templates/js/translated/part.js:1929 msgid "Single Price Difference" msgstr "" @@ -7930,276 +7964,300 @@ msgstr "" msgid "Sales Order(s) must be selected before printing report" msgstr "" -#: templates/js/translated/stock.js:70 +#: templates/js/translated/stock.js:71 msgid "Serialize Stock Item" msgstr "" -#: templates/js/translated/stock.js:88 templates/js/translated/stock.js:167 +#: templates/js/translated/stock.js:89 templates/js/translated/stock.js:168 msgid "Next available serial number" msgstr "" -#: templates/js/translated/stock.js:90 templates/js/translated/stock.js:169 +#: templates/js/translated/stock.js:91 templates/js/translated/stock.js:170 msgid "Latest serial number" msgstr "" -#: templates/js/translated/stock.js:104 +#: templates/js/translated/stock.js:105 msgid "Parent stock location" msgstr "" -#: templates/js/translated/stock.js:140 +#: templates/js/translated/stock.js:141 msgid "New Stock Location" msgstr "" -#: templates/js/translated/stock.js:180 +#: templates/js/translated/stock.js:181 msgid "This part cannot be serialized" msgstr "" -#: templates/js/translated/stock.js:219 +#: templates/js/translated/stock.js:220 msgid "Enter initial quantity for this stock item" msgstr "" -#: templates/js/translated/stock.js:225 +#: templates/js/translated/stock.js:226 msgid "Enter serial numbers for new stock (or leave blank)" msgstr "" -#: templates/js/translated/stock.js:368 +#: templates/js/translated/stock.js:369 msgid "Created new stock item" msgstr "" -#: templates/js/translated/stock.js:381 +#: templates/js/translated/stock.js:382 msgid "Created multiple stock items" msgstr "" -#: templates/js/translated/stock.js:420 +#: templates/js/translated/stock.js:407 +msgid "Find Serial Number" +msgstr "" + +#: templates/js/translated/stock.js:411 templates/js/translated/stock.js:412 +msgid "Enter serial number" +msgstr "" + +#: templates/js/translated/stock.js:428 +msgid "Enter a serial number" +msgstr "" + +#: templates/js/translated/stock.js:448 +msgid "No matching serial number" +msgstr "" + +#: templates/js/translated/stock.js:457 +msgid "More than one matching result found" +msgstr "" + +#: templates/js/translated/stock.js:502 msgid "Export Stock" msgstr "" -#: templates/js/translated/stock.js:431 +#: templates/js/translated/stock.js:513 msgid "Include Sublocations" msgstr "" -#: templates/js/translated/stock.js:432 +#: templates/js/translated/stock.js:514 msgid "Include stock items in sublocations" msgstr "" -#: templates/js/translated/stock.js:474 +#: templates/js/translated/stock.js:556 msgid "Transfer Stock" msgstr "" -#: templates/js/translated/stock.js:475 +#: templates/js/translated/stock.js:557 msgid "Move" msgstr "" -#: templates/js/translated/stock.js:481 +#: templates/js/translated/stock.js:563 msgid "Count Stock" msgstr "" -#: templates/js/translated/stock.js:482 +#: templates/js/translated/stock.js:564 msgid "Count" msgstr "" -#: templates/js/translated/stock.js:486 +#: templates/js/translated/stock.js:568 msgid "Remove Stock" msgstr "" -#: templates/js/translated/stock.js:487 +#: templates/js/translated/stock.js:569 msgid "Take" msgstr "" -#: templates/js/translated/stock.js:491 +#: templates/js/translated/stock.js:573 msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:492 users/models.py:200 +#: templates/js/translated/stock.js:574 users/models.py:200 msgid "Add" msgstr "" -#: templates/js/translated/stock.js:496 templates/stock_table.html:56 +#: templates/js/translated/stock.js:578 templates/stock_table.html:56 msgid "Delete Stock" msgstr "" -#: templates/js/translated/stock.js:585 +#: templates/js/translated/stock.js:667 msgid "Quantity cannot be adjusted for serialized stock" msgstr "" -#: templates/js/translated/stock.js:585 +#: templates/js/translated/stock.js:667 msgid "Specify stock quantity" msgstr "" -#: templates/js/translated/stock.js:625 +#: templates/js/translated/stock.js:707 msgid "You must select at least one available stock item" msgstr "" -#: templates/js/translated/stock.js:783 +#: templates/js/translated/stock.js:865 msgid "PASS" msgstr "" -#: templates/js/translated/stock.js:785 +#: templates/js/translated/stock.js:867 msgid "FAIL" msgstr "" -#: templates/js/translated/stock.js:790 +#: templates/js/translated/stock.js:872 msgid "NO RESULT" msgstr "" -#: templates/js/translated/stock.js:812 +#: templates/js/translated/stock.js:894 msgid "Add test result" msgstr "" -#: templates/js/translated/stock.js:838 +#: templates/js/translated/stock.js:920 msgid "No test results found" msgstr "" -#: templates/js/translated/stock.js:895 +#: templates/js/translated/stock.js:977 msgid "Test Date" msgstr "" -#: templates/js/translated/stock.js:1002 +#: templates/js/translated/stock.js:1084 msgid "In production" msgstr "" -#: templates/js/translated/stock.js:1006 +#: templates/js/translated/stock.js:1088 msgid "Installed in Stock Item" msgstr "" -#: templates/js/translated/stock.js:1010 +#: templates/js/translated/stock.js:1092 msgid "Shipped to customer" msgstr "" -#: templates/js/translated/stock.js:1014 +#: templates/js/translated/stock.js:1096 msgid "Assigned to Sales Order" msgstr "" -#: templates/js/translated/stock.js:1020 +#: templates/js/translated/stock.js:1102 msgid "No stock location set" msgstr "" -#: templates/js/translated/stock.js:1178 +#: templates/js/translated/stock.js:1260 msgid "Stock item is in production" msgstr "" -#: templates/js/translated/stock.js:1183 +#: templates/js/translated/stock.js:1265 msgid "Stock item assigned to sales order" msgstr "" -#: templates/js/translated/stock.js:1186 +#: templates/js/translated/stock.js:1268 msgid "Stock item assigned to customer" msgstr "" -#: templates/js/translated/stock.js:1190 +#: templates/js/translated/stock.js:1272 msgid "Stock item has expired" msgstr "" -#: templates/js/translated/stock.js:1192 +#: templates/js/translated/stock.js:1274 msgid "Stock item will expire soon" msgstr "" -#: templates/js/translated/stock.js:1196 +#: templates/js/translated/stock.js:1278 msgid "Stock item has been allocated" msgstr "" -#: templates/js/translated/stock.js:1200 +#: templates/js/translated/stock.js:1282 msgid "Stock item has been installed in another item" msgstr "" -#: templates/js/translated/stock.js:1207 +#: templates/js/translated/stock.js:1289 msgid "Stock item has been rejected" msgstr "" -#: templates/js/translated/stock.js:1209 +#: templates/js/translated/stock.js:1291 msgid "Stock item is lost" msgstr "" -#: templates/js/translated/stock.js:1211 +#: templates/js/translated/stock.js:1293 msgid "Stock item is destroyed" msgstr "" -#: templates/js/translated/stock.js:1215 +#: templates/js/translated/stock.js:1297 #: templates/js/translated/table_filters.js:183 msgid "Depleted" msgstr "" -#: templates/js/translated/stock.js:1265 +#: templates/js/translated/stock.js:1347 msgid "Stocktake" msgstr "" -#: templates/js/translated/stock.js:1338 +#: templates/js/translated/stock.js:1420 msgid "Supplier part not specified" msgstr "" -#: templates/js/translated/stock.js:1376 +#: templates/js/translated/stock.js:1458 msgid "No stock items matching query" msgstr "" -#: templates/js/translated/stock.js:1397 templates/js/translated/stock.js:1445 +#: templates/js/translated/stock.js:1479 templates/js/translated/stock.js:1527 msgid "items" msgstr "" -#: templates/js/translated/stock.js:1485 +#: templates/js/translated/stock.js:1567 msgid "batches" msgstr "" -#: templates/js/translated/stock.js:1512 +#: templates/js/translated/stock.js:1594 msgid "locations" msgstr "" -#: templates/js/translated/stock.js:1514 +#: templates/js/translated/stock.js:1596 msgid "Undefined location" msgstr "" -#: templates/js/translated/stock.js:1688 +#: templates/js/translated/stock.js:1770 msgid "Set Stock Status" msgstr "" -#: templates/js/translated/stock.js:1702 +#: templates/js/translated/stock.js:1784 msgid "Select Status Code" msgstr "" -#: templates/js/translated/stock.js:1703 +#: templates/js/translated/stock.js:1785 msgid "Status code must be selected" msgstr "" -#: templates/js/translated/stock.js:1927 +#: templates/js/translated/stock.js:2009 msgid "Invalid date" msgstr "" -#: templates/js/translated/stock.js:1974 +#: templates/js/translated/stock.js:2031 +msgid "Details" +msgstr "" + +#: templates/js/translated/stock.js:2056 msgid "Location no longer exists" msgstr "" -#: templates/js/translated/stock.js:1993 +#: templates/js/translated/stock.js:2075 msgid "Purchase order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2012 +#: templates/js/translated/stock.js:2094 msgid "Customer no longer exists" msgstr "" -#: templates/js/translated/stock.js:2030 +#: templates/js/translated/stock.js:2112 msgid "Stock item no longer exists" msgstr "" -#: templates/js/translated/stock.js:2053 +#: templates/js/translated/stock.js:2135 msgid "Added" msgstr "" -#: templates/js/translated/stock.js:2061 +#: templates/js/translated/stock.js:2143 msgid "Removed" msgstr "" -#: templates/js/translated/stock.js:2102 +#: templates/js/translated/stock.js:2184 msgid "Edit tracking entry" msgstr "" -#: templates/js/translated/stock.js:2103 +#: templates/js/translated/stock.js:2185 msgid "Delete tracking entry" msgstr "" -#: templates/js/translated/stock.js:2154 +#: templates/js/translated/stock.js:2236 msgid "No installed items" msgstr "" -#: templates/js/translated/stock.js:2205 +#: templates/js/translated/stock.js:2287 msgid "Uninstall Stock Item" msgstr "" diff --git a/InvenTree/locale/ru/LC_MESSAGES/django.po b/InvenTree/locale/ru/LC_MESSAGES/django.po index 4a84b664f2..3b0f4954b2 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-11-30 21:49+0000\n" -"PO-Revision-Date: 2021-11-30 21:52\n" +"POT-Creation-Date: 2021-12-03 10:37+0000\n" +"PO-Revision-Date: 2021-12-03 11:26\n" "Last-Translator: \n" "Language-Team: Russian\n" "Language: ru_RU\n" @@ -114,129 +114,130 @@ msgstr "Серийных номеров не найдено" msgid "Number of unique serial number ({s}) must match quantity ({q})" msgstr "Число уникальных серийных номеров ({s}) должно соответствовать количеству ({q})" -#: InvenTree/models.py:114 +#: InvenTree/models.py:120 msgid "Missing file" -msgstr "" +msgstr "Файл не найден" -#: InvenTree/models.py:115 +#: InvenTree/models.py:121 msgid "Missing external link" -msgstr "" +msgstr "Отсутствует внешняя ссылка" -#: InvenTree/models.py:126 stock/models.py:1874 +#: InvenTree/models.py:132 stock/models.py:1864 #: templates/js/translated/attachment.js:117 msgid "Attachment" msgstr "Вложения" -#: InvenTree/models.py:127 +#: InvenTree/models.py:133 msgid "Select file to attach" msgstr "Выберите файл для вложения" -#: InvenTree/models.py:133 company/models.py:131 company/models.py:348 +#: InvenTree/models.py:139 company/models.py:131 company/models.py:348 #: company/models.py:564 order/models.py:163 part/models.py:797 #: report/templates/report/inventree_build_order_base.html:165 #: templates/js/translated/company.js:537 -#: templates/js/translated/company.js:826 templates/js/translated/part.js:1077 +#: templates/js/translated/company.js:826 templates/js/translated/part.js:1258 msgid "Link" -msgstr "" +msgstr "Ссылка" -#: InvenTree/models.py:134 build/models.py:330 part/models.py:798 -#: stock/models.py:540 +#: InvenTree/models.py:140 build/models.py:330 part/models.py:798 +#: stock/models.py:530 msgid "Link to external URL" msgstr "Ссылка на внешний URL" -#: InvenTree/models.py:137 templates/js/translated/attachment.js:161 +#: InvenTree/models.py:143 templates/js/translated/attachment.js:161 msgid "Comment" msgstr "Комментарий" -#: InvenTree/models.py:137 +#: InvenTree/models.py:143 msgid "File comment" msgstr "Комментарий к файлу" -#: InvenTree/models.py:143 InvenTree/models.py:144 common/models.py:1185 +#: InvenTree/models.py:149 InvenTree/models.py:150 common/models.py:1185 #: common/models.py:1186 part/models.py:2205 part/models.py:2225 #: report/templates/report/inventree_test_report_base.html:96 -#: templates/js/translated/stock.js:2084 +#: templates/js/translated/stock.js:2166 msgid "User" msgstr "Пользователь" -#: InvenTree/models.py:147 +#: InvenTree/models.py:153 msgid "upload date" msgstr "дата загрузки" -#: InvenTree/models.py:170 +#: InvenTree/models.py:176 msgid "Filename must not be empty" msgstr "Имя файла не должно быть пустым" -#: InvenTree/models.py:193 +#: InvenTree/models.py:199 msgid "Invalid attachment directory" msgstr "Неверная директория вложений" -#: InvenTree/models.py:203 +#: InvenTree/models.py:209 #, python-brace-format msgid "Filename contains illegal character '{c}'" -msgstr "" +msgstr "Имя файла содержит запрещенные символы '{c}'" -#: InvenTree/models.py:206 +#: InvenTree/models.py:212 msgid "Filename missing extension" -msgstr "" +msgstr "Отсутствует расширение для имени файла" -#: InvenTree/models.py:213 +#: InvenTree/models.py:219 msgid "Attachment with this filename already exists" -msgstr "" +msgstr "Вложение с таким именем файла уже существует" -#: InvenTree/models.py:220 +#: InvenTree/models.py:226 msgid "Error renaming file" -msgstr "" +msgstr "Ошибка переименования файла" -#: InvenTree/models.py:255 +#: InvenTree/models.py:261 msgid "Invalid choice" -msgstr "" +msgstr "Неверный выбор" -#: InvenTree/models.py:271 InvenTree/models.py:272 company/models.py:415 +#: InvenTree/models.py:277 InvenTree/models.py:278 company/models.py:415 #: label/models.py:112 part/models.py:741 part/models.py:2389 -#: part/templates/part/detail.html:25 report/models.py:181 -#: templates/InvenTree/settings/settings.html:259 -#: templates/js/translated/company.js:638 templates/js/translated/part.js:499 -#: templates/js/translated/part.js:636 templates/js/translated/part.js:1384 -#: templates/js/translated/stock.js:1877 +#: report/models.py:181 templates/InvenTree/settings/settings.html:259 +#: templates/js/translated/company.js:638 templates/js/translated/part.js:506 +#: templates/js/translated/part.js:643 templates/js/translated/part.js:1565 +#: templates/js/translated/stock.js:1959 msgid "Name" msgstr "Название" -#: InvenTree/models.py:278 build/models.py:207 +#: InvenTree/models.py:284 build/models.py:207 #: build/templates/build/detail.html:25 company/models.py:354 -#: company/models.py:570 company/templates/company/manufacturer_part.html:80 -#: company/templates/company/supplier_part.html:81 label/models.py:119 -#: order/models.py:161 part/models.py:764 part/templates/part/detail.html:30 +#: company/models.py:570 company/templates/company/company_base.html:68 +#: company/templates/company/manufacturer_part.html:76 +#: company/templates/company/supplier_part.html:73 label/models.py:119 +#: order/models.py:161 part/models.py:764 part/templates/part/category.html:70 +#: part/templates/part/part_base.html:163 #: part/templates/part/set_category.html:14 report/models.py:194 #: report/models.py:553 report/models.py:592 #: report/templates/report/inventree_build_order_base.html:118 -#: stock/templates/stock/location.html:108 templates/js/translated/bom.js:215 +#: stock/templates/stock/location.html:89 templates/js/translated/bom.js:215 #: templates/js/translated/bom.js:428 templates/js/translated/build.js:1621 #: templates/js/translated/company.js:345 #: templates/js/translated/company.js:548 -#: templates/js/translated/company.js:837 templates/js/translated/order.js:673 -#: templates/js/translated/order.js:855 templates/js/translated/order.js:1091 -#: templates/js/translated/part.js:558 templates/js/translated/part.js:752 -#: templates/js/translated/part.js:837 templates/js/translated/part.js:1007 -#: templates/js/translated/part.js:1403 templates/js/translated/part.js:1472 -#: templates/js/translated/stock.js:1151 templates/js/translated/stock.js:1889 -#: templates/js/translated/stock.js:1934 +#: templates/js/translated/company.js:837 templates/js/translated/order.js:680 +#: templates/js/translated/order.js:854 templates/js/translated/order.js:1090 +#: templates/js/translated/part.js:565 templates/js/translated/part.js:933 +#: templates/js/translated/part.js:1018 templates/js/translated/part.js:1188 +#: templates/js/translated/part.js:1584 templates/js/translated/part.js:1653 +#: templates/js/translated/stock.js:1233 templates/js/translated/stock.js:1971 +#: templates/js/translated/stock.js:2016 msgid "Description" msgstr "Описание" -#: InvenTree/models.py:279 +#: InvenTree/models.py:285 msgid "Description (optional)" msgstr "Описание (необязательно)" -#: InvenTree/models.py:287 +#: InvenTree/models.py:293 msgid "parent" msgstr "родитель" -#: InvenTree/serializers.py:62 part/models.py:2674 +#: InvenTree/serializers.py:65 part/models.py:2674 msgid "Must be a valid number" -msgstr "" +msgstr "Должно быть действительным номером" -#: InvenTree/serializers.py:285 +#: InvenTree/serializers.py:299 msgid "Filename" msgstr "Имя файла" @@ -258,7 +259,7 @@ msgstr "Испанский" #: InvenTree/settings.py:674 msgid "Spanish (Mexican)" -msgstr "" +msgstr "Испанский (Мексика)" #: InvenTree/settings.py:675 msgid "French" @@ -294,7 +295,7 @@ msgstr "Польский" #: InvenTree/settings.py:683 msgid "Portugese" -msgstr "" +msgstr "Португальский" #: InvenTree/settings.py:684 msgid "Russian" @@ -361,7 +362,7 @@ msgid "Returned" msgstr "Возвращено" #: InvenTree/status_codes.py:143 -#: order/templates/order/sales_order_base.html:147 +#: order/templates/order/sales_order_base.html:148 msgid "Shipped" msgstr "Доставлено" @@ -566,7 +567,7 @@ msgid "Barcode associated with StockItem" msgstr "Штрих-код, связанный с инвентарем" #: build/forms.py:36 build/models.py:1283 -#: build/templates/build/build_base.html:124 +#: build/templates/build/build_base.html:132 #: build/templates/build/detail.html:35 common/models.py:1225 #: company/forms.py:42 company/templates/company/supplier_part.html:251 #: order/forms.py:102 order/models.py:729 order/models.py:991 @@ -574,26 +575,27 @@ msgstr "Штрих-код, связанный с инвентарем" #: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:223 #: part/forms.py:239 part/forms.py:255 part/models.py:2576 #: part/templates/part/bom_upload/match_parts.html:31 -#: part/templates/part/detail.html:1076 part/templates/part/detail.html:1162 +#: part/templates/part/detail.html:967 part/templates/part/detail.html:1053 #: part/templates/part/part_pricing.html:16 #: report/templates/report/inventree_build_order_base.html:114 #: report/templates/report/inventree_po_report.html:91 #: report/templates/report/inventree_so_report.html:91 #: report/templates/report/inventree_test_report_base.html:81 #: report/templates/report/inventree_test_report_base.html:139 -#: stock/forms.py:156 stock/serializers.py:286 -#: stock/templates/stock/item_base.html:256 +#: stock/forms.py:156 stock/serializers.py:291 +#: stock/templates/stock/item_base.html:174 #: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:443 #: templates/js/translated/build.js:235 templates/js/translated/build.js:435 #: templates/js/translated/build.js:629 templates/js/translated/build.js:639 #: templates/js/translated/build.js:1015 templates/js/translated/build.js:1362 #: templates/js/translated/model_renderers.js:99 -#: templates/js/translated/order.js:892 templates/js/translated/order.js:1205 -#: templates/js/translated/order.js:1283 templates/js/translated/order.js:1290 -#: templates/js/translated/order.js:1379 templates/js/translated/order.js:1479 -#: templates/js/translated/part.js:1615 templates/js/translated/part.js:1738 -#: templates/js/translated/part.js:1816 templates/js/translated/stock.js:377 -#: templates/js/translated/stock.js:2069 templates/js/translated/stock.js:2171 +#: templates/js/translated/order.js:891 templates/js/translated/order.js:1204 +#: templates/js/translated/order.js:1282 templates/js/translated/order.js:1289 +#: templates/js/translated/order.js:1378 templates/js/translated/order.js:1478 +#: templates/js/translated/part.js:843 templates/js/translated/part.js:1796 +#: templates/js/translated/part.js:1919 templates/js/translated/part.js:1997 +#: templates/js/translated/stock.js:378 templates/js/translated/stock.js:2151 +#: templates/js/translated/stock.js:2253 msgid "Quantity" msgstr "Количество" @@ -602,8 +604,8 @@ msgid "Enter quantity for build output" msgstr "Введите количество для вывода сборки" #: build/forms.py:41 order/forms.py:96 stock/forms.py:95 -#: stock/serializers.py:307 templates/js/translated/stock.js:224 -#: templates/js/translated/stock.js:378 +#: stock/serializers.py:312 templates/js/translated/stock.js:225 +#: templates/js/translated/stock.js:379 msgid "Serial Numbers" msgstr "Серийные номера" @@ -633,7 +635,7 @@ msgstr "Подтвердите отмену сборки" #: build/models.py:133 msgid "Invalid choice for parent build" -msgstr "" +msgstr "Неверный выбор для родительской сборки" #: build/models.py:137 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 @@ -646,7 +648,7 @@ msgstr "Порядок сборки" #: build/templates/build/index.html:8 build/templates/build/index.html:12 #: order/templates/order/sales_order_detail.html:42 #: order/templates/order/so_sidebar.html:7 -#: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:221 +#: part/templates/part/part_sidebar.html:20 templates/InvenTree/index.html:221 #: templates/InvenTree/search.html:145 #: templates/InvenTree/settings/sidebar.html:42 users/models.py:44 msgid "Build Orders" @@ -662,24 +664,24 @@ msgstr "Ссылка на заказ" #: report/templates/report/inventree_po_report.html:92 #: report/templates/report/inventree_so_report.html:92 #: templates/js/translated/bom.js:435 templates/js/translated/build.js:1119 -#: templates/js/translated/order.js:886 templates/js/translated/order.js:1473 +#: templates/js/translated/order.js:885 templates/js/translated/order.js:1472 msgid "Reference" -msgstr "" +msgstr "Отсылка" #: build/models.py:210 msgid "Brief description of the build" -msgstr "" +msgstr "Краткое описание сборки" -#: build/models.py:219 build/templates/build/build_base.html:156 +#: build/models.py:219 build/templates/build/build_base.html:164 #: build/templates/build/detail.html:88 msgid "Parent Build" -msgstr "" +msgstr "Родительская сборка" #: build/models.py:220 msgid "BuildOrder to which this build is allocated" msgstr "" -#: build/models.py:225 build/templates/build/build_base.html:119 +#: build/models.py:225 build/templates/build/build_base.html:77 #: build/templates/build/detail.html:30 company/models.py:705 #: order/models.py:789 order/models.py:860 #: order/templates/order/order_wizard/select_parts.html:32 part/models.py:357 @@ -700,20 +702,20 @@ msgstr "" #: templates/js/translated/build.js:988 templates/js/translated/build.js:1359 #: templates/js/translated/build.js:1626 templates/js/translated/company.js:489 #: templates/js/translated/company.js:746 templates/js/translated/order.js:426 -#: templates/js/translated/order.js:840 templates/js/translated/order.js:1457 -#: templates/js/translated/part.js:737 templates/js/translated/part.js:818 -#: templates/js/translated/part.js:985 templates/js/translated/stock.js:508 -#: templates/js/translated/stock.js:1108 templates/js/translated/stock.js:2159 +#: templates/js/translated/order.js:839 templates/js/translated/order.js:1456 +#: templates/js/translated/part.js:918 templates/js/translated/part.js:999 +#: templates/js/translated/part.js:1166 templates/js/translated/stock.js:590 +#: templates/js/translated/stock.js:1190 templates/js/translated/stock.js:2241 msgid "Part" msgstr "Детали" #: build/models.py:233 msgid "Select part to build" -msgstr "" +msgstr "Выберите часть для сборки" #: build/models.py:238 msgid "Sales Order Reference" -msgstr "" +msgstr "Отсылка на заказ" #: build/models.py:242 msgid "SalesOrder to which this build is allocated" @@ -721,7 +723,7 @@ msgstr "" #: build/models.py:247 templates/js/translated/build.js:1347 msgid "Source Location" -msgstr "" +msgstr "Расположение источника" #: build/models.py:251 msgid "Select location to take stock from for this build (leave blank to take from any stock location)" @@ -729,52 +731,52 @@ msgstr "" #: build/models.py:256 msgid "Destination Location" -msgstr "" +msgstr "Место назначения" #: build/models.py:260 msgid "Select location where the completed items will be stored" -msgstr "" +msgstr "Выберите место хранения завершенных элементов" #: build/models.py:264 msgid "Build Quantity" -msgstr "" +msgstr "Количество сборки" #: build/models.py:267 msgid "Number of stock items to build" -msgstr "" +msgstr "Количество складских предметов для сборки" #: build/models.py:271 msgid "Completed items" -msgstr "" +msgstr "Завершенные предметы" #: build/models.py:273 msgid "Number of stock items which have been completed" -msgstr "" +msgstr "Количество предметов на складе, которые были завершены" -#: build/models.py:277 part/templates/part/part_base.html:216 +#: build/models.py:277 part/templates/part/part_base.html:234 msgid "Build Status" -msgstr "" +msgstr "Статус сборки" #: build/models.py:281 msgid "Build status code" -msgstr "" +msgstr "Код статуса сборки" -#: build/models.py:285 stock/models.py:544 +#: build/models.py:285 stock/models.py:534 msgid "Batch Code" -msgstr "" +msgstr "Штрих код" #: build/models.py:289 msgid "Batch code for this build output" -msgstr "" +msgstr "Штрих код для этого вывода сборки" #: build/models.py:292 order/models.py:165 part/models.py:936 -#: part/templates/part/detail.html:86 templates/js/translated/order.js:1104 +#: part/templates/part/part_base.html:313 templates/js/translated/order.js:1103 msgid "Creation Date" -msgstr "" +msgstr "Дата создания" #: build/models.py:296 order/models.py:578 msgid "Target completion date" -msgstr "" +msgstr "Целевая дата завершения" #: build/models.py:297 msgid "Target date for build completion. Build will be overdue after this date." @@ -783,7 +785,7 @@ msgstr "Целевая дата для сборки. Сборка будет п #: build/models.py:300 order/models.py:291 #: templates/js/translated/build.js:1697 msgid "Completion Date" -msgstr "" +msgstr "Дата завершения" #: build/models.py:306 msgid "completed by" @@ -791,30 +793,30 @@ msgstr "выполнено" #: build/models.py:314 templates/js/translated/build.js:1668 msgid "Issued by" -msgstr "" +msgstr "Выдал/ла" #: build/models.py:315 msgid "User who issued this build order" -msgstr "" +msgstr "Пользователь, выпустивший этот заказ на сборку" -#: build/models.py:323 build/templates/build/build_base.html:177 +#: build/models.py:323 build/templates/build/build_base.html:185 #: build/templates/build/detail.html:116 order/models.py:179 -#: order/templates/order/order_base.html:154 -#: order/templates/order/sales_order_base.html:161 part/models.py:940 +#: order/templates/order/order_base.html:158 +#: order/templates/order/sales_order_base.html:162 part/models.py:940 #: report/templates/report/inventree_build_order_base.html:159 -#: templates/js/translated/build.js:1680 templates/js/translated/order.js:700 +#: templates/js/translated/build.js:1680 templates/js/translated/order.js:699 msgid "Responsible" msgstr "Ответственный" #: build/models.py:324 msgid "User responsible for this build order" -msgstr "" +msgstr "Пользователь ответственный за этот заказ сборки" #: build/models.py:329 build/templates/build/detail.html:102 -#: company/templates/company/manufacturer_part.html:87 -#: company/templates/company/supplier_part.html:88 -#: part/templates/part/detail.html:80 stock/models.py:538 -#: stock/templates/stock/item_base.html:346 +#: company/templates/company/manufacturer_part.html:102 +#: company/templates/company/supplier_part.html:126 +#: part/templates/part/part_base.html:354 stock/models.py:528 +#: stock/templates/stock/item_base.html:374 msgid "External Link" msgstr "Внешняя ссылка" @@ -824,60 +826,60 @@ msgstr "Внешняя ссылка" #: order/models.py:183 order/models.py:738 #: order/templates/order/po_sidebar.html:11 #: order/templates/order/so_sidebar.html:11 part/models.py:925 -#: part/templates/part/detail.html:223 part/templates/part/part_sidebar.html:52 +#: part/templates/part/detail.html:116 part/templates/part/part_sidebar.html:50 #: report/templates/report/inventree_build_order_base.html:173 -#: stock/forms.py:154 stock/forms.py:204 stock/forms.py:238 stock/models.py:610 -#: stock/models.py:1774 stock/models.py:1880 stock/serializers.py:325 -#: stock/serializers.py:583 stock/templates/stock/stock_sidebar.html:21 +#: stock/forms.py:154 stock/forms.py:204 stock/forms.py:238 stock/models.py:600 +#: stock/models.py:1764 stock/models.py:1870 stock/serializers.py:330 +#: stock/serializers.py:588 stock/templates/stock/stock_sidebar.html:21 #: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:599 -#: templates/js/translated/company.js:842 templates/js/translated/order.js:985 -#: templates/js/translated/order.js:1583 templates/js/translated/stock.js:891 -#: templates/js/translated/stock.js:1370 +#: templates/js/translated/company.js:842 templates/js/translated/order.js:984 +#: templates/js/translated/order.js:1582 templates/js/translated/stock.js:973 +#: templates/js/translated/stock.js:1452 msgid "Notes" msgstr "Заметки" #: build/models.py:335 msgid "Extra build notes" -msgstr "" +msgstr "Дополнительные заметки к сборке" #: build/models.py:710 msgid "No build output specified" -msgstr "" +msgstr "Вывод сборки не указан" #: build/models.py:713 msgid "Build output is already completed" -msgstr "" +msgstr "Вывод сборки уже завершен" #: build/models.py:716 msgid "Build output does not match Build Order" -msgstr "" +msgstr "Вывод сборки не совпадает с порядком сборки" #: build/models.py:1108 msgid "Build item must specify a build output, as master part is marked as trackable" -msgstr "" +msgstr "Элемент сборки должен указать вывод сборки, так как основная часть помечена как отслеживаемая" #: build/models.py:1117 #, python-brace-format msgid "Allocated quantity ({q}) must not execed available stock quantity ({a})" -msgstr "" +msgstr "Выделенное количество ({q}) не должно превышать доступное количество на складе ({a})" #: build/models.py:1127 msgid "Stock item is over-allocated" -msgstr "" +msgstr "Предмет на складе перераспределен" #: build/models.py:1133 order/models.py:964 msgid "Allocation quantity must be greater than zero" -msgstr "" +msgstr "Выделенное количество должно быть больше нуля" #: build/models.py:1139 msgid "Quantity must be 1 for serialized stock" -msgstr "" +msgstr "Количество должно быть 1 для сериализованных запасов" #: build/models.py:1193 msgid "Selected stock item not found in BOM" -msgstr "" +msgstr "Выбранный предмет со складом не найден в BOM" -#: build/models.py:1253 stock/templates/stock/item_base.html:318 +#: build/models.py:1253 stock/templates/stock/item_base.html:346 #: templates/InvenTree/search.html:143 templates/js/translated/build.js:1599 #: templates/navbar.html:33 msgid "Build" @@ -890,17 +892,17 @@ msgstr "" #: build/models.py:1270 build/serializers.py:328 #: stock/templates/stock/item_base.html:8 #: stock/templates/stock/item_base.html:16 -#: stock/templates/stock/item_base.html:340 +#: stock/templates/stock/item_base.html:368 #: templates/js/translated/build.js:408 templates/js/translated/build.js:413 #: templates/js/translated/build.js:1361 templates/js/translated/build.js:1742 -#: templates/js/translated/order.js:1178 templates/js/translated/order.js:1183 -#: templates/js/translated/stock.js:2020 +#: templates/js/translated/order.js:1177 templates/js/translated/order.js:1182 +#: templates/js/translated/stock.js:2102 msgid "Stock Item" -msgstr "" +msgstr "Предметы на складе" #: build/models.py:1271 msgid "Source stock item" -msgstr "" +msgstr "Исходный складской предмет" #: build/models.py:1284 msgid "Stock quantity to allocate to build" @@ -934,16 +936,16 @@ msgstr "" msgid "This build output is not fully allocated" msgstr "" -#: build/serializers.py:190 order/serializers.py:219 order/serializers.py:287 -#: stock/forms.py:236 stock/serializers.py:318 stock/serializers.py:685 -#: stock/templates/stock/item_base.html:286 +#: build/serializers.py:190 order/serializers.py:228 order/serializers.py:296 +#: stock/forms.py:236 stock/serializers.py:323 stock/serializers.py:690 +#: stock/templates/stock/item_base.html:314 #: templates/js/translated/barcode.js:384 #: templates/js/translated/barcode.js:557 templates/js/translated/build.js:420 #: templates/js/translated/build.js:1027 templates/js/translated/order.js:348 -#: templates/js/translated/order.js:1190 templates/js/translated/order.js:1298 -#: templates/js/translated/order.js:1304 templates/js/translated/part.js:181 -#: templates/js/translated/stock.js:510 templates/js/translated/stock.js:1251 -#: templates/js/translated/stock.js:1961 +#: templates/js/translated/order.js:1189 templates/js/translated/order.js:1297 +#: templates/js/translated/order.js:1303 templates/js/translated/part.js:177 +#: templates/js/translated/stock.js:592 templates/js/translated/stock.js:1333 +#: templates/js/translated/stock.js:2043 msgid "Location" msgstr "Расположение" @@ -951,13 +953,13 @@ msgstr "Расположение" msgid "Location for completed build outputs" msgstr "" -#: build/serializers.py:197 build/templates/build/build_base.html:129 +#: build/serializers.py:197 build/templates/build/build_base.html:137 #: build/templates/build/detail.html:63 order/models.py:572 -#: order/serializers.py:240 stock/templates/stock/item_base.html:409 +#: order/serializers.py:249 stock/templates/stock/item_base.html:180 #: templates/js/translated/barcode.js:140 templates/js/translated/build.js:1655 -#: templates/js/translated/order.js:431 templates/js/translated/order.js:677 -#: templates/js/translated/order.js:1096 templates/js/translated/stock.js:1226 -#: templates/js/translated/stock.js:2038 templates/js/translated/stock.js:2187 +#: templates/js/translated/order.js:431 templates/js/translated/order.js:1095 +#: templates/js/translated/stock.js:1308 templates/js/translated/stock.js:2120 +#: templates/js/translated/stock.js:2269 msgid "Status" msgstr "Статус" @@ -986,8 +988,8 @@ msgstr "" msgid "Item must be in stock" msgstr "" -#: build/serializers.py:348 order/models.py:316 order/serializers.py:233 -#: stock/models.py:381 stock/models.py:1103 stock/serializers.py:298 +#: build/serializers.py:348 order/models.py:316 order/serializers.py:242 +#: stock/models.py:371 stock/models.py:1093 stock/serializers.py:303 msgid "Quantity must be greater than zero" msgstr "" @@ -1031,7 +1033,7 @@ msgid "Edit Build" msgstr "" #: build/templates/build/build_base.html:56 -#: build/templates/build/build_base.html:207 build/views.py:56 +#: build/templates/build/build_base.html:215 build/views.py:56 msgid "Cancel Build" msgstr "" @@ -1041,93 +1043,95 @@ msgstr "" #: build/templates/build/build_base.html:64 #: build/templates/build/build_base.html:65 -#: build/templates/build/build_base.html:223 +#: build/templates/build/build_base.html:231 msgid "Complete Build" msgstr "Завершить сборку" -#: build/templates/build/build_base.html:79 +#: build/templates/build/build_base.html:82 +msgid "Build Description" +msgstr "" + +#: build/templates/build/build_base.html:91 #, python-format msgid "This Build Order is allocated to Sales Order %(link)s" msgstr "" -#: build/templates/build/build_base.html:86 +#: build/templates/build/build_base.html:98 #, python-format msgid "This Build Order is a child of Build Order %(link)s" msgstr "" -#: build/templates/build/build_base.html:93 +#: build/templates/build/build_base.html:105 msgid "Build Order is ready to mark as completed" msgstr "" -#: build/templates/build/build_base.html:98 +#: build/templates/build/build_base.html:110 msgid "Build Order cannot be completed as outstanding outputs remain" msgstr "" -#: build/templates/build/build_base.html:103 +#: build/templates/build/build_base.html:115 msgid "Required build quantity has not yet been completed" msgstr "" -#: build/templates/build/build_base.html:108 +#: build/templates/build/build_base.html:120 msgid "Stock has not been fully allocated to this Build Order" msgstr "" -#: build/templates/build/build_base.html:138 +#: build/templates/build/build_base.html:146 #: build/templates/build/detail.html:132 -#: order/templates/order/order_base.html:140 -#: order/templates/order/sales_order_base.html:140 +#: order/templates/order/order_base.html:144 +#: order/templates/order/sales_order_base.html:141 #: report/templates/report/inventree_build_order_base.html:126 -#: templates/js/translated/build.js:1692 templates/js/translated/order.js:690 -#: templates/js/translated/order.js:1109 +#: templates/js/translated/build.js:1692 templates/js/translated/order.js:689 +#: templates/js/translated/order.js:1108 msgid "Target Date" msgstr "Целевая дата" -#: build/templates/build/build_base.html:143 +#: build/templates/build/build_base.html:151 #, python-format msgid "This build was due on %(target)s" msgstr "" -#: build/templates/build/build_base.html:143 -#: build/templates/build/build_base.html:188 -#: order/templates/order/order_base.html:81 -#: order/templates/order/order_base.html:102 -#: order/templates/order/sales_order_base.html:78 -#: order/templates/order/sales_order_base.html:107 +#: build/templates/build/build_base.html:151 +#: build/templates/build/build_base.html:196 +#: order/templates/order/order_base.html:98 +#: order/templates/order/sales_order_base.html:93 #: templates/js/translated/table_filters.js:294 #: templates/js/translated/table_filters.js:322 #: templates/js/translated/table_filters.js:339 msgid "Overdue" msgstr "Просрочено" -#: build/templates/build/build_base.html:150 +#: build/templates/build/build_base.html:158 #: build/templates/build/detail.html:68 build/templates/build/detail.html:143 #: templates/js/translated/build.js:1641 #: templates/js/translated/table_filters.js:304 msgid "Completed" msgstr "" -#: build/templates/build/build_base.html:163 +#: build/templates/build/build_base.html:171 #: build/templates/build/detail.html:95 order/models.py:857 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: order/templates/order/sales_order_ship.html:25 #: report/templates/report/inventree_build_order_base.html:136 #: report/templates/report/inventree_so_report.html:77 -#: stock/templates/stock/item_base.html:280 -#: templates/js/translated/order.js:1051 +#: stock/templates/stock/item_base.html:308 +#: templates/js/translated/order.js:1050 msgid "Sales Order" msgstr "" -#: build/templates/build/build_base.html:170 +#: build/templates/build/build_base.html:178 #: build/templates/build/detail.html:109 #: report/templates/report/inventree_build_order_base.html:153 msgid "Issued By" msgstr "Выдано" -#: build/templates/build/build_base.html:215 +#: build/templates/build/build_base.html:223 msgid "Incomplete Outputs" msgstr "" -#: build/templates/build/build_base.html:216 +#: build/templates/build/build_base.html:224 msgid "Build Order cannot be completed as incomplete build outputs remain" msgstr "" @@ -1188,7 +1192,7 @@ msgid "Stock can be taken from any available location." msgstr "" #: build/templates/build/detail.html:50 order/models.py:811 stock/forms.py:150 -#: templates/js/translated/order.js:432 templates/js/translated/order.js:974 +#: templates/js/translated/order.js:432 templates/js/translated/order.js:973 msgid "Destination" msgstr "" @@ -1201,16 +1205,16 @@ msgid "Allocated Parts" msgstr "" #: build/templates/build/detail.html:81 -#: stock/templates/stock/item_base.html:304 -#: templates/js/translated/stock.js:1240 templates/js/translated/stock.js:2194 +#: stock/templates/stock/item_base.html:332 +#: templates/js/translated/stock.js:1322 templates/js/translated/stock.js:2276 #: templates/js/translated/table_filters.js:151 #: templates/js/translated/table_filters.js:233 msgid "Batch" msgstr "Партия" #: build/templates/build/detail.html:127 -#: order/templates/order/order_base.html:127 -#: order/templates/order/sales_order_base.html:134 +#: order/templates/order/order_base.html:131 +#: order/templates/order/sales_order_base.html:135 #: templates/js/translated/build.js:1663 msgid "Created" msgstr "Создано" @@ -1254,7 +1258,7 @@ msgstr "" #: build/templates/build/detail.html:185 #: company/templates/company/detail.html:38 #: company/templates/company/detail.html:85 order/views.py:509 -#: part/templates/part/category.html:166 +#: part/templates/part/category.html:173 msgid "Order Parts" msgstr "Заказать детали" @@ -1306,8 +1310,8 @@ msgstr "" #: order/templates/order/po_sidebar.html:9 #: order/templates/order/purchase_order_detail.html:60 #: order/templates/order/sales_order_detail.html:52 -#: order/templates/order/so_sidebar.html:9 part/templates/part/detail.html:300 -#: part/templates/part/part_sidebar.html:50 stock/templates/stock/item.html:95 +#: order/templates/order/so_sidebar.html:9 part/templates/part/detail.html:193 +#: part/templates/part/part_sidebar.html:48 stock/templates/stock/item.html:95 #: stock/templates/stock/stock_sidebar.html:19 msgid "Attachments" msgstr "Приложения" @@ -1323,7 +1327,7 @@ msgstr "Заметки сборки" #: order/templates/order/purchase_order_detail.html:108 #: order/templates/order/sales_order_detail.html:72 #: order/templates/order/sales_order_detail.html:99 -#: part/templates/part/detail.html:227 stock/templates/stock/item.html:115 +#: part/templates/part/detail.html:120 stock/templates/stock/item.html:115 #: stock/templates/stock/item.html:205 msgid "Edit Notes" msgstr "" @@ -1336,7 +1340,7 @@ msgstr "" msgid "All untracked stock items have been allocated" msgstr "" -#: build/templates/build/index.html:18 part/templates/part/detail.html:407 +#: build/templates/build/index.html:18 part/templates/part/detail.html:300 msgid "New Build Order" msgstr "" @@ -1380,7 +1384,7 @@ msgstr "" msgid "Maximum output quantity is " msgstr "" -#: build/views.py:122 stock/serializers.py:356 stock/views.py:1290 +#: build/views.py:122 stock/serializers.py:361 stock/views.py:1290 msgid "Serial numbers already exist" msgstr "" @@ -1675,7 +1679,7 @@ msgid "Parts are trackable by default" msgstr "" #: common/models.py:745 part/models.py:920 -#: part/templates/part/part_base.html:144 +#: part/templates/part/part_base.html:147 #: templates/js/translated/table_filters.js:42 msgid "Virtual" msgstr "" @@ -2142,7 +2146,7 @@ msgstr "" #: common/models.py:1233 company/serializers.py:264 #: company/templates/company/supplier_part.html:256 -#: templates/js/translated/part.js:1620 +#: templates/js/translated/part.js:852 templates/js/translated/part.js:1801 msgid "Price" msgstr "" @@ -2206,7 +2210,7 @@ msgstr "" msgid "Description of the company" msgstr "" -#: company/models.py:112 company/templates/company/company_base.html:70 +#: company/models.py:112 company/templates/company/company_base.html:97 #: templates/js/translated/company.js:349 msgid "Website" msgstr "" @@ -2215,7 +2219,7 @@ msgstr "" msgid "Company website URL" msgstr "" -#: company/models.py:117 company/templates/company/company_base.html:88 +#: company/models.py:117 company/templates/company/company_base.html:115 msgid "Address" msgstr "" @@ -2231,7 +2235,7 @@ msgstr "" msgid "Contact phone number" msgstr "" -#: company/models.py:125 company/templates/company/company_base.html:102 +#: company/models.py:125 company/templates/company/company_base.html:129 #: templates/InvenTree/settings/user.html:47 msgid "Email" msgstr "" @@ -2240,7 +2244,7 @@ msgstr "" msgid "Contact email address" msgstr "" -#: company/models.py:128 company/templates/company/company_base.html:109 +#: company/models.py:128 company/templates/company/company_base.html:136 msgid "Contact" msgstr "" @@ -2281,7 +2285,7 @@ msgid "Does this company manufacture parts?" msgstr "" #: company/models.py:152 company/serializers.py:270 -#: company/templates/company/company_base.html:76 stock/serializers.py:172 +#: company/templates/company/company_base.html:103 stock/serializers.py:177 msgid "Currency" msgstr "" @@ -2289,8 +2293,8 @@ msgstr "" msgid "Default currency used for this company" msgstr "" -#: company/models.py:320 company/models.py:535 stock/models.py:484 -#: stock/templates/stock/item_base.html:224 +#: company/models.py:320 company/models.py:535 stock/models.py:474 +#: stock/templates/stock/item_base.html:135 msgid "Base Part" msgstr "" @@ -2298,29 +2302,29 @@ msgstr "" msgid "Select part" msgstr "" -#: company/models.py:335 company/templates/company/company_base.html:116 -#: company/templates/company/manufacturer_part.html:93 -#: company/templates/company/supplier_part.html:104 -#: stock/templates/stock/item_base.html:353 +#: company/models.py:335 company/templates/company/company_base.html:73 +#: company/templates/company/manufacturer_part.html:91 +#: company/templates/company/supplier_part.html:97 +#: stock/templates/stock/item_base.html:381 #: templates/js/translated/company.js:333 #: templates/js/translated/company.js:514 -#: templates/js/translated/company.js:797 templates/js/translated/part.js:229 +#: templates/js/translated/company.js:797 templates/js/translated/part.js:232 msgid "Manufacturer" msgstr "" -#: company/models.py:336 templates/js/translated/part.js:230 +#: company/models.py:336 templates/js/translated/part.js:233 msgid "Select manufacturer" msgstr "" -#: company/models.py:342 company/templates/company/manufacturer_part.html:97 -#: company/templates/company/supplier_part.html:112 +#: company/models.py:342 company/templates/company/manufacturer_part.html:96 +#: company/templates/company/supplier_part.html:105 #: templates/js/translated/company.js:530 -#: templates/js/translated/company.js:815 templates/js/translated/order.js:874 -#: templates/js/translated/part.js:240 +#: templates/js/translated/company.js:815 templates/js/translated/order.js:873 +#: templates/js/translated/part.js:243 templates/js/translated/part.js:832 msgid "MPN" msgstr "" -#: company/models.py:343 templates/js/translated/part.js:241 +#: company/models.py:343 templates/js/translated/part.js:244 msgid "Manufacturer Part Number" msgstr "" @@ -2335,7 +2339,7 @@ msgstr "" #: company/models.py:409 company/models.py:558 #: company/templates/company/manufacturer_part.html:6 #: company/templates/company/manufacturer_part.html:23 -#: stock/templates/stock/item_base.html:363 +#: stock/templates/stock/item_base.html:391 msgid "Manufacturer Part" msgstr "" @@ -2345,8 +2349,8 @@ msgstr "" #: company/models.py:422 #: report/templates/report/inventree_test_report_base.html:95 -#: stock/models.py:1867 templates/js/translated/company.js:644 -#: templates/js/translated/part.js:645 templates/js/translated/stock.js:878 +#: stock/models.py:1857 templates/js/translated/company.js:644 +#: templates/js/translated/part.js:652 templates/js/translated/stock.js:960 msgid "Value" msgstr "" @@ -2355,9 +2359,9 @@ msgid "Parameter value" msgstr "" #: company/models.py:429 part/models.py:882 part/models.py:2397 -#: part/templates/part/detail.html:59 +#: part/templates/part/part_base.html:288 #: templates/InvenTree/settings/settings.html:264 -#: templates/js/translated/company.js:650 templates/js/translated/part.js:651 +#: templates/js/translated/company.js:650 templates/js/translated/part.js:658 msgid "Units" msgstr "" @@ -2369,28 +2373,28 @@ msgstr "" msgid "Linked manufacturer part must reference the same base part" msgstr "" -#: company/models.py:545 company/templates/company/company_base.html:121 -#: company/templates/company/supplier_part.html:94 order/models.py:263 -#: order/templates/order/order_base.html:108 +#: company/models.py:545 company/templates/company/company_base.html:78 +#: company/templates/company/supplier_part.html:87 order/models.py:263 +#: order/templates/order/order_base.html:112 #: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:219 -#: part/bom.py:247 stock/templates/stock/item_base.html:370 +#: part/bom.py:247 stock/templates/stock/item_base.html:398 #: templates/js/translated/company.js:337 -#: templates/js/translated/company.js:771 templates/js/translated/order.js:660 -#: templates/js/translated/part.js:210 +#: templates/js/translated/company.js:771 templates/js/translated/order.js:667 +#: templates/js/translated/part.js:213 templates/js/translated/part.js:800 msgid "Supplier" msgstr "" -#: company/models.py:546 templates/js/translated/part.js:211 +#: company/models.py:546 templates/js/translated/part.js:214 msgid "Select supplier" msgstr "" -#: company/models.py:551 company/templates/company/supplier_part.html:98 -#: part/bom.py:220 part/bom.py:248 templates/js/translated/order.js:861 -#: templates/js/translated/part.js:221 +#: company/models.py:551 company/templates/company/supplier_part.html:91 +#: part/bom.py:220 part/bom.py:248 templates/js/translated/order.js:860 +#: templates/js/translated/part.js:224 templates/js/translated/part.js:818 msgid "SKU" msgstr "" -#: company/models.py:552 templates/js/translated/part.js:222 +#: company/models.py:552 templates/js/translated/part.js:225 msgid "Supplier stock keeping unit" msgstr "" @@ -2406,7 +2410,7 @@ msgstr "" msgid "Supplier part description" msgstr "" -#: company/models.py:576 company/templates/company/supplier_part.html:126 +#: company/models.py:576 company/templates/company/supplier_part.html:119 #: part/models.py:2588 report/templates/report/inventree_po_report.html:93 #: report/templates/report/inventree_so_report.html:93 msgid "Note" @@ -2420,9 +2424,9 @@ msgstr "" msgid "Minimum charge (e.g. stocking fee)" msgstr "" -#: company/models.py:582 company/templates/company/supplier_part.html:119 -#: stock/models.py:507 stock/templates/stock/item_base.html:311 -#: templates/js/translated/company.js:847 templates/js/translated/stock.js:1366 +#: company/models.py:582 company/templates/company/supplier_part.html:112 +#: stock/models.py:497 stock/templates/stock/item_base.html:339 +#: templates/js/translated/company.js:847 templates/js/translated/stock.js:1448 msgid "Packaging" msgstr "" @@ -2457,43 +2461,56 @@ msgstr "" msgid "Create Purchase Order" msgstr "" -#: company/templates/company/company_base.html:27 +#: company/templates/company/company_base.html:26 +msgid "Company actions" +msgstr "" + +#: company/templates/company/company_base.html:31 msgid "Edit company information" msgstr "" #: company/templates/company/company_base.html:32 -#: company/templates/company/company_base.html:148 +#: templates/js/translated/company.js:265 +msgid "Edit Company" +msgstr "" + +#: company/templates/company/company_base.html:36 +msgid "Delete company" +msgstr "" + +#: company/templates/company/company_base.html:37 +#: company/templates/company/company_base.html:159 msgid "Delete Company" msgstr "" -#: company/templates/company/company_base.html:48 +#: company/templates/company/company_base.html:53 #: part/templates/part/part_thumb.html:12 msgid "Upload new image" msgstr "" -#: company/templates/company/company_base.html:51 +#: company/templates/company/company_base.html:56 #: part/templates/part/part_thumb.html:14 msgid "Download image from URL" msgstr "" -#: company/templates/company/company_base.html:81 -msgid "Uses default currency" -msgstr "" - -#: company/templates/company/company_base.html:95 -msgid "Phone" -msgstr "" - -#: company/templates/company/company_base.html:126 order/models.py:567 -#: order/templates/order/sales_order_base.html:114 stock/models.py:525 -#: stock/models.py:526 stock/templates/stock/item_base.html:263 -#: templates/js/translated/company.js:329 templates/js/translated/order.js:1073 -#: templates/js/translated/stock.js:2002 +#: company/templates/company/company_base.html:83 order/models.py:567 +#: order/templates/order/sales_order_base.html:115 stock/models.py:515 +#: stock/models.py:516 stock/templates/stock/item_base.html:291 +#: templates/js/translated/company.js:329 templates/js/translated/order.js:1072 +#: templates/js/translated/stock.js:2084 msgid "Customer" msgstr "" -#: company/templates/company/company_base.html:194 -#: part/templates/part/part_base.html:342 +#: company/templates/company/company_base.html:108 +msgid "Uses default currency" +msgstr "" + +#: company/templates/company/company_base.html:122 +msgid "Phone" +msgstr "" + +#: company/templates/company/company_base.html:205 +#: part/templates/part/part_base.html:471 msgid "Upload Image" msgstr "" @@ -2509,23 +2526,23 @@ msgid "Create new supplier part" msgstr "" #: company/templates/company/detail.html:20 -#: company/templates/company/manufacturer_part.html:112 -#: part/templates/part/detail.html:440 +#: company/templates/company/manufacturer_part.html:118 +#: part/templates/part/detail.html:333 msgid "New Supplier Part" msgstr "" #: company/templates/company/detail.html:32 #: company/templates/company/detail.html:79 -#: company/templates/company/manufacturer_part.html:121 -#: company/templates/company/manufacturer_part.html:150 -#: part/templates/part/category.html:160 part/templates/part/detail.html:449 -#: part/templates/part/detail.html:477 +#: company/templates/company/manufacturer_part.html:127 +#: company/templates/company/manufacturer_part.html:156 +#: part/templates/part/category.html:167 part/templates/part/detail.html:342 +#: part/templates/part/detail.html:370 msgid "Options" msgstr "" #: company/templates/company/detail.html:37 #: company/templates/company/detail.html:84 -#: part/templates/part/category.html:166 +#: part/templates/part/category.html:173 msgid "Order parts" msgstr "" @@ -2547,7 +2564,7 @@ msgstr "" msgid "Create new manufacturer part" msgstr "" -#: company/templates/company/detail.html:67 part/templates/part/detail.html:467 +#: company/templates/company/detail.html:67 part/templates/part/detail.html:360 msgid "New Manufacturer Part" msgstr "" @@ -2561,7 +2578,7 @@ msgstr "" #: order/templates/order/order_base.html:13 #: order/templates/order/purchase_orders.html:8 #: order/templates/order/purchase_orders.html:12 -#: part/templates/part/detail.html:171 part/templates/part/part_sidebar.html:35 +#: part/templates/part/detail.html:64 part/templates/part/part_sidebar.html:33 #: templates/InvenTree/index.html:252 templates/InvenTree/search.html:203 #: templates/InvenTree/settings/sidebar.html:44 templates/navbar.html:45 #: users/models.py:45 @@ -2583,7 +2600,7 @@ msgstr "" #: order/templates/order/sales_order_base.html:13 #: order/templates/order/sales_orders.html:8 #: order/templates/order/sales_orders.html:15 -#: part/templates/part/detail.html:194 part/templates/part/part_sidebar.html:39 +#: part/templates/part/detail.html:87 part/templates/part/part_sidebar.html:37 #: templates/InvenTree/index.html:283 templates/InvenTree/search.html:223 #: templates/InvenTree/settings/sidebar.html:46 templates/navbar.html:56 #: users/models.py:46 @@ -2610,14 +2627,14 @@ msgid "Company Notes" msgstr "" #: company/templates/company/detail.html:383 -#: company/templates/company/manufacturer_part.html:209 -#: part/templates/part/detail.html:520 +#: company/templates/company/manufacturer_part.html:215 +#: part/templates/part/detail.html:413 msgid "Delete Supplier Parts?" msgstr "" #: company/templates/company/detail.html:384 -#: company/templates/company/manufacturer_part.html:210 -#: part/templates/part/detail.html:521 +#: company/templates/company/manufacturer_part.html:216 +#: part/templates/part/detail.html:414 msgid "All selected supplier parts will be deleted" msgstr "" @@ -2634,7 +2651,7 @@ msgstr "" #: company/templates/company/manufacturer_part.html:35 #: company/templates/company/supplier_part.html:34 #: company/templates/company/supplier_part.html:159 -#: part/templates/part/detail.html:174 part/templates/part/part_base.html:76 +#: part/templates/part/detail.html:67 part/templates/part/part_base.html:76 msgid "Order part" msgstr "" @@ -2648,60 +2665,60 @@ msgstr "" msgid "Delete manufacturer part" msgstr "" -#: company/templates/company/manufacturer_part.html:70 -#: company/templates/company/supplier_part.html:71 +#: company/templates/company/manufacturer_part.html:66 +#: company/templates/company/supplier_part.html:63 msgid "Internal Part" msgstr "" -#: company/templates/company/manufacturer_part.html:108 +#: company/templates/company/manufacturer_part.html:114 #: company/templates/company/supplier_part.html:15 company/views.py:49 -#: part/templates/part/part_sidebar.html:33 part/templates/part/prices.html:163 +#: part/templates/part/part_sidebar.html:31 part/templates/part/prices.html:163 #: templates/InvenTree/search.html:194 templates/navbar.html:43 msgid "Suppliers" msgstr "" -#: company/templates/company/manufacturer_part.html:123 -#: part/templates/part/detail.html:451 +#: company/templates/company/manufacturer_part.html:129 +#: part/templates/part/detail.html:344 msgid "Delete supplier parts" msgstr "" -#: company/templates/company/manufacturer_part.html:123 -#: company/templates/company/manufacturer_part.html:152 -#: company/templates/company/manufacturer_part.html:248 -#: part/templates/part/detail.html:451 part/templates/part/detail.html:479 +#: company/templates/company/manufacturer_part.html:129 +#: company/templates/company/manufacturer_part.html:158 +#: company/templates/company/manufacturer_part.html:254 +#: part/templates/part/detail.html:344 part/templates/part/detail.html:372 #: templates/js/translated/company.js:425 templates/js/translated/helpers.js:31 #: users/models.py:204 msgid "Delete" msgstr "" -#: company/templates/company/manufacturer_part.html:137 +#: company/templates/company/manufacturer_part.html:143 #: company/templates/company/manufacturer_part_sidebar.html:5 #: part/templates/part/category_sidebar.html:17 -#: part/templates/part/detail.html:277 part/templates/part/part_sidebar.html:10 +#: part/templates/part/detail.html:170 part/templates/part/part_sidebar.html:8 msgid "Parameters" msgstr "" -#: company/templates/company/manufacturer_part.html:141 -#: part/templates/part/detail.html:282 +#: company/templates/company/manufacturer_part.html:147 +#: part/templates/part/detail.html:175 #: templates/InvenTree/settings/category.html:12 #: templates/InvenTree/settings/part.html:65 msgid "New Parameter" msgstr "" -#: company/templates/company/manufacturer_part.html:152 +#: company/templates/company/manufacturer_part.html:158 msgid "Delete parameters" msgstr "" -#: company/templates/company/manufacturer_part.html:185 -#: part/templates/part/detail.html:976 +#: company/templates/company/manufacturer_part.html:191 +#: part/templates/part/detail.html:867 msgid "Add Parameter" msgstr "" -#: company/templates/company/manufacturer_part.html:233 +#: company/templates/company/manufacturer_part.html:239 msgid "Selected parameters will be deleted" msgstr "" -#: company/templates/company/manufacturer_part.html:245 +#: company/templates/company/manufacturer_part.html:251 msgid "Delete Parameters" msgstr "" @@ -2722,9 +2739,9 @@ msgid "Assigned Stock Items" msgstr "" #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 stock/models.py:492 -#: stock/templates/stock/item_base.html:375 -#: templates/js/translated/company.js:787 templates/js/translated/stock.js:1323 +#: company/templates/company/supplier_part.html:24 stock/models.py:482 +#: stock/templates/stock/item_base.html:403 +#: templates/js/translated/company.js:787 templates/js/translated/stock.js:1405 msgid "Supplier Part" msgstr "" @@ -2744,13 +2761,13 @@ msgid "Supplier Part Stock" msgstr "" #: company/templates/company/supplier_part.html:141 -#: part/templates/part/detail.html:127 stock/templates/stock/location.html:147 +#: part/templates/part/detail.html:20 stock/templates/stock/location.html:162 msgid "Create new stock item" msgstr "" #: company/templates/company/supplier_part.html:142 -#: part/templates/part/detail.html:128 stock/templates/stock/location.html:148 -#: templates/js/translated/stock.js:354 +#: part/templates/part/detail.html:21 stock/templates/stock/location.html:163 +#: templates/js/translated/stock.js:355 msgid "New Stock Item" msgstr "" @@ -2760,7 +2777,7 @@ msgid "Supplier Part Orders" msgstr "" #: company/templates/company/supplier_part.html:160 -#: part/templates/part/detail.html:175 +#: part/templates/part/detail.html:68 msgid "Order Part" msgstr "" @@ -2796,15 +2813,15 @@ msgid "Delete price break" msgstr "" #: company/templates/company/supplier_part_navbar.html:15 -#: part/templates/part/part_sidebar.html:16 +#: part/templates/part/part_sidebar.html:14 #: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:14 #: stock/templates/stock/stock_app_base.html:10 #: templates/InvenTree/search.html:156 #: templates/InvenTree/settings/sidebar.html:40 -#: templates/js/translated/bom.js:216 templates/js/translated/part.js:427 -#: templates/js/translated/part.js:562 templates/js/translated/part.js:878 -#: templates/js/translated/part.js:1039 templates/js/translated/stock.js:509 -#: templates/js/translated/stock.js:1162 templates/navbar.html:26 +#: templates/js/translated/bom.js:216 templates/js/translated/part.js:434 +#: templates/js/translated/part.js:569 templates/js/translated/part.js:1059 +#: templates/js/translated/part.js:1220 templates/js/translated/stock.js:591 +#: templates/js/translated/stock.js:1244 templates/navbar.html:26 msgid "Stock" msgstr "" @@ -2818,16 +2835,16 @@ msgid "Supplier Part Pricing" msgstr "" #: company/templates/company/supplier_part_navbar.html:29 -#: part/templates/part/part_sidebar.html:30 +#: part/templates/part/part_sidebar.html:28 msgid "Pricing" msgstr "" #: company/templates/company/supplier_part_sidebar.html:5 -#: stock/templates/stock/location.html:118 -#: stock/templates/stock/location.html:132 -#: stock/templates/stock/location.html:144 +#: stock/templates/stock/location.html:133 +#: stock/templates/stock/location.html:147 +#: stock/templates/stock/location.html:159 #: stock/templates/stock/location_sidebar.html:7 -#: templates/InvenTree/search.html:158 templates/js/translated/stock.js:1901 +#: templates/InvenTree/search.html:158 templates/js/translated/stock.js:1983 #: templates/stats.html:93 templates/stats.html:102 users/models.py:43 msgid "Stock Items" msgstr "" @@ -2947,7 +2964,7 @@ msgstr "" msgid "Place order" msgstr "" -#: order/forms.py:37 order/templates/order/order_base.html:59 +#: order/forms.py:37 order/templates/order/order_base.html:60 msgid "Mark order as complete" msgstr "" @@ -3000,8 +3017,8 @@ msgstr "" msgid "Company from which the items are being ordered" msgstr "" -#: order/models.py:267 order/templates/order/order_base.html:114 -#: templates/js/translated/order.js:669 +#: order/models.py:267 order/templates/order/order_base.html:118 +#: templates/js/translated/order.js:676 msgid "Supplier Reference" msgstr "" @@ -3061,7 +3078,7 @@ msgstr "" msgid "Target date for order completion. Order will be overdue after this date." msgstr "" -#: order/models.py:582 templates/js/translated/order.js:1114 +#: order/models.py:582 templates/js/translated/order.js:1113 msgid "Shipment Date" msgstr "" @@ -3086,16 +3103,16 @@ msgid "Line item notes" msgstr "" #: order/models.py:768 order/models.py:856 -#: templates/js/translated/order.js:1166 +#: templates/js/translated/order.js:1165 msgid "Order" msgstr "" #: order/models.py:769 order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_po_report.html:77 -#: stock/templates/stock/item_base.html:325 -#: templates/js/translated/order.js:638 templates/js/translated/stock.js:1300 -#: templates/js/translated/stock.js:1983 +#: stock/templates/stock/item_base.html:353 +#: templates/js/translated/order.js:638 templates/js/translated/part.js:775 +#: templates/js/translated/stock.js:1382 templates/js/translated/stock.js:2065 msgid "Purchase Order" msgstr "" @@ -3103,9 +3120,10 @@ msgstr "" msgid "Supplier part" msgstr "" -#: order/models.py:797 order/templates/order/order_base.html:147 -#: order/templates/order/sales_order_base.html:154 -#: templates/js/translated/order.js:429 templates/js/translated/order.js:954 +#: order/models.py:797 order/templates/order/order_base.html:151 +#: order/templates/order/sales_order_base.html:155 +#: templates/js/translated/order.js:429 templates/js/translated/order.js:953 +#: templates/js/translated/part.js:847 templates/js/translated/part.js:873 msgid "Received" msgstr "" @@ -3113,9 +3131,9 @@ msgstr "" msgid "Number of items received" msgstr "" -#: order/models.py:805 part/templates/part/prices.html:176 stock/models.py:619 -#: stock/serializers.py:163 stock/templates/stock/item_base.html:332 -#: templates/js/translated/stock.js:1354 +#: order/models.py:805 part/templates/part/prices.html:176 stock/models.py:609 +#: stock/serializers.py:168 stock/templates/stock/item_base.html:360 +#: templates/js/translated/stock.js:1436 msgid "Purchase Price" msgstr "" @@ -3176,47 +3194,47 @@ msgstr "" msgid "Enter stock allocation quantity" msgstr "" -#: order/serializers.py:169 +#: order/serializers.py:175 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:204 +#: order/serializers.py:213 msgid "Line Item" msgstr "" -#: order/serializers.py:210 +#: order/serializers.py:219 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:220 order/serializers.py:288 +#: order/serializers.py:229 order/serializers.py:297 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:244 +#: order/serializers.py:253 msgid "Barcode Hash" msgstr "" -#: order/serializers.py:245 +#: order/serializers.py:254 msgid "Unique identifier field" msgstr "" -#: order/serializers.py:262 +#: order/serializers.py:271 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:300 +#: order/serializers.py:309 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:317 +#: order/serializers.py:326 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:328 +#: order/serializers.py:337 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:569 +#: order/serializers.py:578 msgid "Sale price currency" msgstr "" @@ -3248,22 +3266,36 @@ msgstr "" msgid "Receive items" msgstr "" -#: order/templates/order/order_base.html:93 -#: order/templates/order/sales_order_base.html:98 +#: order/templates/order/order_base.html:58 +#: order/templates/order/purchase_order_detail.html:31 +msgid "Receive Items" +msgstr "" + +#: order/templates/order/order_base.html:62 order/views.py:185 +msgid "Complete Order" +msgstr "" + +#: order/templates/order/order_base.html:84 +#: order/templates/order/sales_order_base.html:79 msgid "Order Reference" msgstr "" -#: order/templates/order/order_base.html:98 -#: order/templates/order/sales_order_base.html:103 +#: order/templates/order/order_base.html:89 +#: order/templates/order/sales_order_base.html:84 +msgid "Order Description" +msgstr "" + +#: order/templates/order/order_base.html:94 +#: order/templates/order/sales_order_base.html:89 msgid "Order Status" msgstr "" -#: order/templates/order/order_base.html:133 +#: order/templates/order/order_base.html:137 #: report/templates/report/inventree_build_order_base.html:122 msgid "Issued" msgstr "" -#: order/templates/order/order_base.html:203 +#: order/templates/order/order_base.html:207 msgid "Edit Purchase Order" msgstr "" @@ -3421,7 +3453,7 @@ msgid "Select existing purchase orders, or create new orders." msgstr "" #: order/templates/order/order_wizard/select_pos.html:31 -#: templates/js/translated/order.js:695 templates/js/translated/order.js:1119 +#: templates/js/translated/order.js:694 templates/js/translated/order.js:1118 msgid "Items" msgstr "" @@ -3465,10 +3497,6 @@ msgstr "" msgid "Receive selected items" msgstr "" -#: order/templates/order/purchase_order_detail.html:31 -msgid "Receive Items" -msgstr "" - #: order/templates/order/purchase_order_detail.html:50 msgid "Received Items" msgstr "" @@ -3496,16 +3524,16 @@ msgstr "" msgid "Ship Order" msgstr "" -#: order/templates/order/sales_order_base.html:86 +#: order/templates/order/sales_order_base.html:102 msgid "This Sales Order has not been fully allocated" msgstr "" -#: order/templates/order/sales_order_base.html:121 -#: templates/js/translated/order.js:1086 +#: order/templates/order/sales_order_base.html:122 +#: templates/js/translated/order.js:1085 msgid "Customer Reference" msgstr "" -#: order/templates/order/sales_order_base.html:194 +#: order/templates/order/sales_order_base.html:195 msgid "Edit Sales Order" msgstr "" @@ -3576,10 +3604,6 @@ msgstr "" msgid "Purchase order issued" msgstr "" -#: order/views.py:185 -msgid "Complete Order" -msgstr "" - #: order/views.py:201 msgid "Confirm order completion" msgstr "" @@ -3672,11 +3696,11 @@ msgid "This field is required" msgstr "" #: part/bom.py:125 part/models.py:81 part/models.py:816 -#: part/templates/part/category.html:90 part/templates/part/detail.html:104 +#: part/templates/part/category.html:104 part/templates/part/part_base.html:338 msgid "Default Location" msgstr "" -#: part/bom.py:126 part/templates/part/part_base.html:167 +#: part/bom.py:126 part/templates/part/part_base.html:185 msgid "Available Stock" msgstr "" @@ -3793,19 +3817,19 @@ msgstr "" msgid "Part Category" msgstr "" -#: part/models.py:96 part/templates/part/category.html:117 +#: part/models.py:96 part/templates/part/category.html:124 #: templates/InvenTree/search.html:101 templates/stats.html:84 #: users/models.py:40 msgid "Part Categories" msgstr "" #: part/models.py:358 part/templates/part/cat_link.html:3 -#: part/templates/part/category.html:13 part/templates/part/category.html:122 -#: part/templates/part/category.html:142 +#: part/templates/part/category.html:13 part/templates/part/category.html:129 +#: part/templates/part/category.html:149 #: part/templates/part/category_sidebar.html:9 #: templates/InvenTree/index.html:85 templates/InvenTree/search.html:88 #: templates/InvenTree/settings/sidebar.html:36 -#: templates/js/translated/part.js:1416 templates/navbar.html:19 +#: templates/js/translated/part.js:1597 templates/navbar.html:19 #: templates/stats.html:80 templates/stats.html:89 users/models.py:41 msgid "Parts" msgstr "" @@ -3859,8 +3883,8 @@ msgstr "" msgid "Part description" msgstr "" -#: part/models.py:770 part/templates/part/category.html:97 -#: part/templates/part/detail.html:73 +#: part/models.py:770 part/templates/part/category.html:82 +#: part/templates/part/part_base.html:302 msgid "Keywords" msgstr "" @@ -3869,9 +3893,10 @@ msgid "Part keywords to improve visibility in search results" msgstr "" #: part/models.py:778 part/models.py:2223 part/models.py:2472 -#: part/templates/part/detail.html:36 part/templates/part/set_category.html:15 +#: part/templates/part/part_base.html:265 +#: part/templates/part/set_category.html:15 #: templates/InvenTree/settings/settings.html:163 -#: templates/js/translated/part.js:1021 +#: templates/js/translated/part.js:1202 msgid "Category" msgstr "" @@ -3879,9 +3904,9 @@ msgstr "" msgid "Part category" msgstr "" -#: part/models.py:784 part/templates/part/detail.html:45 -#: templates/js/translated/part.js:550 templates/js/translated/part.js:974 -#: templates/js/translated/stock.js:1134 +#: part/models.py:784 part/templates/part/part_base.html:274 +#: templates/js/translated/part.js:557 templates/js/translated/part.js:1155 +#: templates/js/translated/stock.js:1216 msgid "IPN" msgstr "" @@ -3893,8 +3918,8 @@ msgstr "" msgid "Part revision or version number" msgstr "" -#: part/models.py:792 part/templates/part/detail.html:52 report/models.py:200 -#: templates/js/translated/part.js:554 +#: part/models.py:792 part/templates/part/part_base.html:281 +#: report/models.py:200 templates/js/translated/part.js:561 msgid "Revision" msgstr "" @@ -3902,7 +3927,7 @@ msgstr "" msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:861 part/templates/part/detail.html:113 +#: part/models.py:861 part/templates/part/part_base.html:347 msgid "Default Supplier" msgstr "" @@ -3918,7 +3943,7 @@ msgstr "" msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:875 part/templates/part/part_base.html:178 +#: part/models.py:875 part/templates/part/part_base.html:196 msgid "Minimum Stock" msgstr "" @@ -4001,8 +4026,8 @@ msgstr "" msgid "Test with this name already exists for this part" msgstr "" -#: part/models.py:2310 templates/js/translated/part.js:1467 -#: templates/js/translated/stock.js:858 +#: part/models.py:2310 templates/js/translated/part.js:1648 +#: templates/js/translated/stock.js:940 msgid "Test Name" msgstr "" @@ -4018,7 +4043,7 @@ msgstr "" msgid "Enter description for this test" msgstr "" -#: part/models.py:2322 templates/js/translated/part.js:1476 +#: part/models.py:2322 templates/js/translated/part.js:1657 #: templates/js/translated/table_filters.js:276 msgid "Required" msgstr "" @@ -4027,7 +4052,7 @@ msgstr "" msgid "Is this test required to pass?" msgstr "" -#: part/models.py:2328 templates/js/translated/part.js:1484 +#: part/models.py:2328 templates/js/translated/part.js:1665 msgid "Requires Value" msgstr "" @@ -4035,7 +4060,7 @@ msgstr "" msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:2334 templates/js/translated/part.js:1491 +#: part/models.py:2334 templates/js/translated/part.js:1672 msgid "Requires Attachment" msgstr "" @@ -4150,7 +4175,7 @@ msgstr "" msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:2686 stock/models.py:371 +#: part/models.py:2686 stock/models.py:361 msgid "Quantity must be integer value for trackable parts" msgstr "" @@ -4213,7 +4238,7 @@ msgstr "" msgid "The BOM for %(part)s has not been validated." msgstr "" -#: part/templates/part/bom.html:30 part/templates/part/detail.html:357 +#: part/templates/part/bom.html:30 part/templates/part/detail.html:250 msgid "BOM actions" msgstr "" @@ -4298,68 +4323,64 @@ msgstr "" msgid "New Category" msgstr "" -#: part/templates/part/category.html:67 -msgid "Top level part category" -msgstr "" - -#: part/templates/part/category.html:79 +#: part/templates/part/category.html:76 part/templates/part/category.html:89 msgid "Category Path" msgstr "" -#: part/templates/part/category.html:84 -msgid "Category Description" +#: part/templates/part/category.html:90 +msgid "Top level part category" msgstr "" -#: part/templates/part/category.html:103 part/templates/part/category.html:194 +#: part/templates/part/category.html:110 part/templates/part/category.html:201 #: part/templates/part/category_sidebar.html:7 msgid "Subcategories" msgstr "" -#: part/templates/part/category.html:108 +#: part/templates/part/category.html:115 msgid "Parts (Including subcategories)" msgstr "" -#: part/templates/part/category.html:145 +#: part/templates/part/category.html:152 msgid "Export Part Data" msgstr "" -#: part/templates/part/category.html:146 part/templates/part/category.html:170 +#: part/templates/part/category.html:153 part/templates/part/category.html:177 msgid "Export" msgstr "" -#: part/templates/part/category.html:149 +#: part/templates/part/category.html:156 msgid "Create new part" msgstr "" -#: part/templates/part/category.html:150 templates/js/translated/bom.js:40 +#: part/templates/part/category.html:157 templates/js/translated/bom.js:40 msgid "New Part" msgstr "" -#: part/templates/part/category.html:164 +#: part/templates/part/category.html:171 msgid "Set category" msgstr "" -#: part/templates/part/category.html:164 +#: part/templates/part/category.html:171 msgid "Set Category" msgstr "" -#: part/templates/part/category.html:168 +#: part/templates/part/category.html:175 msgid "Print Labels" msgstr "" -#: part/templates/part/category.html:170 +#: part/templates/part/category.html:177 msgid "Export Data" msgstr "" -#: part/templates/part/category.html:184 +#: part/templates/part/category.html:191 msgid "Part Parameters" msgstr "" -#: part/templates/part/category.html:261 +#: part/templates/part/category.html:268 msgid "Create Part Category" msgstr "" -#: part/templates/part/category.html:288 +#: part/templates/part/category.html:295 msgid "Create Part" msgstr "" @@ -4402,7 +4423,7 @@ msgstr "" msgid "Import Parts" msgstr "" -#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:366 +#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:373 msgid "Duplicate Part" msgstr "" @@ -4426,167 +4447,155 @@ msgstr "" msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)" msgstr "" -#: part/templates/part/detail.html:16 -msgid "Part Details" -msgstr "" - -#: part/templates/part/detail.html:66 -msgid "Minimum stock level" -msgstr "" - -#: part/templates/part/detail.html:97 -msgid "Latest Serial Number" -msgstr "" - -#: part/templates/part/detail.html:124 +#: part/templates/part/detail.html:17 msgid "Part Stock" msgstr "" -#: part/templates/part/detail.html:136 +#: part/templates/part/detail.html:29 #, python-format msgid "Showing stock for all variants of %(full_name)s" msgstr "" -#: part/templates/part/detail.html:146 +#: part/templates/part/detail.html:39 msgid "Part Test Templates" msgstr "" -#: part/templates/part/detail.html:151 +#: part/templates/part/detail.html:44 msgid "Add Test Template" msgstr "" -#: part/templates/part/detail.html:208 +#: part/templates/part/detail.html:101 msgid "Sales Order Allocations" msgstr "" -#: part/templates/part/detail.html:249 +#: part/templates/part/detail.html:142 msgid "Part Variants" msgstr "" -#: part/templates/part/detail.html:253 +#: part/templates/part/detail.html:146 msgid "Create new variant" msgstr "" -#: part/templates/part/detail.html:254 +#: part/templates/part/detail.html:147 msgid "New Variant" msgstr "" -#: part/templates/part/detail.html:281 +#: part/templates/part/detail.html:174 msgid "Add new parameter" msgstr "" -#: part/templates/part/detail.html:315 part/templates/part/part_sidebar.html:47 +#: part/templates/part/detail.html:208 part/templates/part/part_sidebar.html:45 msgid "Related Parts" msgstr "" -#: part/templates/part/detail.html:319 part/templates/part/detail.html:320 +#: part/templates/part/detail.html:212 part/templates/part/detail.html:213 msgid "Add Related" msgstr "" -#: part/templates/part/detail.html:340 part/templates/part/part_sidebar.html:19 +#: part/templates/part/detail.html:233 part/templates/part/part_sidebar.html:17 msgid "Bill of Materials" msgstr "" -#: part/templates/part/detail.html:345 +#: part/templates/part/detail.html:238 msgid "Export actions" msgstr "" -#: part/templates/part/detail.html:349 +#: part/templates/part/detail.html:242 msgid "Export BOM" msgstr "" -#: part/templates/part/detail.html:351 +#: part/templates/part/detail.html:244 msgid "Print BOM Report" msgstr "" -#: part/templates/part/detail.html:361 +#: part/templates/part/detail.html:254 msgid "Upload BOM" msgstr "" -#: part/templates/part/detail.html:363 templates/js/translated/part.js:267 +#: part/templates/part/detail.html:256 templates/js/translated/part.js:270 msgid "Copy BOM" msgstr "" -#: part/templates/part/detail.html:365 part/views.py:755 +#: part/templates/part/detail.html:258 part/views.py:755 msgid "Validate BOM" msgstr "" -#: part/templates/part/detail.html:370 +#: part/templates/part/detail.html:263 msgid "New BOM Item" msgstr "" -#: part/templates/part/detail.html:371 +#: part/templates/part/detail.html:264 msgid "Add BOM Item" msgstr "" -#: part/templates/part/detail.html:384 +#: part/templates/part/detail.html:277 msgid "Assemblies" msgstr "" -#: part/templates/part/detail.html:401 +#: part/templates/part/detail.html:294 msgid "Part Builds" msgstr "" -#: part/templates/part/detail.html:426 +#: part/templates/part/detail.html:319 msgid "Build Order Allocations" msgstr "" -#: part/templates/part/detail.html:436 +#: part/templates/part/detail.html:329 msgid "Part Suppliers" msgstr "" -#: part/templates/part/detail.html:463 +#: part/templates/part/detail.html:356 msgid "Part Manufacturers" msgstr "" -#: part/templates/part/detail.html:479 +#: part/templates/part/detail.html:372 msgid "Delete manufacturer parts" msgstr "" -#: part/templates/part/detail.html:660 +#: part/templates/part/detail.html:553 msgid "Delete selected BOM items?" msgstr "" -#: part/templates/part/detail.html:661 +#: part/templates/part/detail.html:554 msgid "All selected BOM items will be deleted" msgstr "" -#: part/templates/part/detail.html:712 +#: part/templates/part/detail.html:605 msgid "Create BOM Item" msgstr "" -#: part/templates/part/detail.html:764 +#: part/templates/part/detail.html:657 msgid "Related Part" msgstr "" -#: part/templates/part/detail.html:772 +#: part/templates/part/detail.html:665 msgid "Add Related Part" msgstr "" -#: part/templates/part/detail.html:869 +#: part/templates/part/detail.html:760 msgid "Add Test Result Template" msgstr "" -#: part/templates/part/detail.html:926 +#: part/templates/part/detail.html:817 msgid "Edit Part Notes" msgstr "" -#: part/templates/part/detail.html:1039 +#: part/templates/part/detail.html:930 #, python-format msgid "Purchase Unit Price - %(currency)s" msgstr "" -#: part/templates/part/detail.html:1051 +#: part/templates/part/detail.html:942 #, python-format msgid "Unit Price-Cost Difference - %(currency)s" msgstr "" -#: part/templates/part/detail.html:1063 +#: part/templates/part/detail.html:954 #, python-format msgid "Supplier Unit Cost - %(currency)s" msgstr "" -#: part/templates/part/detail.html:1152 +#: part/templates/part/detail.html:1043 #, python-format msgid "Unit Price - %(currency)s" msgstr "" @@ -4668,86 +4677,108 @@ msgstr "" msgid "Delete part" msgstr "" -#: part/templates/part/part_base.html:109 +#: part/templates/part/part_base.html:112 msgid "Part is a template part (variants can be made from this part)" msgstr "" -#: part/templates/part/part_base.html:113 +#: part/templates/part/part_base.html:116 msgid "Part can be assembled from other parts" msgstr "" -#: part/templates/part/part_base.html:117 +#: part/templates/part/part_base.html:120 msgid "Part can be used in assemblies" msgstr "" -#: part/templates/part/part_base.html:121 +#: part/templates/part/part_base.html:124 msgid "Part stock is tracked by serial number" msgstr "" -#: part/templates/part/part_base.html:125 +#: part/templates/part/part_base.html:128 msgid "Part can be purchased from external suppliers" msgstr "" -#: part/templates/part/part_base.html:129 +#: part/templates/part/part_base.html:132 msgid "Part can be sold to customers" msgstr "" -#: part/templates/part/part_base.html:135 -#: part/templates/part/part_base.html:143 +#: part/templates/part/part_base.html:138 +#: part/templates/part/part_base.html:146 msgid "Part is virtual (not a physical part)" msgstr "" -#: part/templates/part/part_base.html:136 +#: part/templates/part/part_base.html:139 #: templates/js/translated/company.js:505 #: templates/js/translated/company.js:762 #: templates/js/translated/model_renderers.js:175 -#: templates/js/translated/part.js:465 templates/js/translated/part.js:542 +#: templates/js/translated/part.js:472 templates/js/translated/part.js:549 msgid "Inactive" msgstr "" -#: part/templates/part/part_base.html:155 +#: part/templates/part/part_base.html:156 +#: part/templates/part/part_base.html:579 +msgid "Show Part Details" +msgstr "" + +#: part/templates/part/part_base.html:173 #, python-format msgid "This part is a variant of %(link)s" msgstr "" -#: part/templates/part/part_base.html:172 templates/js/translated/order.js:1546 +#: part/templates/part/part_base.html:190 templates/js/translated/order.js:1545 #: templates/js/translated/table_filters.js:188 msgid "In Stock" msgstr "" -#: part/templates/part/part_base.html:185 templates/js/translated/part.js:1054 +#: part/templates/part/part_base.html:203 templates/js/translated/part.js:1235 msgid "On Order" msgstr "" -#: part/templates/part/part_base.html:192 templates/InvenTree/index.html:178 +#: part/templates/part/part_base.html:210 templates/InvenTree/index.html:178 msgid "Required for Build Orders" msgstr "" -#: part/templates/part/part_base.html:199 +#: part/templates/part/part_base.html:217 msgid "Required for Sales Orders" msgstr "" -#: part/templates/part/part_base.html:206 +#: part/templates/part/part_base.html:224 msgid "Allocated to Orders" msgstr "" -#: part/templates/part/part_base.html:221 templates/js/translated/bom.js:566 +#: part/templates/part/part_base.html:239 templates/js/translated/bom.js:566 msgid "Can Build" msgstr "" -#: part/templates/part/part_base.html:227 templates/js/translated/part.js:885 -#: templates/js/translated/part.js:1058 +#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1066 +#: templates/js/translated/part.js:1239 msgid "Building" msgstr "" -#: part/templates/part/part_base.html:320 part/templates/part/prices.html:144 +#: part/templates/part/part_base.html:295 +msgid "Minimum stock level" +msgstr "" + +#: part/templates/part/part_base.html:324 +msgid "Latest Serial Number" +msgstr "" + +#: part/templates/part/part_base.html:328 +#: stock/templates/stock/item_base.html:159 +msgid "Search for serial number" +msgstr "" + +#: part/templates/part/part_base.html:449 part/templates/part/prices.html:144 msgid "Calculate" msgstr "" -#: part/templates/part/part_base.html:363 +#: part/templates/part/part_base.html:492 msgid "No matching images found" msgstr "" +#: part/templates/part/part_base.html:573 +msgid "Hide Part Details" +msgstr "" + #: part/templates/part/part_pricing.html:22 part/templates/part/prices.html:21 msgid "Supplier Pricing" msgstr "" @@ -4805,20 +4836,15 @@ msgstr "" msgid "No pricing information is available for this part." msgstr "" -#: part/templates/part/part_sidebar.html:8 -#: templates/js/translated/stock.js:1949 -msgid "Details" -msgstr "" - -#: part/templates/part/part_sidebar.html:13 +#: part/templates/part/part_sidebar.html:11 msgid "Variants" msgstr "" -#: part/templates/part/part_sidebar.html:27 +#: part/templates/part/part_sidebar.html:25 msgid "Used In" msgstr "" -#: part/templates/part/part_sidebar.html:43 +#: part/templates/part/part_sidebar.html:41 msgid "Test Templates" msgstr "" @@ -4934,8 +4960,8 @@ msgid "Set category for the following parts" msgstr "" #: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:476 -#: templates/js/translated/part.js:429 templates/js/translated/part.js:875 -#: templates/js/translated/part.js:1062 +#: templates/js/translated/part.js:436 templates/js/translated/part.js:1056 +#: templates/js/translated/part.js:1243 msgid "No Stock" msgstr "" @@ -5037,7 +5063,7 @@ msgstr "" msgid "Delete Part Parameter Template" msgstr "" -#: part/views.py:1489 templates/js/translated/part.js:310 +#: part/views.py:1489 templates/js/translated/part.js:313 msgid "Edit Part Category" msgstr "" @@ -5171,11 +5197,12 @@ msgid "Stock Item Test Report" msgstr "" #: report/templates/report/inventree_test_report_base.html:79 -#: stock/models.py:530 stock/templates/stock/item_base.html:238 +#: stock/models.py:520 stock/templates/stock/item_base.html:149 #: templates/js/translated/build.js:233 templates/js/translated/build.js:637 #: templates/js/translated/build.js:1013 #: templates/js/translated/model_renderers.js:95 -#: templates/js/translated/order.js:1288 templates/js/translated/order.js:1377 +#: templates/js/translated/order.js:1287 templates/js/translated/order.js:1376 +#: templates/js/translated/stock.js:410 msgid "Serial Number" msgstr "" @@ -5184,17 +5211,17 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:93 -#: stock/models.py:1855 +#: stock/models.py:1845 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:94 -#: stock/models.py:1861 +#: stock/models.py:1851 msgid "Result" msgstr "" #: report/templates/report/inventree_test_report_base.html:97 -#: templates/js/translated/order.js:685 templates/js/translated/stock.js:1917 +#: templates/js/translated/order.js:684 templates/js/translated/stock.js:1999 msgid "Date" msgstr "" @@ -5212,7 +5239,7 @@ msgid "Installed Items" msgstr "" #: report/templates/report/inventree_test_report_base.html:137 -#: templates/js/translated/stock.js:2177 +#: templates/js/translated/stock.js:2259 msgid "Serial" msgstr "" @@ -5220,9 +5247,9 @@ msgstr "" msgid "Quantity is required" msgstr "" -#: stock/forms.py:91 stock/forms.py:265 stock/models.py:587 -#: stock/templates/stock/item_base.html:382 -#: templates/js/translated/stock.js:1276 +#: stock/forms.py:91 stock/forms.py:265 stock/models.py:577 +#: stock/templates/stock/item_base.html:186 +#: templates/js/translated/stock.js:1358 msgid "Expiry Date" msgstr "" @@ -5270,241 +5297,241 @@ msgstr "" msgid "Confirm removal of installed stock items" msgstr "" -#: stock/models.py:60 stock/models.py:624 -#: stock/templates/stock/item_base.html:422 +#: stock/models.py:60 stock/models.py:614 +#: stock/templates/stock/item_base.html:417 msgid "Owner" msgstr "" -#: stock/models.py:61 stock/models.py:625 +#: stock/models.py:61 stock/models.py:615 msgid "Select Owner" msgstr "" -#: stock/models.py:352 +#: stock/models.py:342 msgid "StockItem with this serial number already exists" msgstr "" -#: stock/models.py:388 +#: stock/models.py:378 #, python-brace-format msgid "Part type ('{pf}') must be {pe}" msgstr "" -#: stock/models.py:398 stock/models.py:407 +#: stock/models.py:388 stock/models.py:397 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:399 +#: stock/models.py:389 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:421 +#: stock/models.py:411 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:427 +#: stock/models.py:417 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:434 +#: stock/models.py:424 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:476 +#: stock/models.py:466 msgid "Parent Stock Item" msgstr "" -#: stock/models.py:485 +#: stock/models.py:475 msgid "Base part" msgstr "" -#: stock/models.py:493 +#: stock/models.py:483 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:498 stock/templates/stock/location.html:12 +#: stock/models.py:488 stock/templates/stock/location.html:12 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" msgstr "" -#: stock/models.py:501 +#: stock/models.py:491 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:508 +#: stock/models.py:498 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:513 stock/templates/stock/item_base.html:271 +#: stock/models.py:503 stock/templates/stock/item_base.html:299 msgid "Installed In" msgstr "" -#: stock/models.py:516 +#: stock/models.py:506 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:532 +#: stock/models.py:522 msgid "Serial number for this item" msgstr "" -#: stock/models.py:546 +#: stock/models.py:536 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:550 +#: stock/models.py:540 msgid "Stock Quantity" msgstr "" -#: stock/models.py:559 +#: stock/models.py:549 msgid "Source Build" msgstr "" -#: stock/models.py:561 +#: stock/models.py:551 msgid "Build for this stock item" msgstr "" -#: stock/models.py:572 +#: stock/models.py:562 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:575 +#: stock/models.py:565 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:581 +#: stock/models.py:571 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:588 +#: stock/models.py:578 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:601 +#: stock/models.py:591 msgid "Delete on deplete" msgstr "" -#: stock/models.py:601 +#: stock/models.py:591 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:611 stock/templates/stock/item.html:111 +#: stock/models.py:601 stock/templates/stock/item.html:111 msgid "Stock Item Notes" msgstr "" -#: stock/models.py:620 +#: stock/models.py:610 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:630 +#: stock/models.py:620 msgid "Scheduled for deletion" msgstr "" -#: stock/models.py:631 +#: stock/models.py:621 msgid "This StockItem will be deleted by the background worker" msgstr "" -#: stock/models.py:1094 +#: stock/models.py:1084 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1100 +#: stock/models.py:1090 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1106 +#: stock/models.py:1096 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({n})" msgstr "" -#: stock/models.py:1109 +#: stock/models.py:1099 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1112 +#: stock/models.py:1102 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1119 +#: stock/models.py:1109 #, python-brace-format msgid "Serial numbers already exist: {exists}" msgstr "" -#: stock/models.py:1277 +#: stock/models.py:1267 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:1775 +#: stock/models.py:1765 msgid "Entry notes" msgstr "" -#: stock/models.py:1832 +#: stock/models.py:1822 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:1838 +#: stock/models.py:1828 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:1856 +#: stock/models.py:1846 msgid "Test name" msgstr "" -#: stock/models.py:1862 templates/js/translated/table_filters.js:266 +#: stock/models.py:1852 templates/js/translated/table_filters.js:266 msgid "Test result" msgstr "" -#: stock/models.py:1868 +#: stock/models.py:1858 msgid "Test output value" msgstr "" -#: stock/models.py:1875 +#: stock/models.py:1865 msgid "Test result attachment" msgstr "" -#: stock/models.py:1881 +#: stock/models.py:1871 msgid "Test notes" msgstr "" -#: stock/serializers.py:166 +#: stock/serializers.py:171 msgid "Purchase price of this stock item" msgstr "" -#: stock/serializers.py:173 +#: stock/serializers.py:178 msgid "Purchase currency of this stock item" msgstr "" -#: stock/serializers.py:287 +#: stock/serializers.py:292 msgid "Enter number of stock items to serialize" msgstr "" -#: stock/serializers.py:302 +#: stock/serializers.py:307 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "" -#: stock/serializers.py:308 +#: stock/serializers.py:313 msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:319 stock/serializers.py:686 +#: stock/serializers.py:324 stock/serializers.py:691 msgid "Destination stock location" msgstr "" -#: stock/serializers.py:326 +#: stock/serializers.py:331 msgid "Optional note field" msgstr "" -#: stock/serializers.py:339 +#: stock/serializers.py:344 msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:556 +#: stock/serializers.py:561 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:584 +#: stock/serializers.py:589 msgid "Stock transaction notes" msgstr "" -#: stock/serializers.py:594 +#: stock/serializers.py:599 msgid "A list of stock items must be provided" msgstr "" @@ -5629,125 +5656,131 @@ msgstr "" msgid "Install" msgstr "" -#: stock/templates/stock/item_base.html:106 +#: stock/templates/stock/item_base.html:108 msgid "Convert to variant" msgstr "" -#: stock/templates/stock/item_base.html:109 +#: stock/templates/stock/item_base.html:111 msgid "Duplicate stock item" msgstr "" -#: stock/templates/stock/item_base.html:111 +#: stock/templates/stock/item_base.html:113 msgid "Edit stock item" msgstr "" -#: stock/templates/stock/item_base.html:114 +#: stock/templates/stock/item_base.html:116 msgid "Delete stock item" msgstr "" -#: stock/templates/stock/item_base.html:136 -#: stock/templates/stock/item_base.html:386 -#: templates/js/translated/table_filters.js:247 -msgid "Expired" +#: stock/templates/stock/item_base.html:154 +msgid "previous page" msgstr "" -#: stock/templates/stock/item_base.html:146 -#: stock/templates/stock/item_base.html:388 -#: templates/js/translated/table_filters.js:253 -msgid "Stale" +#: stock/templates/stock/item_base.html:154 +msgid "Navigate to previous serial number" msgstr "" -#: stock/templates/stock/item_base.html:161 -msgid "You are not in the list of owners of this item. This stock item cannot be edited." +#: stock/templates/stock/item_base.html:163 +msgid "next page" msgstr "" -#: stock/templates/stock/item_base.html:168 -msgid "This stock item is in production and cannot be edited." -msgstr "" - -#: stock/templates/stock/item_base.html:169 -msgid "Edit the stock item from the build view." -msgstr "" - -#: stock/templates/stock/item_base.html:182 -msgid "This stock item has not passed all required tests" +#: stock/templates/stock/item_base.html:163 +msgid "Navigate to next serial number" msgstr "" #: stock/templates/stock/item_base.html:190 #, python-format -msgid "This stock item is allocated to Sales Order %(link)s (Quantity: %(qty)s)" -msgstr "" - -#: stock/templates/stock/item_base.html:198 -#, python-format -msgid "This stock item is allocated to Build %(link)s (Quantity: %(qty)s)" -msgstr "" - -#: stock/templates/stock/item_base.html:204 -msgid "This stock item is serialized - it has a unique serial number and the quantity cannot be adjusted." -msgstr "" - -#: stock/templates/stock/item_base.html:208 -msgid "This stock item cannot be deleted as it has child items" -msgstr "" - -#: stock/templates/stock/item_base.html:212 -msgid "This stock item will be automatically deleted when all stock is depleted." -msgstr "" - -#: stock/templates/stock/item_base.html:241 -msgid "previous page" -msgstr "" - -#: stock/templates/stock/item_base.html:247 -msgid "next page" -msgstr "" - -#: stock/templates/stock/item_base.html:290 -#: templates/js/translated/build.js:1035 -msgid "No location set" -msgstr "" - -#: stock/templates/stock/item_base.html:297 -msgid "Barcode Identifier" -msgstr "" - -#: stock/templates/stock/item_base.html:339 -msgid "Parent Item" -msgstr "" - -#: stock/templates/stock/item_base.html:357 -msgid "No manufacturer set" -msgstr "" - -#: stock/templates/stock/item_base.html:386 -#, python-format msgid "This StockItem expired on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:388 +#: stock/templates/stock/item_base.html:190 +#: templates/js/translated/table_filters.js:247 +msgid "Expired" +msgstr "" + +#: stock/templates/stock/item_base.html:192 #, python-format msgid "This StockItem expires on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:395 -#: templates/js/translated/stock.js:1289 +#: stock/templates/stock/item_base.html:192 +#: templates/js/translated/table_filters.js:253 +msgid "Stale" +msgstr "" + +#: stock/templates/stock/item_base.html:199 +#: templates/js/translated/stock.js:1371 msgid "Last Updated" msgstr "" -#: stock/templates/stock/item_base.html:400 +#: stock/templates/stock/item_base.html:204 msgid "Last Stocktake" msgstr "" -#: stock/templates/stock/item_base.html:404 +#: stock/templates/stock/item_base.html:208 msgid "No stocktake performed" msgstr "" -#: stock/templates/stock/item_base.html:415 +#: stock/templates/stock/item_base.html:226 +msgid "You are not in the list of owners of this item. This stock item cannot be edited." +msgstr "" + +#: stock/templates/stock/item_base.html:233 +msgid "This stock item is in production and cannot be edited." +msgstr "" + +#: stock/templates/stock/item_base.html:234 +msgid "Edit the stock item from the build view." +msgstr "" + +#: stock/templates/stock/item_base.html:247 +msgid "This stock item has not passed all required tests" +msgstr "" + +#: stock/templates/stock/item_base.html:255 +#, python-format +msgid "This stock item is allocated to Sales Order %(link)s (Quantity: %(qty)s)" +msgstr "" + +#: stock/templates/stock/item_base.html:263 +#, python-format +msgid "This stock item is allocated to Build %(link)s (Quantity: %(qty)s)" +msgstr "" + +#: stock/templates/stock/item_base.html:269 +msgid "This stock item is serialized - it has a unique serial number and the quantity cannot be adjusted." +msgstr "" + +#: stock/templates/stock/item_base.html:273 +msgid "This stock item cannot be deleted as it has child items" +msgstr "" + +#: stock/templates/stock/item_base.html:277 +msgid "This stock item will be automatically deleted when all stock is depleted." +msgstr "" + +#: stock/templates/stock/item_base.html:318 +#: templates/js/translated/build.js:1035 +msgid "No location set" +msgstr "" + +#: stock/templates/stock/item_base.html:325 +msgid "Barcode Identifier" +msgstr "" + +#: stock/templates/stock/item_base.html:367 +msgid "Parent Item" +msgstr "" + +#: stock/templates/stock/item_base.html:385 +msgid "No manufacturer set" +msgstr "" + +#: stock/templates/stock/item_base.html:410 msgid "Tests" msgstr "" -#: stock/templates/stock/item_base.html:505 +#: stock/templates/stock/item_base.html:500 msgid "Edit Stock Status" msgstr "" @@ -5825,30 +5858,35 @@ msgstr "" msgid "New Location" msgstr "" -#: stock/templates/stock/location.html:86 +#: stock/templates/stock/location.html:95 +#: stock/templates/stock/location.html:101 +msgid "Location Path" +msgstr "" + +#: stock/templates/stock/location.html:102 msgid "Top level stock location" msgstr "" -#: stock/templates/stock/location.html:95 +#: stock/templates/stock/location.html:115 msgid "You are not in the list of owners of this location. This stock location cannot be edited." msgstr "" -#: stock/templates/stock/location.html:113 -#: stock/templates/stock/location.html:160 +#: stock/templates/stock/location.html:128 +#: stock/templates/stock/location.html:175 #: stock/templates/stock/location_sidebar.html:5 msgid "Sublocations" msgstr "" -#: stock/templates/stock/location.html:127 templates/InvenTree/search.html:170 +#: stock/templates/stock/location.html:142 templates/InvenTree/search.html:170 #: templates/stats.html:97 users/models.py:42 msgid "Stock Locations" msgstr "" -#: stock/templates/stock/location.html:167 templates/stock_table.html:30 +#: stock/templates/stock/location.html:182 templates/stock_table.html:30 msgid "Printing Actions" msgstr "" -#: stock/templates/stock/location.html:171 templates/stock_table.html:34 +#: stock/templates/stock/location.html:186 templates/stock_table.html:34 msgid "Print labels" msgstr "" @@ -5942,7 +5980,7 @@ msgstr "" msgid "Uninstall Stock Items" msgstr "" -#: stock/views.py:760 templates/js/translated/stock.js:648 +#: stock/views.py:760 templates/js/translated/stock.js:730 msgid "Confirm stock adjustment" msgstr "" @@ -5950,7 +5988,7 @@ msgstr "" msgid "Uninstalled stock items" msgstr "" -#: stock/views.py:793 templates/js/translated/stock.js:318 +#: stock/views.py:793 templates/js/translated/stock.js:319 msgid "Edit Stock Item" msgstr "" @@ -5962,7 +6000,7 @@ msgstr "" msgid "Create new Stock Item" msgstr "" -#: stock/views.py:1186 templates/js/translated/stock.js:298 +#: stock/views.py:1186 templates/js/translated/stock.js:299 msgid "Duplicate Stock Item" msgstr "" @@ -6868,7 +6906,7 @@ msgstr "" msgid "Unlink" msgstr "" -#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:600 +#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:682 msgid "Remove stock item" msgstr "" @@ -6963,7 +7001,7 @@ msgid "View BOM" msgstr "" #: templates/js/translated/bom.js:608 templates/js/translated/build.js:1183 -#: templates/js/translated/order.js:1320 +#: templates/js/translated/order.js:1319 msgid "Actions" msgstr "" @@ -7055,7 +7093,7 @@ msgstr "" msgid "No build order allocations found" msgstr "" -#: templates/js/translated/build.js:424 templates/js/translated/order.js:1194 +#: templates/js/translated/build.js:424 templates/js/translated/order.js:1193 msgid "Location not specified" msgstr "" @@ -7064,12 +7102,12 @@ msgid "No active build outputs found" msgstr "" #: templates/js/translated/build.js:1052 templates/js/translated/build.js:1760 -#: templates/js/translated/order.js:1327 +#: templates/js/translated/order.js:1326 msgid "Edit stock allocation" msgstr "" #: templates/js/translated/build.js:1054 templates/js/translated/build.js:1761 -#: templates/js/translated/order.js:1328 +#: templates/js/translated/order.js:1327 msgid "Delete stock allocation" msgstr "" @@ -7090,11 +7128,11 @@ msgid "Quantity Per" msgstr "" #: templates/js/translated/build.js:1134 templates/js/translated/build.js:1360 -#: templates/js/translated/build.js:1756 templates/js/translated/order.js:1557 +#: templates/js/translated/build.js:1756 templates/js/translated/order.js:1556 msgid "Allocated" msgstr "" -#: templates/js/translated/build.js:1190 templates/js/translated/order.js:1611 +#: templates/js/translated/build.js:1190 templates/js/translated/order.js:1610 msgid "Build stock" msgstr "" @@ -7102,7 +7140,7 @@ msgstr "" msgid "Order stock" msgstr "" -#: templates/js/translated/build.js:1197 templates/js/translated/order.js:1604 +#: templates/js/translated/build.js:1197 templates/js/translated/order.js:1603 msgid "Allocate stock" msgstr "" @@ -7143,9 +7181,9 @@ msgstr "" msgid "No builds matching query" msgstr "" -#: templates/js/translated/build.js:1593 templates/js/translated/part.js:966 -#: templates/js/translated/part.js:1377 templates/js/translated/stock.js:1094 -#: templates/js/translated/stock.js:1871 +#: templates/js/translated/build.js:1593 templates/js/translated/part.js:1147 +#: templates/js/translated/part.js:1558 templates/js/translated/stock.js:1176 +#: templates/js/translated/stock.js:1953 msgid "Select" msgstr "" @@ -7153,7 +7191,7 @@ msgstr "" msgid "Build order is overdue" msgstr "" -#: templates/js/translated/build.js:1674 templates/js/translated/stock.js:2090 +#: templates/js/translated/build.js:1674 templates/js/translated/stock.js:2172 msgid "No user information" msgstr "" @@ -7197,10 +7235,6 @@ msgstr "" msgid "Delete Supplier Part" msgstr "" -#: templates/js/translated/company.js:265 -msgid "Edit Company" -msgstr "" - #: templates/js/translated/company.js:286 msgid "Add new Company" msgstr "" @@ -7230,34 +7264,34 @@ msgid "No manufacturer parts found" msgstr "" #: templates/js/translated/company.js:497 -#: templates/js/translated/company.js:754 templates/js/translated/part.js:449 -#: templates/js/translated/part.js:534 +#: templates/js/translated/company.js:754 templates/js/translated/part.js:456 +#: templates/js/translated/part.js:541 msgid "Template part" msgstr "" #: templates/js/translated/company.js:501 -#: templates/js/translated/company.js:758 templates/js/translated/part.js:453 -#: templates/js/translated/part.js:538 +#: templates/js/translated/company.js:758 templates/js/translated/part.js:460 +#: templates/js/translated/part.js:545 msgid "Assembled part" msgstr "" -#: templates/js/translated/company.js:628 templates/js/translated/part.js:626 +#: templates/js/translated/company.js:628 templates/js/translated/part.js:633 msgid "No parameters found" msgstr "" -#: templates/js/translated/company.js:665 templates/js/translated/part.js:668 +#: templates/js/translated/company.js:665 templates/js/translated/part.js:675 msgid "Edit parameter" msgstr "" -#: templates/js/translated/company.js:666 templates/js/translated/part.js:669 +#: templates/js/translated/company.js:666 templates/js/translated/part.js:676 msgid "Delete parameter" msgstr "" -#: templates/js/translated/company.js:685 templates/js/translated/part.js:686 +#: templates/js/translated/company.js:685 templates/js/translated/part.js:693 msgid "Edit Parameter" msgstr "" -#: templates/js/translated/company.js:696 templates/js/translated/part.js:698 +#: templates/js/translated/company.js:696 templates/js/translated/part.js:705 msgid "Delete Parameter" msgstr "" @@ -7346,7 +7380,7 @@ msgid "NO" msgstr "" #: templates/js/translated/label.js:29 templates/js/translated/report.js:118 -#: templates/js/translated/stock.js:624 +#: templates/js/translated/stock.js:706 msgid "Select Stock Items" msgstr "" @@ -7502,11 +7536,11 @@ msgstr "" msgid "Export Order" msgstr "" -#: templates/js/translated/order.js:211 templates/js/translated/stock.js:423 +#: templates/js/translated/order.js:211 templates/js/translated/stock.js:505 msgid "Format" msgstr "" -#: templates/js/translated/order.js:212 templates/js/translated/stock.js:424 +#: templates/js/translated/order.js:212 templates/js/translated/stock.js:506 msgid "Select file format" msgstr "" @@ -7522,7 +7556,7 @@ msgstr "" msgid "Quantity to receive" msgstr "" -#: templates/js/translated/order.js:360 templates/js/translated/stock.js:1673 +#: templates/js/translated/order.js:360 templates/js/translated/stock.js:1755 msgid "Stock Status" msgstr "" @@ -7546,321 +7580,321 @@ msgstr "" msgid "Receive Purchase Order Items" msgstr "" -#: templates/js/translated/order.js:627 +#: templates/js/translated/order.js:627 templates/js/translated/part.js:746 msgid "No purchase orders found" msgstr "" -#: templates/js/translated/order.js:652 templates/js/translated/order.js:1063 +#: templates/js/translated/order.js:659 templates/js/translated/order.js:1062 msgid "Order is overdue" msgstr "" -#: templates/js/translated/order.js:772 templates/js/translated/order.js:1646 +#: templates/js/translated/order.js:771 templates/js/translated/order.js:1645 msgid "Edit Line Item" msgstr "" -#: templates/js/translated/order.js:784 templates/js/translated/order.js:1657 +#: templates/js/translated/order.js:783 templates/js/translated/order.js:1656 msgid "Delete Line Item" msgstr "" -#: templates/js/translated/order.js:823 +#: templates/js/translated/order.js:822 msgid "No line items found" msgstr "" -#: templates/js/translated/order.js:850 templates/js/translated/order.js:1467 +#: templates/js/translated/order.js:849 templates/js/translated/order.js:1466 msgid "Total" msgstr "" -#: templates/js/translated/order.js:904 templates/js/translated/order.js:1492 -#: templates/js/translated/part.js:1594 templates/js/translated/part.js:1805 +#: templates/js/translated/order.js:903 templates/js/translated/order.js:1491 +#: templates/js/translated/part.js:1775 templates/js/translated/part.js:1986 msgid "Unit Price" msgstr "" -#: templates/js/translated/order.js:919 templates/js/translated/order.js:1508 +#: templates/js/translated/order.js:918 templates/js/translated/order.js:1507 msgid "Total Price" msgstr "" -#: templates/js/translated/order.js:997 templates/js/translated/order.js:1617 +#: templates/js/translated/order.js:996 templates/js/translated/order.js:1616 msgid "Edit line item" msgstr "" -#: templates/js/translated/order.js:998 +#: templates/js/translated/order.js:997 msgid "Delete line item" msgstr "" -#: templates/js/translated/order.js:1002 +#: templates/js/translated/order.js:1001 templates/js/translated/part.js:878 msgid "Receive line item" msgstr "" -#: templates/js/translated/order.js:1039 +#: templates/js/translated/order.js:1038 msgid "No sales orders found" msgstr "" -#: templates/js/translated/order.js:1077 +#: templates/js/translated/order.js:1076 msgid "Invalid Customer" msgstr "" -#: templates/js/translated/order.js:1155 +#: templates/js/translated/order.js:1154 msgid "No sales order allocations found" msgstr "" -#: templates/js/translated/order.js:1248 +#: templates/js/translated/order.js:1247 msgid "Edit Stock Allocation" msgstr "" -#: templates/js/translated/order.js:1265 +#: templates/js/translated/order.js:1264 msgid "Confirm Delete Operation" msgstr "" -#: templates/js/translated/order.js:1266 +#: templates/js/translated/order.js:1265 msgid "Delete Stock Allocation" msgstr "" -#: templates/js/translated/order.js:1308 +#: templates/js/translated/order.js:1307 msgid "Stock location not specified" msgstr "" -#: templates/js/translated/order.js:1557 +#: templates/js/translated/order.js:1556 msgid "Fulfilled" msgstr "" -#: templates/js/translated/order.js:1601 +#: templates/js/translated/order.js:1600 msgid "Allocate serial numbers" msgstr "" -#: templates/js/translated/order.js:1607 +#: templates/js/translated/order.js:1606 msgid "Purchase stock" msgstr "" -#: templates/js/translated/order.js:1614 templates/js/translated/order.js:1793 +#: templates/js/translated/order.js:1613 templates/js/translated/order.js:1792 msgid "Calculate price" msgstr "" -#: templates/js/translated/order.js:1618 +#: templates/js/translated/order.js:1617 msgid "Delete line item " msgstr "" -#: templates/js/translated/order.js:1741 +#: templates/js/translated/order.js:1740 msgid "Allocate Stock Item" msgstr "" -#: templates/js/translated/order.js:1801 +#: templates/js/translated/order.js:1800 msgid "Update Unit Price" msgstr "" -#: templates/js/translated/order.js:1815 +#: templates/js/translated/order.js:1814 msgid "No matching line items" msgstr "" -#: templates/js/translated/part.js:51 +#: templates/js/translated/part.js:52 msgid "Part Attributes" msgstr "" -#: templates/js/translated/part.js:55 +#: templates/js/translated/part.js:56 msgid "Part Creation Options" msgstr "" -#: templates/js/translated/part.js:59 +#: templates/js/translated/part.js:60 msgid "Part Duplication Options" msgstr "" -#: templates/js/translated/part.js:63 +#: templates/js/translated/part.js:64 msgid "Supplier Options" msgstr "" -#: templates/js/translated/part.js:77 +#: templates/js/translated/part.js:78 msgid "Add Part Category" msgstr "" -#: templates/js/translated/part.js:166 +#: templates/js/translated/part.js:162 msgid "Create Initial Stock" msgstr "" -#: templates/js/translated/part.js:167 +#: templates/js/translated/part.js:163 msgid "Create an initial stock item for this part" msgstr "" -#: templates/js/translated/part.js:174 +#: templates/js/translated/part.js:170 msgid "Initial Stock Quantity" msgstr "" -#: templates/js/translated/part.js:175 +#: templates/js/translated/part.js:171 msgid "Specify initial stock quantity for this part" msgstr "" -#: templates/js/translated/part.js:182 +#: templates/js/translated/part.js:178 msgid "Select destination stock location" msgstr "" -#: templates/js/translated/part.js:193 +#: templates/js/translated/part.js:196 msgid "Copy Category Parameters" msgstr "" -#: templates/js/translated/part.js:194 +#: templates/js/translated/part.js:197 msgid "Copy parameter templates from selected part category" msgstr "" -#: templates/js/translated/part.js:202 +#: templates/js/translated/part.js:205 msgid "Add Supplier Data" msgstr "" -#: templates/js/translated/part.js:203 +#: templates/js/translated/part.js:206 msgid "Create initial supplier data for this part" msgstr "" -#: templates/js/translated/part.js:259 +#: templates/js/translated/part.js:262 msgid "Copy Image" msgstr "" -#: templates/js/translated/part.js:260 +#: templates/js/translated/part.js:263 msgid "Copy image from original part" msgstr "" -#: templates/js/translated/part.js:268 +#: templates/js/translated/part.js:271 msgid "Copy bill of materials from original part" msgstr "" -#: templates/js/translated/part.js:275 +#: templates/js/translated/part.js:278 msgid "Copy Parameters" msgstr "" -#: templates/js/translated/part.js:276 +#: templates/js/translated/part.js:279 msgid "Copy parameter data from original part" msgstr "" -#: templates/js/translated/part.js:289 +#: templates/js/translated/part.js:292 msgid "Parent part category" msgstr "" -#: templates/js/translated/part.js:333 +#: templates/js/translated/part.js:336 msgid "Edit Part" msgstr "" -#: templates/js/translated/part.js:335 +#: templates/js/translated/part.js:338 msgid "Part edited" msgstr "" -#: templates/js/translated/part.js:403 +#: templates/js/translated/part.js:410 msgid "You are subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:405 +#: templates/js/translated/part.js:412 msgid "You have subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:410 +#: templates/js/translated/part.js:417 msgid "Subscribe to notifications for this item" msgstr "" -#: templates/js/translated/part.js:412 +#: templates/js/translated/part.js:419 msgid "You have unsubscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:441 templates/js/translated/part.js:526 +#: templates/js/translated/part.js:448 templates/js/translated/part.js:533 msgid "Trackable part" msgstr "" -#: templates/js/translated/part.js:445 templates/js/translated/part.js:530 +#: templates/js/translated/part.js:452 templates/js/translated/part.js:537 msgid "Virtual part" msgstr "" -#: templates/js/translated/part.js:457 +#: templates/js/translated/part.js:464 msgid "Subscribed part" msgstr "" -#: templates/js/translated/part.js:461 +#: templates/js/translated/part.js:468 msgid "Salable part" msgstr "" -#: templates/js/translated/part.js:576 +#: templates/js/translated/part.js:583 msgid "No variants found" msgstr "" -#: templates/js/translated/part.js:765 +#: templates/js/translated/part.js:946 msgid "Delete part relationship" msgstr "" -#: templates/js/translated/part.js:789 +#: templates/js/translated/part.js:970 msgid "Delete Part Relationship" msgstr "" -#: templates/js/translated/part.js:856 templates/js/translated/part.js:1116 +#: templates/js/translated/part.js:1037 templates/js/translated/part.js:1297 msgid "No parts found" msgstr "" -#: templates/js/translated/part.js:1026 +#: templates/js/translated/part.js:1207 msgid "No category" msgstr "" -#: templates/js/translated/part.js:1049 +#: templates/js/translated/part.js:1230 #: templates/js/translated/table_filters.js:381 msgid "Low stock" msgstr "" -#: templates/js/translated/part.js:1140 templates/js/translated/part.js:1312 -#: templates/js/translated/stock.js:1832 +#: templates/js/translated/part.js:1321 templates/js/translated/part.js:1493 +#: templates/js/translated/stock.js:1914 msgid "Display as list" msgstr "" -#: templates/js/translated/part.js:1156 +#: templates/js/translated/part.js:1337 msgid "Display as grid" msgstr "" -#: templates/js/translated/part.js:1331 templates/js/translated/stock.js:1851 +#: templates/js/translated/part.js:1512 templates/js/translated/stock.js:1933 msgid "Display as tree" msgstr "" -#: templates/js/translated/part.js:1395 +#: templates/js/translated/part.js:1576 msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:1409 templates/js/translated/stock.js:1895 +#: templates/js/translated/part.js:1590 templates/js/translated/stock.js:1977 msgid "Path" msgstr "" -#: templates/js/translated/part.js:1453 +#: templates/js/translated/part.js:1634 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:1504 templates/js/translated/stock.js:816 +#: templates/js/translated/part.js:1685 templates/js/translated/stock.js:898 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:1505 templates/js/translated/stock.js:817 +#: templates/js/translated/part.js:1686 templates/js/translated/stock.js:899 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:1511 +#: templates/js/translated/part.js:1692 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:1533 +#: templates/js/translated/part.js:1714 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:1547 +#: templates/js/translated/part.js:1728 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:1572 +#: templates/js/translated/part.js:1753 #, python-brace-format msgid "No ${human_name} information found" msgstr "" -#: templates/js/translated/part.js:1627 +#: templates/js/translated/part.js:1808 #, python-brace-format msgid "Edit ${human_name}" msgstr "" -#: templates/js/translated/part.js:1628 +#: templates/js/translated/part.js:1809 #, python-brace-format msgid "Delete ${human_name}" msgstr "" -#: templates/js/translated/part.js:1729 +#: templates/js/translated/part.js:1910 msgid "Single Price" msgstr "" -#: templates/js/translated/part.js:1748 +#: templates/js/translated/part.js:1929 msgid "Single Price Difference" msgstr "" @@ -7930,276 +7964,300 @@ msgstr "" msgid "Sales Order(s) must be selected before printing report" msgstr "" -#: templates/js/translated/stock.js:70 +#: templates/js/translated/stock.js:71 msgid "Serialize Stock Item" msgstr "" -#: templates/js/translated/stock.js:88 templates/js/translated/stock.js:167 +#: templates/js/translated/stock.js:89 templates/js/translated/stock.js:168 msgid "Next available serial number" msgstr "" -#: templates/js/translated/stock.js:90 templates/js/translated/stock.js:169 +#: templates/js/translated/stock.js:91 templates/js/translated/stock.js:170 msgid "Latest serial number" msgstr "" -#: templates/js/translated/stock.js:104 +#: templates/js/translated/stock.js:105 msgid "Parent stock location" msgstr "" -#: templates/js/translated/stock.js:140 +#: templates/js/translated/stock.js:141 msgid "New Stock Location" msgstr "" -#: templates/js/translated/stock.js:180 +#: templates/js/translated/stock.js:181 msgid "This part cannot be serialized" msgstr "" -#: templates/js/translated/stock.js:219 +#: templates/js/translated/stock.js:220 msgid "Enter initial quantity for this stock item" msgstr "" -#: templates/js/translated/stock.js:225 +#: templates/js/translated/stock.js:226 msgid "Enter serial numbers for new stock (or leave blank)" msgstr "" -#: templates/js/translated/stock.js:368 +#: templates/js/translated/stock.js:369 msgid "Created new stock item" msgstr "" -#: templates/js/translated/stock.js:381 +#: templates/js/translated/stock.js:382 msgid "Created multiple stock items" msgstr "" -#: templates/js/translated/stock.js:420 +#: templates/js/translated/stock.js:407 +msgid "Find Serial Number" +msgstr "" + +#: templates/js/translated/stock.js:411 templates/js/translated/stock.js:412 +msgid "Enter serial number" +msgstr "" + +#: templates/js/translated/stock.js:428 +msgid "Enter a serial number" +msgstr "" + +#: templates/js/translated/stock.js:448 +msgid "No matching serial number" +msgstr "" + +#: templates/js/translated/stock.js:457 +msgid "More than one matching result found" +msgstr "" + +#: templates/js/translated/stock.js:502 msgid "Export Stock" msgstr "" -#: templates/js/translated/stock.js:431 +#: templates/js/translated/stock.js:513 msgid "Include Sublocations" msgstr "" -#: templates/js/translated/stock.js:432 +#: templates/js/translated/stock.js:514 msgid "Include stock items in sublocations" msgstr "" -#: templates/js/translated/stock.js:474 +#: templates/js/translated/stock.js:556 msgid "Transfer Stock" msgstr "" -#: templates/js/translated/stock.js:475 +#: templates/js/translated/stock.js:557 msgid "Move" msgstr "" -#: templates/js/translated/stock.js:481 +#: templates/js/translated/stock.js:563 msgid "Count Stock" msgstr "" -#: templates/js/translated/stock.js:482 +#: templates/js/translated/stock.js:564 msgid "Count" msgstr "" -#: templates/js/translated/stock.js:486 +#: templates/js/translated/stock.js:568 msgid "Remove Stock" msgstr "" -#: templates/js/translated/stock.js:487 +#: templates/js/translated/stock.js:569 msgid "Take" msgstr "" -#: templates/js/translated/stock.js:491 +#: templates/js/translated/stock.js:573 msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:492 users/models.py:200 +#: templates/js/translated/stock.js:574 users/models.py:200 msgid "Add" msgstr "" -#: templates/js/translated/stock.js:496 templates/stock_table.html:56 +#: templates/js/translated/stock.js:578 templates/stock_table.html:56 msgid "Delete Stock" msgstr "" -#: templates/js/translated/stock.js:585 +#: templates/js/translated/stock.js:667 msgid "Quantity cannot be adjusted for serialized stock" msgstr "" -#: templates/js/translated/stock.js:585 +#: templates/js/translated/stock.js:667 msgid "Specify stock quantity" msgstr "" -#: templates/js/translated/stock.js:625 +#: templates/js/translated/stock.js:707 msgid "You must select at least one available stock item" msgstr "" -#: templates/js/translated/stock.js:783 +#: templates/js/translated/stock.js:865 msgid "PASS" msgstr "" -#: templates/js/translated/stock.js:785 +#: templates/js/translated/stock.js:867 msgid "FAIL" msgstr "" -#: templates/js/translated/stock.js:790 +#: templates/js/translated/stock.js:872 msgid "NO RESULT" msgstr "" -#: templates/js/translated/stock.js:812 +#: templates/js/translated/stock.js:894 msgid "Add test result" msgstr "" -#: templates/js/translated/stock.js:838 +#: templates/js/translated/stock.js:920 msgid "No test results found" msgstr "" -#: templates/js/translated/stock.js:895 +#: templates/js/translated/stock.js:977 msgid "Test Date" msgstr "" -#: templates/js/translated/stock.js:1002 +#: templates/js/translated/stock.js:1084 msgid "In production" msgstr "" -#: templates/js/translated/stock.js:1006 +#: templates/js/translated/stock.js:1088 msgid "Installed in Stock Item" msgstr "" -#: templates/js/translated/stock.js:1010 +#: templates/js/translated/stock.js:1092 msgid "Shipped to customer" msgstr "" -#: templates/js/translated/stock.js:1014 +#: templates/js/translated/stock.js:1096 msgid "Assigned to Sales Order" msgstr "" -#: templates/js/translated/stock.js:1020 +#: templates/js/translated/stock.js:1102 msgid "No stock location set" msgstr "" -#: templates/js/translated/stock.js:1178 +#: templates/js/translated/stock.js:1260 msgid "Stock item is in production" msgstr "" -#: templates/js/translated/stock.js:1183 +#: templates/js/translated/stock.js:1265 msgid "Stock item assigned to sales order" msgstr "" -#: templates/js/translated/stock.js:1186 +#: templates/js/translated/stock.js:1268 msgid "Stock item assigned to customer" msgstr "" -#: templates/js/translated/stock.js:1190 +#: templates/js/translated/stock.js:1272 msgid "Stock item has expired" msgstr "" -#: templates/js/translated/stock.js:1192 +#: templates/js/translated/stock.js:1274 msgid "Stock item will expire soon" msgstr "" -#: templates/js/translated/stock.js:1196 +#: templates/js/translated/stock.js:1278 msgid "Stock item has been allocated" msgstr "" -#: templates/js/translated/stock.js:1200 +#: templates/js/translated/stock.js:1282 msgid "Stock item has been installed in another item" msgstr "" -#: templates/js/translated/stock.js:1207 +#: templates/js/translated/stock.js:1289 msgid "Stock item has been rejected" msgstr "" -#: templates/js/translated/stock.js:1209 +#: templates/js/translated/stock.js:1291 msgid "Stock item is lost" msgstr "" -#: templates/js/translated/stock.js:1211 +#: templates/js/translated/stock.js:1293 msgid "Stock item is destroyed" msgstr "" -#: templates/js/translated/stock.js:1215 +#: templates/js/translated/stock.js:1297 #: templates/js/translated/table_filters.js:183 msgid "Depleted" msgstr "" -#: templates/js/translated/stock.js:1265 +#: templates/js/translated/stock.js:1347 msgid "Stocktake" msgstr "" -#: templates/js/translated/stock.js:1338 +#: templates/js/translated/stock.js:1420 msgid "Supplier part not specified" msgstr "" -#: templates/js/translated/stock.js:1376 +#: templates/js/translated/stock.js:1458 msgid "No stock items matching query" msgstr "" -#: templates/js/translated/stock.js:1397 templates/js/translated/stock.js:1445 +#: templates/js/translated/stock.js:1479 templates/js/translated/stock.js:1527 msgid "items" msgstr "" -#: templates/js/translated/stock.js:1485 +#: templates/js/translated/stock.js:1567 msgid "batches" msgstr "" -#: templates/js/translated/stock.js:1512 +#: templates/js/translated/stock.js:1594 msgid "locations" msgstr "" -#: templates/js/translated/stock.js:1514 +#: templates/js/translated/stock.js:1596 msgid "Undefined location" msgstr "" -#: templates/js/translated/stock.js:1688 +#: templates/js/translated/stock.js:1770 msgid "Set Stock Status" msgstr "" -#: templates/js/translated/stock.js:1702 +#: templates/js/translated/stock.js:1784 msgid "Select Status Code" msgstr "" -#: templates/js/translated/stock.js:1703 +#: templates/js/translated/stock.js:1785 msgid "Status code must be selected" msgstr "" -#: templates/js/translated/stock.js:1927 +#: templates/js/translated/stock.js:2009 msgid "Invalid date" msgstr "" -#: templates/js/translated/stock.js:1974 +#: templates/js/translated/stock.js:2031 +msgid "Details" +msgstr "" + +#: templates/js/translated/stock.js:2056 msgid "Location no longer exists" msgstr "" -#: templates/js/translated/stock.js:1993 +#: templates/js/translated/stock.js:2075 msgid "Purchase order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2012 +#: templates/js/translated/stock.js:2094 msgid "Customer no longer exists" msgstr "" -#: templates/js/translated/stock.js:2030 +#: templates/js/translated/stock.js:2112 msgid "Stock item no longer exists" msgstr "" -#: templates/js/translated/stock.js:2053 +#: templates/js/translated/stock.js:2135 msgid "Added" msgstr "" -#: templates/js/translated/stock.js:2061 +#: templates/js/translated/stock.js:2143 msgid "Removed" msgstr "" -#: templates/js/translated/stock.js:2102 +#: templates/js/translated/stock.js:2184 msgid "Edit tracking entry" msgstr "" -#: templates/js/translated/stock.js:2103 +#: templates/js/translated/stock.js:2185 msgid "Delete tracking entry" msgstr "" -#: templates/js/translated/stock.js:2154 +#: templates/js/translated/stock.js:2236 msgid "No installed items" msgstr "" -#: templates/js/translated/stock.js:2205 +#: templates/js/translated/stock.js:2287 msgid "Uninstall Stock Item" msgstr "" diff --git a/InvenTree/locale/sv/LC_MESSAGES/django.po b/InvenTree/locale/sv/LC_MESSAGES/django.po index 02e5fa5928..0902728d5f 100644 --- a/InvenTree/locale/sv/LC_MESSAGES/django.po +++ b/InvenTree/locale/sv/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-11-30 21:49+0000\n" -"PO-Revision-Date: 2021-11-30 21:51\n" +"POT-Creation-Date: 2021-12-03 10:37+0000\n" +"PO-Revision-Date: 2021-12-03 11:25\n" "Last-Translator: \n" "Language-Team: Swedish\n" "Language: sv_SE\n" @@ -114,129 +114,130 @@ msgstr "Inga serienummer hittades" msgid "Number of unique serial number ({s}) must match quantity ({q})" msgstr "" -#: InvenTree/models.py:114 +#: InvenTree/models.py:120 msgid "Missing file" msgstr "" -#: InvenTree/models.py:115 +#: InvenTree/models.py:121 msgid "Missing external link" msgstr "" -#: InvenTree/models.py:126 stock/models.py:1874 +#: InvenTree/models.py:132 stock/models.py:1864 #: templates/js/translated/attachment.js:117 msgid "Attachment" msgstr "Bilaga" -#: InvenTree/models.py:127 +#: InvenTree/models.py:133 msgid "Select file to attach" msgstr "Välj fil att bifoga" -#: InvenTree/models.py:133 company/models.py:131 company/models.py:348 +#: InvenTree/models.py:139 company/models.py:131 company/models.py:348 #: company/models.py:564 order/models.py:163 part/models.py:797 #: report/templates/report/inventree_build_order_base.html:165 #: templates/js/translated/company.js:537 -#: templates/js/translated/company.js:826 templates/js/translated/part.js:1077 +#: templates/js/translated/company.js:826 templates/js/translated/part.js:1258 msgid "Link" msgstr "" -#: InvenTree/models.py:134 build/models.py:330 part/models.py:798 -#: stock/models.py:540 +#: InvenTree/models.py:140 build/models.py:330 part/models.py:798 +#: stock/models.py:530 msgid "Link to external URL" msgstr "" -#: InvenTree/models.py:137 templates/js/translated/attachment.js:161 +#: InvenTree/models.py:143 templates/js/translated/attachment.js:161 msgid "Comment" msgstr "Kommentar" -#: InvenTree/models.py:137 +#: InvenTree/models.py:143 msgid "File comment" msgstr "Fil kommentar" -#: InvenTree/models.py:143 InvenTree/models.py:144 common/models.py:1185 +#: InvenTree/models.py:149 InvenTree/models.py:150 common/models.py:1185 #: common/models.py:1186 part/models.py:2205 part/models.py:2225 #: report/templates/report/inventree_test_report_base.html:96 -#: templates/js/translated/stock.js:2084 +#: templates/js/translated/stock.js:2166 msgid "User" msgstr "Användare" -#: InvenTree/models.py:147 +#: InvenTree/models.py:153 msgid "upload date" msgstr "uppladdningsdatum" -#: InvenTree/models.py:170 +#: InvenTree/models.py:176 msgid "Filename must not be empty" msgstr "Filnamnet får inte vara tomt" -#: InvenTree/models.py:193 +#: InvenTree/models.py:199 msgid "Invalid attachment directory" msgstr "Ogiltig katalog för bilaga" -#: InvenTree/models.py:203 +#: InvenTree/models.py:209 #, python-brace-format msgid "Filename contains illegal character '{c}'" msgstr "Filnamnet innehåller ogiltiga tecken '{c}'" -#: InvenTree/models.py:206 +#: InvenTree/models.py:212 msgid "Filename missing extension" msgstr "Filnamn saknar ändelse" -#: InvenTree/models.py:213 +#: InvenTree/models.py:219 msgid "Attachment with this filename already exists" msgstr "Det finns redan en bilaga med detta filnamn" -#: InvenTree/models.py:220 +#: InvenTree/models.py:226 msgid "Error renaming file" msgstr "Fel vid namnbyte av fil" -#: InvenTree/models.py:255 +#: InvenTree/models.py:261 msgid "Invalid choice" msgstr "Ogiltigt val" -#: InvenTree/models.py:271 InvenTree/models.py:272 company/models.py:415 +#: InvenTree/models.py:277 InvenTree/models.py:278 company/models.py:415 #: label/models.py:112 part/models.py:741 part/models.py:2389 -#: part/templates/part/detail.html:25 report/models.py:181 -#: templates/InvenTree/settings/settings.html:259 -#: templates/js/translated/company.js:638 templates/js/translated/part.js:499 -#: templates/js/translated/part.js:636 templates/js/translated/part.js:1384 -#: templates/js/translated/stock.js:1877 +#: report/models.py:181 templates/InvenTree/settings/settings.html:259 +#: templates/js/translated/company.js:638 templates/js/translated/part.js:506 +#: templates/js/translated/part.js:643 templates/js/translated/part.js:1565 +#: templates/js/translated/stock.js:1959 msgid "Name" msgstr "Namn" -#: InvenTree/models.py:278 build/models.py:207 +#: InvenTree/models.py:284 build/models.py:207 #: build/templates/build/detail.html:25 company/models.py:354 -#: company/models.py:570 company/templates/company/manufacturer_part.html:80 -#: company/templates/company/supplier_part.html:81 label/models.py:119 -#: order/models.py:161 part/models.py:764 part/templates/part/detail.html:30 +#: company/models.py:570 company/templates/company/company_base.html:68 +#: company/templates/company/manufacturer_part.html:76 +#: company/templates/company/supplier_part.html:73 label/models.py:119 +#: order/models.py:161 part/models.py:764 part/templates/part/category.html:70 +#: part/templates/part/part_base.html:163 #: part/templates/part/set_category.html:14 report/models.py:194 #: report/models.py:553 report/models.py:592 #: report/templates/report/inventree_build_order_base.html:118 -#: stock/templates/stock/location.html:108 templates/js/translated/bom.js:215 +#: stock/templates/stock/location.html:89 templates/js/translated/bom.js:215 #: templates/js/translated/bom.js:428 templates/js/translated/build.js:1621 #: templates/js/translated/company.js:345 #: templates/js/translated/company.js:548 -#: templates/js/translated/company.js:837 templates/js/translated/order.js:673 -#: templates/js/translated/order.js:855 templates/js/translated/order.js:1091 -#: templates/js/translated/part.js:558 templates/js/translated/part.js:752 -#: templates/js/translated/part.js:837 templates/js/translated/part.js:1007 -#: templates/js/translated/part.js:1403 templates/js/translated/part.js:1472 -#: templates/js/translated/stock.js:1151 templates/js/translated/stock.js:1889 -#: templates/js/translated/stock.js:1934 +#: templates/js/translated/company.js:837 templates/js/translated/order.js:680 +#: templates/js/translated/order.js:854 templates/js/translated/order.js:1090 +#: templates/js/translated/part.js:565 templates/js/translated/part.js:933 +#: templates/js/translated/part.js:1018 templates/js/translated/part.js:1188 +#: templates/js/translated/part.js:1584 templates/js/translated/part.js:1653 +#: templates/js/translated/stock.js:1233 templates/js/translated/stock.js:1971 +#: templates/js/translated/stock.js:2016 msgid "Description" msgstr "Beskrivning" -#: InvenTree/models.py:279 +#: InvenTree/models.py:285 msgid "Description (optional)" msgstr "Beskrivning (valfritt)" -#: InvenTree/models.py:287 +#: InvenTree/models.py:293 msgid "parent" msgstr "överordnad" -#: InvenTree/serializers.py:62 part/models.py:2674 +#: InvenTree/serializers.py:65 part/models.py:2674 msgid "Must be a valid number" msgstr "Måste vara ett giltigt nummer" -#: InvenTree/serializers.py:285 +#: InvenTree/serializers.py:299 msgid "Filename" msgstr "Filnamn" @@ -361,7 +362,7 @@ msgid "Returned" msgstr "Återlämnad" #: InvenTree/status_codes.py:143 -#: order/templates/order/sales_order_base.html:147 +#: order/templates/order/sales_order_base.html:148 msgid "Shipped" msgstr "Skickad" @@ -566,7 +567,7 @@ msgid "Barcode associated with StockItem" msgstr "" #: build/forms.py:36 build/models.py:1283 -#: build/templates/build/build_base.html:124 +#: build/templates/build/build_base.html:132 #: build/templates/build/detail.html:35 common/models.py:1225 #: company/forms.py:42 company/templates/company/supplier_part.html:251 #: order/forms.py:102 order/models.py:729 order/models.py:991 @@ -574,26 +575,27 @@ msgstr "" #: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:223 #: part/forms.py:239 part/forms.py:255 part/models.py:2576 #: part/templates/part/bom_upload/match_parts.html:31 -#: part/templates/part/detail.html:1076 part/templates/part/detail.html:1162 +#: part/templates/part/detail.html:967 part/templates/part/detail.html:1053 #: part/templates/part/part_pricing.html:16 #: report/templates/report/inventree_build_order_base.html:114 #: report/templates/report/inventree_po_report.html:91 #: report/templates/report/inventree_so_report.html:91 #: report/templates/report/inventree_test_report_base.html:81 #: report/templates/report/inventree_test_report_base.html:139 -#: stock/forms.py:156 stock/serializers.py:286 -#: stock/templates/stock/item_base.html:256 +#: stock/forms.py:156 stock/serializers.py:291 +#: stock/templates/stock/item_base.html:174 #: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:443 #: templates/js/translated/build.js:235 templates/js/translated/build.js:435 #: templates/js/translated/build.js:629 templates/js/translated/build.js:639 #: templates/js/translated/build.js:1015 templates/js/translated/build.js:1362 #: templates/js/translated/model_renderers.js:99 -#: templates/js/translated/order.js:892 templates/js/translated/order.js:1205 -#: templates/js/translated/order.js:1283 templates/js/translated/order.js:1290 -#: templates/js/translated/order.js:1379 templates/js/translated/order.js:1479 -#: templates/js/translated/part.js:1615 templates/js/translated/part.js:1738 -#: templates/js/translated/part.js:1816 templates/js/translated/stock.js:377 -#: templates/js/translated/stock.js:2069 templates/js/translated/stock.js:2171 +#: templates/js/translated/order.js:891 templates/js/translated/order.js:1204 +#: templates/js/translated/order.js:1282 templates/js/translated/order.js:1289 +#: templates/js/translated/order.js:1378 templates/js/translated/order.js:1478 +#: templates/js/translated/part.js:843 templates/js/translated/part.js:1796 +#: templates/js/translated/part.js:1919 templates/js/translated/part.js:1997 +#: templates/js/translated/stock.js:378 templates/js/translated/stock.js:2151 +#: templates/js/translated/stock.js:2253 msgid "Quantity" msgstr "" @@ -602,8 +604,8 @@ msgid "Enter quantity for build output" msgstr "" #: build/forms.py:41 order/forms.py:96 stock/forms.py:95 -#: stock/serializers.py:307 templates/js/translated/stock.js:224 -#: templates/js/translated/stock.js:378 +#: stock/serializers.py:312 templates/js/translated/stock.js:225 +#: templates/js/translated/stock.js:379 msgid "Serial Numbers" msgstr "" @@ -646,7 +648,7 @@ msgstr "" #: build/templates/build/index.html:8 build/templates/build/index.html:12 #: order/templates/order/sales_order_detail.html:42 #: order/templates/order/so_sidebar.html:7 -#: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:221 +#: part/templates/part/part_sidebar.html:20 templates/InvenTree/index.html:221 #: templates/InvenTree/search.html:145 #: templates/InvenTree/settings/sidebar.html:42 users/models.py:44 msgid "Build Orders" @@ -662,7 +664,7 @@ msgstr "" #: report/templates/report/inventree_po_report.html:92 #: report/templates/report/inventree_so_report.html:92 #: templates/js/translated/bom.js:435 templates/js/translated/build.js:1119 -#: templates/js/translated/order.js:886 templates/js/translated/order.js:1473 +#: templates/js/translated/order.js:885 templates/js/translated/order.js:1472 msgid "Reference" msgstr "" @@ -670,7 +672,7 @@ msgstr "" msgid "Brief description of the build" msgstr "" -#: build/models.py:219 build/templates/build/build_base.html:156 +#: build/models.py:219 build/templates/build/build_base.html:164 #: build/templates/build/detail.html:88 msgid "Parent Build" msgstr "" @@ -679,7 +681,7 @@ msgstr "" msgid "BuildOrder to which this build is allocated" msgstr "" -#: build/models.py:225 build/templates/build/build_base.html:119 +#: build/models.py:225 build/templates/build/build_base.html:77 #: build/templates/build/detail.html:30 company/models.py:705 #: order/models.py:789 order/models.py:860 #: order/templates/order/order_wizard/select_parts.html:32 part/models.py:357 @@ -700,10 +702,10 @@ msgstr "" #: templates/js/translated/build.js:988 templates/js/translated/build.js:1359 #: templates/js/translated/build.js:1626 templates/js/translated/company.js:489 #: templates/js/translated/company.js:746 templates/js/translated/order.js:426 -#: templates/js/translated/order.js:840 templates/js/translated/order.js:1457 -#: templates/js/translated/part.js:737 templates/js/translated/part.js:818 -#: templates/js/translated/part.js:985 templates/js/translated/stock.js:508 -#: templates/js/translated/stock.js:1108 templates/js/translated/stock.js:2159 +#: templates/js/translated/order.js:839 templates/js/translated/order.js:1456 +#: templates/js/translated/part.js:918 templates/js/translated/part.js:999 +#: templates/js/translated/part.js:1166 templates/js/translated/stock.js:590 +#: templates/js/translated/stock.js:1190 templates/js/translated/stock.js:2241 msgid "Part" msgstr "" @@ -751,7 +753,7 @@ msgstr "" msgid "Number of stock items which have been completed" msgstr "" -#: build/models.py:277 part/templates/part/part_base.html:216 +#: build/models.py:277 part/templates/part/part_base.html:234 msgid "Build Status" msgstr "" @@ -759,7 +761,7 @@ msgstr "" msgid "Build status code" msgstr "" -#: build/models.py:285 stock/models.py:544 +#: build/models.py:285 stock/models.py:534 msgid "Batch Code" msgstr "" @@ -768,7 +770,7 @@ msgid "Batch code for this build output" msgstr "" #: build/models.py:292 order/models.py:165 part/models.py:936 -#: part/templates/part/detail.html:86 templates/js/translated/order.js:1104 +#: part/templates/part/part_base.html:313 templates/js/translated/order.js:1103 msgid "Creation Date" msgstr "" @@ -797,12 +799,12 @@ msgstr "" msgid "User who issued this build order" msgstr "" -#: build/models.py:323 build/templates/build/build_base.html:177 +#: build/models.py:323 build/templates/build/build_base.html:185 #: build/templates/build/detail.html:116 order/models.py:179 -#: order/templates/order/order_base.html:154 -#: order/templates/order/sales_order_base.html:161 part/models.py:940 +#: order/templates/order/order_base.html:158 +#: order/templates/order/sales_order_base.html:162 part/models.py:940 #: report/templates/report/inventree_build_order_base.html:159 -#: templates/js/translated/build.js:1680 templates/js/translated/order.js:700 +#: templates/js/translated/build.js:1680 templates/js/translated/order.js:699 msgid "Responsible" msgstr "" @@ -811,10 +813,10 @@ msgid "User responsible for this build order" msgstr "" #: build/models.py:329 build/templates/build/detail.html:102 -#: company/templates/company/manufacturer_part.html:87 -#: company/templates/company/supplier_part.html:88 -#: part/templates/part/detail.html:80 stock/models.py:538 -#: stock/templates/stock/item_base.html:346 +#: company/templates/company/manufacturer_part.html:102 +#: company/templates/company/supplier_part.html:126 +#: part/templates/part/part_base.html:354 stock/models.py:528 +#: stock/templates/stock/item_base.html:374 msgid "External Link" msgstr "" @@ -824,15 +826,15 @@ msgstr "" #: order/models.py:183 order/models.py:738 #: order/templates/order/po_sidebar.html:11 #: order/templates/order/so_sidebar.html:11 part/models.py:925 -#: part/templates/part/detail.html:223 part/templates/part/part_sidebar.html:52 +#: part/templates/part/detail.html:116 part/templates/part/part_sidebar.html:50 #: report/templates/report/inventree_build_order_base.html:173 -#: stock/forms.py:154 stock/forms.py:204 stock/forms.py:238 stock/models.py:610 -#: stock/models.py:1774 stock/models.py:1880 stock/serializers.py:325 -#: stock/serializers.py:583 stock/templates/stock/stock_sidebar.html:21 +#: stock/forms.py:154 stock/forms.py:204 stock/forms.py:238 stock/models.py:600 +#: stock/models.py:1764 stock/models.py:1870 stock/serializers.py:330 +#: stock/serializers.py:588 stock/templates/stock/stock_sidebar.html:21 #: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:599 -#: templates/js/translated/company.js:842 templates/js/translated/order.js:985 -#: templates/js/translated/order.js:1583 templates/js/translated/stock.js:891 -#: templates/js/translated/stock.js:1370 +#: templates/js/translated/company.js:842 templates/js/translated/order.js:984 +#: templates/js/translated/order.js:1582 templates/js/translated/stock.js:973 +#: templates/js/translated/stock.js:1452 msgid "Notes" msgstr "" @@ -877,7 +879,7 @@ msgstr "" msgid "Selected stock item not found in BOM" msgstr "" -#: build/models.py:1253 stock/templates/stock/item_base.html:318 +#: build/models.py:1253 stock/templates/stock/item_base.html:346 #: templates/InvenTree/search.html:143 templates/js/translated/build.js:1599 #: templates/navbar.html:33 msgid "Build" @@ -890,11 +892,11 @@ msgstr "" #: build/models.py:1270 build/serializers.py:328 #: stock/templates/stock/item_base.html:8 #: stock/templates/stock/item_base.html:16 -#: stock/templates/stock/item_base.html:340 +#: stock/templates/stock/item_base.html:368 #: templates/js/translated/build.js:408 templates/js/translated/build.js:413 #: templates/js/translated/build.js:1361 templates/js/translated/build.js:1742 -#: templates/js/translated/order.js:1178 templates/js/translated/order.js:1183 -#: templates/js/translated/stock.js:2020 +#: templates/js/translated/order.js:1177 templates/js/translated/order.js:1182 +#: templates/js/translated/stock.js:2102 msgid "Stock Item" msgstr "" @@ -934,16 +936,16 @@ msgstr "" msgid "This build output is not fully allocated" msgstr "" -#: build/serializers.py:190 order/serializers.py:219 order/serializers.py:287 -#: stock/forms.py:236 stock/serializers.py:318 stock/serializers.py:685 -#: stock/templates/stock/item_base.html:286 +#: build/serializers.py:190 order/serializers.py:228 order/serializers.py:296 +#: stock/forms.py:236 stock/serializers.py:323 stock/serializers.py:690 +#: stock/templates/stock/item_base.html:314 #: templates/js/translated/barcode.js:384 #: templates/js/translated/barcode.js:557 templates/js/translated/build.js:420 #: templates/js/translated/build.js:1027 templates/js/translated/order.js:348 -#: templates/js/translated/order.js:1190 templates/js/translated/order.js:1298 -#: templates/js/translated/order.js:1304 templates/js/translated/part.js:181 -#: templates/js/translated/stock.js:510 templates/js/translated/stock.js:1251 -#: templates/js/translated/stock.js:1961 +#: templates/js/translated/order.js:1189 templates/js/translated/order.js:1297 +#: templates/js/translated/order.js:1303 templates/js/translated/part.js:177 +#: templates/js/translated/stock.js:592 templates/js/translated/stock.js:1333 +#: templates/js/translated/stock.js:2043 msgid "Location" msgstr "" @@ -951,13 +953,13 @@ msgstr "" msgid "Location for completed build outputs" msgstr "" -#: build/serializers.py:197 build/templates/build/build_base.html:129 +#: build/serializers.py:197 build/templates/build/build_base.html:137 #: build/templates/build/detail.html:63 order/models.py:572 -#: order/serializers.py:240 stock/templates/stock/item_base.html:409 +#: order/serializers.py:249 stock/templates/stock/item_base.html:180 #: templates/js/translated/barcode.js:140 templates/js/translated/build.js:1655 -#: templates/js/translated/order.js:431 templates/js/translated/order.js:677 -#: templates/js/translated/order.js:1096 templates/js/translated/stock.js:1226 -#: templates/js/translated/stock.js:2038 templates/js/translated/stock.js:2187 +#: templates/js/translated/order.js:431 templates/js/translated/order.js:1095 +#: templates/js/translated/stock.js:1308 templates/js/translated/stock.js:2120 +#: templates/js/translated/stock.js:2269 msgid "Status" msgstr "" @@ -986,8 +988,8 @@ msgstr "" msgid "Item must be in stock" msgstr "" -#: build/serializers.py:348 order/models.py:316 order/serializers.py:233 -#: stock/models.py:381 stock/models.py:1103 stock/serializers.py:298 +#: build/serializers.py:348 order/models.py:316 order/serializers.py:242 +#: stock/models.py:371 stock/models.py:1093 stock/serializers.py:303 msgid "Quantity must be greater than zero" msgstr "" @@ -1031,7 +1033,7 @@ msgid "Edit Build" msgstr "" #: build/templates/build/build_base.html:56 -#: build/templates/build/build_base.html:207 build/views.py:56 +#: build/templates/build/build_base.html:215 build/views.py:56 msgid "Cancel Build" msgstr "" @@ -1041,93 +1043,95 @@ msgstr "" #: build/templates/build/build_base.html:64 #: build/templates/build/build_base.html:65 -#: build/templates/build/build_base.html:223 +#: build/templates/build/build_base.html:231 msgid "Complete Build" msgstr "" -#: build/templates/build/build_base.html:79 +#: build/templates/build/build_base.html:82 +msgid "Build Description" +msgstr "" + +#: build/templates/build/build_base.html:91 #, python-format msgid "This Build Order is allocated to Sales Order %(link)s" msgstr "" -#: build/templates/build/build_base.html:86 +#: build/templates/build/build_base.html:98 #, python-format msgid "This Build Order is a child of Build Order %(link)s" msgstr "" -#: build/templates/build/build_base.html:93 +#: build/templates/build/build_base.html:105 msgid "Build Order is ready to mark as completed" msgstr "" -#: build/templates/build/build_base.html:98 +#: build/templates/build/build_base.html:110 msgid "Build Order cannot be completed as outstanding outputs remain" msgstr "" -#: build/templates/build/build_base.html:103 +#: build/templates/build/build_base.html:115 msgid "Required build quantity has not yet been completed" msgstr "" -#: build/templates/build/build_base.html:108 +#: build/templates/build/build_base.html:120 msgid "Stock has not been fully allocated to this Build Order" msgstr "" -#: build/templates/build/build_base.html:138 +#: build/templates/build/build_base.html:146 #: build/templates/build/detail.html:132 -#: order/templates/order/order_base.html:140 -#: order/templates/order/sales_order_base.html:140 +#: order/templates/order/order_base.html:144 +#: order/templates/order/sales_order_base.html:141 #: report/templates/report/inventree_build_order_base.html:126 -#: templates/js/translated/build.js:1692 templates/js/translated/order.js:690 -#: templates/js/translated/order.js:1109 +#: templates/js/translated/build.js:1692 templates/js/translated/order.js:689 +#: templates/js/translated/order.js:1108 msgid "Target Date" msgstr "" -#: build/templates/build/build_base.html:143 +#: build/templates/build/build_base.html:151 #, python-format msgid "This build was due on %(target)s" msgstr "" -#: build/templates/build/build_base.html:143 -#: build/templates/build/build_base.html:188 -#: order/templates/order/order_base.html:81 -#: order/templates/order/order_base.html:102 -#: order/templates/order/sales_order_base.html:78 -#: order/templates/order/sales_order_base.html:107 +#: build/templates/build/build_base.html:151 +#: build/templates/build/build_base.html:196 +#: order/templates/order/order_base.html:98 +#: order/templates/order/sales_order_base.html:93 #: templates/js/translated/table_filters.js:294 #: templates/js/translated/table_filters.js:322 #: templates/js/translated/table_filters.js:339 msgid "Overdue" msgstr "" -#: build/templates/build/build_base.html:150 +#: build/templates/build/build_base.html:158 #: build/templates/build/detail.html:68 build/templates/build/detail.html:143 #: templates/js/translated/build.js:1641 #: templates/js/translated/table_filters.js:304 msgid "Completed" msgstr "" -#: build/templates/build/build_base.html:163 +#: build/templates/build/build_base.html:171 #: build/templates/build/detail.html:95 order/models.py:857 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: order/templates/order/sales_order_ship.html:25 #: report/templates/report/inventree_build_order_base.html:136 #: report/templates/report/inventree_so_report.html:77 -#: stock/templates/stock/item_base.html:280 -#: templates/js/translated/order.js:1051 +#: stock/templates/stock/item_base.html:308 +#: templates/js/translated/order.js:1050 msgid "Sales Order" msgstr "" -#: build/templates/build/build_base.html:170 +#: build/templates/build/build_base.html:178 #: build/templates/build/detail.html:109 #: report/templates/report/inventree_build_order_base.html:153 msgid "Issued By" msgstr "" -#: build/templates/build/build_base.html:215 +#: build/templates/build/build_base.html:223 msgid "Incomplete Outputs" msgstr "" -#: build/templates/build/build_base.html:216 +#: build/templates/build/build_base.html:224 msgid "Build Order cannot be completed as incomplete build outputs remain" msgstr "" @@ -1188,7 +1192,7 @@ msgid "Stock can be taken from any available location." msgstr "" #: build/templates/build/detail.html:50 order/models.py:811 stock/forms.py:150 -#: templates/js/translated/order.js:432 templates/js/translated/order.js:974 +#: templates/js/translated/order.js:432 templates/js/translated/order.js:973 msgid "Destination" msgstr "" @@ -1201,16 +1205,16 @@ msgid "Allocated Parts" msgstr "" #: build/templates/build/detail.html:81 -#: stock/templates/stock/item_base.html:304 -#: templates/js/translated/stock.js:1240 templates/js/translated/stock.js:2194 +#: stock/templates/stock/item_base.html:332 +#: templates/js/translated/stock.js:1322 templates/js/translated/stock.js:2276 #: templates/js/translated/table_filters.js:151 #: templates/js/translated/table_filters.js:233 msgid "Batch" msgstr "" #: build/templates/build/detail.html:127 -#: order/templates/order/order_base.html:127 -#: order/templates/order/sales_order_base.html:134 +#: order/templates/order/order_base.html:131 +#: order/templates/order/sales_order_base.html:135 #: templates/js/translated/build.js:1663 msgid "Created" msgstr "" @@ -1254,7 +1258,7 @@ msgstr "" #: build/templates/build/detail.html:185 #: company/templates/company/detail.html:38 #: company/templates/company/detail.html:85 order/views.py:509 -#: part/templates/part/category.html:166 +#: part/templates/part/category.html:173 msgid "Order Parts" msgstr "" @@ -1306,8 +1310,8 @@ msgstr "" #: order/templates/order/po_sidebar.html:9 #: order/templates/order/purchase_order_detail.html:60 #: order/templates/order/sales_order_detail.html:52 -#: order/templates/order/so_sidebar.html:9 part/templates/part/detail.html:300 -#: part/templates/part/part_sidebar.html:50 stock/templates/stock/item.html:95 +#: order/templates/order/so_sidebar.html:9 part/templates/part/detail.html:193 +#: part/templates/part/part_sidebar.html:48 stock/templates/stock/item.html:95 #: stock/templates/stock/stock_sidebar.html:19 msgid "Attachments" msgstr "" @@ -1323,7 +1327,7 @@ msgstr "" #: order/templates/order/purchase_order_detail.html:108 #: order/templates/order/sales_order_detail.html:72 #: order/templates/order/sales_order_detail.html:99 -#: part/templates/part/detail.html:227 stock/templates/stock/item.html:115 +#: part/templates/part/detail.html:120 stock/templates/stock/item.html:115 #: stock/templates/stock/item.html:205 msgid "Edit Notes" msgstr "" @@ -1336,7 +1340,7 @@ msgstr "" msgid "All untracked stock items have been allocated" msgstr "" -#: build/templates/build/index.html:18 part/templates/part/detail.html:407 +#: build/templates/build/index.html:18 part/templates/part/detail.html:300 msgid "New Build Order" msgstr "" @@ -1380,7 +1384,7 @@ msgstr "" msgid "Maximum output quantity is " msgstr "" -#: build/views.py:122 stock/serializers.py:356 stock/views.py:1290 +#: build/views.py:122 stock/serializers.py:361 stock/views.py:1290 msgid "Serial numbers already exist" msgstr "" @@ -1675,7 +1679,7 @@ msgid "Parts are trackable by default" msgstr "" #: common/models.py:745 part/models.py:920 -#: part/templates/part/part_base.html:144 +#: part/templates/part/part_base.html:147 #: templates/js/translated/table_filters.js:42 msgid "Virtual" msgstr "" @@ -2142,7 +2146,7 @@ msgstr "" #: common/models.py:1233 company/serializers.py:264 #: company/templates/company/supplier_part.html:256 -#: templates/js/translated/part.js:1620 +#: templates/js/translated/part.js:852 templates/js/translated/part.js:1801 msgid "Price" msgstr "" @@ -2206,7 +2210,7 @@ msgstr "" msgid "Description of the company" msgstr "" -#: company/models.py:112 company/templates/company/company_base.html:70 +#: company/models.py:112 company/templates/company/company_base.html:97 #: templates/js/translated/company.js:349 msgid "Website" msgstr "" @@ -2215,7 +2219,7 @@ msgstr "" msgid "Company website URL" msgstr "" -#: company/models.py:117 company/templates/company/company_base.html:88 +#: company/models.py:117 company/templates/company/company_base.html:115 msgid "Address" msgstr "" @@ -2231,7 +2235,7 @@ msgstr "" msgid "Contact phone number" msgstr "" -#: company/models.py:125 company/templates/company/company_base.html:102 +#: company/models.py:125 company/templates/company/company_base.html:129 #: templates/InvenTree/settings/user.html:47 msgid "Email" msgstr "" @@ -2240,7 +2244,7 @@ msgstr "" msgid "Contact email address" msgstr "" -#: company/models.py:128 company/templates/company/company_base.html:109 +#: company/models.py:128 company/templates/company/company_base.html:136 msgid "Contact" msgstr "" @@ -2281,7 +2285,7 @@ msgid "Does this company manufacture parts?" msgstr "" #: company/models.py:152 company/serializers.py:270 -#: company/templates/company/company_base.html:76 stock/serializers.py:172 +#: company/templates/company/company_base.html:103 stock/serializers.py:177 msgid "Currency" msgstr "" @@ -2289,8 +2293,8 @@ msgstr "" msgid "Default currency used for this company" msgstr "" -#: company/models.py:320 company/models.py:535 stock/models.py:484 -#: stock/templates/stock/item_base.html:224 +#: company/models.py:320 company/models.py:535 stock/models.py:474 +#: stock/templates/stock/item_base.html:135 msgid "Base Part" msgstr "" @@ -2298,29 +2302,29 @@ msgstr "" msgid "Select part" msgstr "" -#: company/models.py:335 company/templates/company/company_base.html:116 -#: company/templates/company/manufacturer_part.html:93 -#: company/templates/company/supplier_part.html:104 -#: stock/templates/stock/item_base.html:353 +#: company/models.py:335 company/templates/company/company_base.html:73 +#: company/templates/company/manufacturer_part.html:91 +#: company/templates/company/supplier_part.html:97 +#: stock/templates/stock/item_base.html:381 #: templates/js/translated/company.js:333 #: templates/js/translated/company.js:514 -#: templates/js/translated/company.js:797 templates/js/translated/part.js:229 +#: templates/js/translated/company.js:797 templates/js/translated/part.js:232 msgid "Manufacturer" msgstr "" -#: company/models.py:336 templates/js/translated/part.js:230 +#: company/models.py:336 templates/js/translated/part.js:233 msgid "Select manufacturer" msgstr "" -#: company/models.py:342 company/templates/company/manufacturer_part.html:97 -#: company/templates/company/supplier_part.html:112 +#: company/models.py:342 company/templates/company/manufacturer_part.html:96 +#: company/templates/company/supplier_part.html:105 #: templates/js/translated/company.js:530 -#: templates/js/translated/company.js:815 templates/js/translated/order.js:874 -#: templates/js/translated/part.js:240 +#: templates/js/translated/company.js:815 templates/js/translated/order.js:873 +#: templates/js/translated/part.js:243 templates/js/translated/part.js:832 msgid "MPN" msgstr "" -#: company/models.py:343 templates/js/translated/part.js:241 +#: company/models.py:343 templates/js/translated/part.js:244 msgid "Manufacturer Part Number" msgstr "" @@ -2335,7 +2339,7 @@ msgstr "" #: company/models.py:409 company/models.py:558 #: company/templates/company/manufacturer_part.html:6 #: company/templates/company/manufacturer_part.html:23 -#: stock/templates/stock/item_base.html:363 +#: stock/templates/stock/item_base.html:391 msgid "Manufacturer Part" msgstr "" @@ -2345,8 +2349,8 @@ msgstr "" #: company/models.py:422 #: report/templates/report/inventree_test_report_base.html:95 -#: stock/models.py:1867 templates/js/translated/company.js:644 -#: templates/js/translated/part.js:645 templates/js/translated/stock.js:878 +#: stock/models.py:1857 templates/js/translated/company.js:644 +#: templates/js/translated/part.js:652 templates/js/translated/stock.js:960 msgid "Value" msgstr "" @@ -2355,9 +2359,9 @@ msgid "Parameter value" msgstr "" #: company/models.py:429 part/models.py:882 part/models.py:2397 -#: part/templates/part/detail.html:59 +#: part/templates/part/part_base.html:288 #: templates/InvenTree/settings/settings.html:264 -#: templates/js/translated/company.js:650 templates/js/translated/part.js:651 +#: templates/js/translated/company.js:650 templates/js/translated/part.js:658 msgid "Units" msgstr "" @@ -2369,28 +2373,28 @@ msgstr "" msgid "Linked manufacturer part must reference the same base part" msgstr "" -#: company/models.py:545 company/templates/company/company_base.html:121 -#: company/templates/company/supplier_part.html:94 order/models.py:263 -#: order/templates/order/order_base.html:108 +#: company/models.py:545 company/templates/company/company_base.html:78 +#: company/templates/company/supplier_part.html:87 order/models.py:263 +#: order/templates/order/order_base.html:112 #: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:219 -#: part/bom.py:247 stock/templates/stock/item_base.html:370 +#: part/bom.py:247 stock/templates/stock/item_base.html:398 #: templates/js/translated/company.js:337 -#: templates/js/translated/company.js:771 templates/js/translated/order.js:660 -#: templates/js/translated/part.js:210 +#: templates/js/translated/company.js:771 templates/js/translated/order.js:667 +#: templates/js/translated/part.js:213 templates/js/translated/part.js:800 msgid "Supplier" msgstr "" -#: company/models.py:546 templates/js/translated/part.js:211 +#: company/models.py:546 templates/js/translated/part.js:214 msgid "Select supplier" msgstr "" -#: company/models.py:551 company/templates/company/supplier_part.html:98 -#: part/bom.py:220 part/bom.py:248 templates/js/translated/order.js:861 -#: templates/js/translated/part.js:221 +#: company/models.py:551 company/templates/company/supplier_part.html:91 +#: part/bom.py:220 part/bom.py:248 templates/js/translated/order.js:860 +#: templates/js/translated/part.js:224 templates/js/translated/part.js:818 msgid "SKU" msgstr "" -#: company/models.py:552 templates/js/translated/part.js:222 +#: company/models.py:552 templates/js/translated/part.js:225 msgid "Supplier stock keeping unit" msgstr "" @@ -2406,7 +2410,7 @@ msgstr "" msgid "Supplier part description" msgstr "" -#: company/models.py:576 company/templates/company/supplier_part.html:126 +#: company/models.py:576 company/templates/company/supplier_part.html:119 #: part/models.py:2588 report/templates/report/inventree_po_report.html:93 #: report/templates/report/inventree_so_report.html:93 msgid "Note" @@ -2420,9 +2424,9 @@ msgstr "" msgid "Minimum charge (e.g. stocking fee)" msgstr "" -#: company/models.py:582 company/templates/company/supplier_part.html:119 -#: stock/models.py:507 stock/templates/stock/item_base.html:311 -#: templates/js/translated/company.js:847 templates/js/translated/stock.js:1366 +#: company/models.py:582 company/templates/company/supplier_part.html:112 +#: stock/models.py:497 stock/templates/stock/item_base.html:339 +#: templates/js/translated/company.js:847 templates/js/translated/stock.js:1448 msgid "Packaging" msgstr "" @@ -2457,43 +2461,56 @@ msgstr "" msgid "Create Purchase Order" msgstr "" -#: company/templates/company/company_base.html:27 +#: company/templates/company/company_base.html:26 +msgid "Company actions" +msgstr "" + +#: company/templates/company/company_base.html:31 msgid "Edit company information" msgstr "" #: company/templates/company/company_base.html:32 -#: company/templates/company/company_base.html:148 +#: templates/js/translated/company.js:265 +msgid "Edit Company" +msgstr "" + +#: company/templates/company/company_base.html:36 +msgid "Delete company" +msgstr "" + +#: company/templates/company/company_base.html:37 +#: company/templates/company/company_base.html:159 msgid "Delete Company" msgstr "" -#: company/templates/company/company_base.html:48 +#: company/templates/company/company_base.html:53 #: part/templates/part/part_thumb.html:12 msgid "Upload new image" msgstr "" -#: company/templates/company/company_base.html:51 +#: company/templates/company/company_base.html:56 #: part/templates/part/part_thumb.html:14 msgid "Download image from URL" msgstr "" -#: company/templates/company/company_base.html:81 -msgid "Uses default currency" -msgstr "" - -#: company/templates/company/company_base.html:95 -msgid "Phone" -msgstr "" - -#: company/templates/company/company_base.html:126 order/models.py:567 -#: order/templates/order/sales_order_base.html:114 stock/models.py:525 -#: stock/models.py:526 stock/templates/stock/item_base.html:263 -#: templates/js/translated/company.js:329 templates/js/translated/order.js:1073 -#: templates/js/translated/stock.js:2002 +#: company/templates/company/company_base.html:83 order/models.py:567 +#: order/templates/order/sales_order_base.html:115 stock/models.py:515 +#: stock/models.py:516 stock/templates/stock/item_base.html:291 +#: templates/js/translated/company.js:329 templates/js/translated/order.js:1072 +#: templates/js/translated/stock.js:2084 msgid "Customer" msgstr "" -#: company/templates/company/company_base.html:194 -#: part/templates/part/part_base.html:342 +#: company/templates/company/company_base.html:108 +msgid "Uses default currency" +msgstr "" + +#: company/templates/company/company_base.html:122 +msgid "Phone" +msgstr "" + +#: company/templates/company/company_base.html:205 +#: part/templates/part/part_base.html:471 msgid "Upload Image" msgstr "" @@ -2509,23 +2526,23 @@ msgid "Create new supplier part" msgstr "" #: company/templates/company/detail.html:20 -#: company/templates/company/manufacturer_part.html:112 -#: part/templates/part/detail.html:440 +#: company/templates/company/manufacturer_part.html:118 +#: part/templates/part/detail.html:333 msgid "New Supplier Part" msgstr "" #: company/templates/company/detail.html:32 #: company/templates/company/detail.html:79 -#: company/templates/company/manufacturer_part.html:121 -#: company/templates/company/manufacturer_part.html:150 -#: part/templates/part/category.html:160 part/templates/part/detail.html:449 -#: part/templates/part/detail.html:477 +#: company/templates/company/manufacturer_part.html:127 +#: company/templates/company/manufacturer_part.html:156 +#: part/templates/part/category.html:167 part/templates/part/detail.html:342 +#: part/templates/part/detail.html:370 msgid "Options" msgstr "" #: company/templates/company/detail.html:37 #: company/templates/company/detail.html:84 -#: part/templates/part/category.html:166 +#: part/templates/part/category.html:173 msgid "Order parts" msgstr "" @@ -2547,7 +2564,7 @@ msgstr "" msgid "Create new manufacturer part" msgstr "" -#: company/templates/company/detail.html:67 part/templates/part/detail.html:467 +#: company/templates/company/detail.html:67 part/templates/part/detail.html:360 msgid "New Manufacturer Part" msgstr "" @@ -2561,7 +2578,7 @@ msgstr "" #: order/templates/order/order_base.html:13 #: order/templates/order/purchase_orders.html:8 #: order/templates/order/purchase_orders.html:12 -#: part/templates/part/detail.html:171 part/templates/part/part_sidebar.html:35 +#: part/templates/part/detail.html:64 part/templates/part/part_sidebar.html:33 #: templates/InvenTree/index.html:252 templates/InvenTree/search.html:203 #: templates/InvenTree/settings/sidebar.html:44 templates/navbar.html:45 #: users/models.py:45 @@ -2583,7 +2600,7 @@ msgstr "" #: order/templates/order/sales_order_base.html:13 #: order/templates/order/sales_orders.html:8 #: order/templates/order/sales_orders.html:15 -#: part/templates/part/detail.html:194 part/templates/part/part_sidebar.html:39 +#: part/templates/part/detail.html:87 part/templates/part/part_sidebar.html:37 #: templates/InvenTree/index.html:283 templates/InvenTree/search.html:223 #: templates/InvenTree/settings/sidebar.html:46 templates/navbar.html:56 #: users/models.py:46 @@ -2610,14 +2627,14 @@ msgid "Company Notes" msgstr "" #: company/templates/company/detail.html:383 -#: company/templates/company/manufacturer_part.html:209 -#: part/templates/part/detail.html:520 +#: company/templates/company/manufacturer_part.html:215 +#: part/templates/part/detail.html:413 msgid "Delete Supplier Parts?" msgstr "" #: company/templates/company/detail.html:384 -#: company/templates/company/manufacturer_part.html:210 -#: part/templates/part/detail.html:521 +#: company/templates/company/manufacturer_part.html:216 +#: part/templates/part/detail.html:414 msgid "All selected supplier parts will be deleted" msgstr "" @@ -2634,7 +2651,7 @@ msgstr "" #: company/templates/company/manufacturer_part.html:35 #: company/templates/company/supplier_part.html:34 #: company/templates/company/supplier_part.html:159 -#: part/templates/part/detail.html:174 part/templates/part/part_base.html:76 +#: part/templates/part/detail.html:67 part/templates/part/part_base.html:76 msgid "Order part" msgstr "" @@ -2648,60 +2665,60 @@ msgstr "" msgid "Delete manufacturer part" msgstr "" -#: company/templates/company/manufacturer_part.html:70 -#: company/templates/company/supplier_part.html:71 +#: company/templates/company/manufacturer_part.html:66 +#: company/templates/company/supplier_part.html:63 msgid "Internal Part" msgstr "" -#: company/templates/company/manufacturer_part.html:108 +#: company/templates/company/manufacturer_part.html:114 #: company/templates/company/supplier_part.html:15 company/views.py:49 -#: part/templates/part/part_sidebar.html:33 part/templates/part/prices.html:163 +#: part/templates/part/part_sidebar.html:31 part/templates/part/prices.html:163 #: templates/InvenTree/search.html:194 templates/navbar.html:43 msgid "Suppliers" msgstr "" -#: company/templates/company/manufacturer_part.html:123 -#: part/templates/part/detail.html:451 +#: company/templates/company/manufacturer_part.html:129 +#: part/templates/part/detail.html:344 msgid "Delete supplier parts" msgstr "" -#: company/templates/company/manufacturer_part.html:123 -#: company/templates/company/manufacturer_part.html:152 -#: company/templates/company/manufacturer_part.html:248 -#: part/templates/part/detail.html:451 part/templates/part/detail.html:479 +#: company/templates/company/manufacturer_part.html:129 +#: company/templates/company/manufacturer_part.html:158 +#: company/templates/company/manufacturer_part.html:254 +#: part/templates/part/detail.html:344 part/templates/part/detail.html:372 #: templates/js/translated/company.js:425 templates/js/translated/helpers.js:31 #: users/models.py:204 msgid "Delete" msgstr "" -#: company/templates/company/manufacturer_part.html:137 +#: company/templates/company/manufacturer_part.html:143 #: company/templates/company/manufacturer_part_sidebar.html:5 #: part/templates/part/category_sidebar.html:17 -#: part/templates/part/detail.html:277 part/templates/part/part_sidebar.html:10 +#: part/templates/part/detail.html:170 part/templates/part/part_sidebar.html:8 msgid "Parameters" msgstr "" -#: company/templates/company/manufacturer_part.html:141 -#: part/templates/part/detail.html:282 +#: company/templates/company/manufacturer_part.html:147 +#: part/templates/part/detail.html:175 #: templates/InvenTree/settings/category.html:12 #: templates/InvenTree/settings/part.html:65 msgid "New Parameter" msgstr "" -#: company/templates/company/manufacturer_part.html:152 +#: company/templates/company/manufacturer_part.html:158 msgid "Delete parameters" msgstr "" -#: company/templates/company/manufacturer_part.html:185 -#: part/templates/part/detail.html:976 +#: company/templates/company/manufacturer_part.html:191 +#: part/templates/part/detail.html:867 msgid "Add Parameter" msgstr "" -#: company/templates/company/manufacturer_part.html:233 +#: company/templates/company/manufacturer_part.html:239 msgid "Selected parameters will be deleted" msgstr "" -#: company/templates/company/manufacturer_part.html:245 +#: company/templates/company/manufacturer_part.html:251 msgid "Delete Parameters" msgstr "" @@ -2722,9 +2739,9 @@ msgid "Assigned Stock Items" msgstr "" #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 stock/models.py:492 -#: stock/templates/stock/item_base.html:375 -#: templates/js/translated/company.js:787 templates/js/translated/stock.js:1323 +#: company/templates/company/supplier_part.html:24 stock/models.py:482 +#: stock/templates/stock/item_base.html:403 +#: templates/js/translated/company.js:787 templates/js/translated/stock.js:1405 msgid "Supplier Part" msgstr "" @@ -2744,13 +2761,13 @@ msgid "Supplier Part Stock" msgstr "" #: company/templates/company/supplier_part.html:141 -#: part/templates/part/detail.html:127 stock/templates/stock/location.html:147 +#: part/templates/part/detail.html:20 stock/templates/stock/location.html:162 msgid "Create new stock item" msgstr "" #: company/templates/company/supplier_part.html:142 -#: part/templates/part/detail.html:128 stock/templates/stock/location.html:148 -#: templates/js/translated/stock.js:354 +#: part/templates/part/detail.html:21 stock/templates/stock/location.html:163 +#: templates/js/translated/stock.js:355 msgid "New Stock Item" msgstr "" @@ -2760,7 +2777,7 @@ msgid "Supplier Part Orders" msgstr "" #: company/templates/company/supplier_part.html:160 -#: part/templates/part/detail.html:175 +#: part/templates/part/detail.html:68 msgid "Order Part" msgstr "" @@ -2796,15 +2813,15 @@ msgid "Delete price break" msgstr "" #: company/templates/company/supplier_part_navbar.html:15 -#: part/templates/part/part_sidebar.html:16 +#: part/templates/part/part_sidebar.html:14 #: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:14 #: stock/templates/stock/stock_app_base.html:10 #: templates/InvenTree/search.html:156 #: templates/InvenTree/settings/sidebar.html:40 -#: templates/js/translated/bom.js:216 templates/js/translated/part.js:427 -#: templates/js/translated/part.js:562 templates/js/translated/part.js:878 -#: templates/js/translated/part.js:1039 templates/js/translated/stock.js:509 -#: templates/js/translated/stock.js:1162 templates/navbar.html:26 +#: templates/js/translated/bom.js:216 templates/js/translated/part.js:434 +#: templates/js/translated/part.js:569 templates/js/translated/part.js:1059 +#: templates/js/translated/part.js:1220 templates/js/translated/stock.js:591 +#: templates/js/translated/stock.js:1244 templates/navbar.html:26 msgid "Stock" msgstr "" @@ -2818,16 +2835,16 @@ msgid "Supplier Part Pricing" msgstr "" #: company/templates/company/supplier_part_navbar.html:29 -#: part/templates/part/part_sidebar.html:30 +#: part/templates/part/part_sidebar.html:28 msgid "Pricing" msgstr "" #: company/templates/company/supplier_part_sidebar.html:5 -#: stock/templates/stock/location.html:118 -#: stock/templates/stock/location.html:132 -#: stock/templates/stock/location.html:144 +#: stock/templates/stock/location.html:133 +#: stock/templates/stock/location.html:147 +#: stock/templates/stock/location.html:159 #: stock/templates/stock/location_sidebar.html:7 -#: templates/InvenTree/search.html:158 templates/js/translated/stock.js:1901 +#: templates/InvenTree/search.html:158 templates/js/translated/stock.js:1983 #: templates/stats.html:93 templates/stats.html:102 users/models.py:43 msgid "Stock Items" msgstr "" @@ -2947,7 +2964,7 @@ msgstr "" msgid "Place order" msgstr "" -#: order/forms.py:37 order/templates/order/order_base.html:59 +#: order/forms.py:37 order/templates/order/order_base.html:60 msgid "Mark order as complete" msgstr "" @@ -3000,8 +3017,8 @@ msgstr "" msgid "Company from which the items are being ordered" msgstr "" -#: order/models.py:267 order/templates/order/order_base.html:114 -#: templates/js/translated/order.js:669 +#: order/models.py:267 order/templates/order/order_base.html:118 +#: templates/js/translated/order.js:676 msgid "Supplier Reference" msgstr "" @@ -3061,7 +3078,7 @@ msgstr "" msgid "Target date for order completion. Order will be overdue after this date." msgstr "" -#: order/models.py:582 templates/js/translated/order.js:1114 +#: order/models.py:582 templates/js/translated/order.js:1113 msgid "Shipment Date" msgstr "" @@ -3086,16 +3103,16 @@ msgid "Line item notes" msgstr "" #: order/models.py:768 order/models.py:856 -#: templates/js/translated/order.js:1166 +#: templates/js/translated/order.js:1165 msgid "Order" msgstr "" #: order/models.py:769 order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_po_report.html:77 -#: stock/templates/stock/item_base.html:325 -#: templates/js/translated/order.js:638 templates/js/translated/stock.js:1300 -#: templates/js/translated/stock.js:1983 +#: stock/templates/stock/item_base.html:353 +#: templates/js/translated/order.js:638 templates/js/translated/part.js:775 +#: templates/js/translated/stock.js:1382 templates/js/translated/stock.js:2065 msgid "Purchase Order" msgstr "" @@ -3103,9 +3120,10 @@ msgstr "" msgid "Supplier part" msgstr "" -#: order/models.py:797 order/templates/order/order_base.html:147 -#: order/templates/order/sales_order_base.html:154 -#: templates/js/translated/order.js:429 templates/js/translated/order.js:954 +#: order/models.py:797 order/templates/order/order_base.html:151 +#: order/templates/order/sales_order_base.html:155 +#: templates/js/translated/order.js:429 templates/js/translated/order.js:953 +#: templates/js/translated/part.js:847 templates/js/translated/part.js:873 msgid "Received" msgstr "" @@ -3113,9 +3131,9 @@ msgstr "" msgid "Number of items received" msgstr "" -#: order/models.py:805 part/templates/part/prices.html:176 stock/models.py:619 -#: stock/serializers.py:163 stock/templates/stock/item_base.html:332 -#: templates/js/translated/stock.js:1354 +#: order/models.py:805 part/templates/part/prices.html:176 stock/models.py:609 +#: stock/serializers.py:168 stock/templates/stock/item_base.html:360 +#: templates/js/translated/stock.js:1436 msgid "Purchase Price" msgstr "" @@ -3176,47 +3194,47 @@ msgstr "" msgid "Enter stock allocation quantity" msgstr "" -#: order/serializers.py:169 +#: order/serializers.py:175 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:204 +#: order/serializers.py:213 msgid "Line Item" msgstr "" -#: order/serializers.py:210 +#: order/serializers.py:219 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:220 order/serializers.py:288 +#: order/serializers.py:229 order/serializers.py:297 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:244 +#: order/serializers.py:253 msgid "Barcode Hash" msgstr "" -#: order/serializers.py:245 +#: order/serializers.py:254 msgid "Unique identifier field" msgstr "" -#: order/serializers.py:262 +#: order/serializers.py:271 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:300 +#: order/serializers.py:309 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:317 +#: order/serializers.py:326 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:328 +#: order/serializers.py:337 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:569 +#: order/serializers.py:578 msgid "Sale price currency" msgstr "" @@ -3248,22 +3266,36 @@ msgstr "" msgid "Receive items" msgstr "" -#: order/templates/order/order_base.html:93 -#: order/templates/order/sales_order_base.html:98 +#: order/templates/order/order_base.html:58 +#: order/templates/order/purchase_order_detail.html:31 +msgid "Receive Items" +msgstr "" + +#: order/templates/order/order_base.html:62 order/views.py:185 +msgid "Complete Order" +msgstr "" + +#: order/templates/order/order_base.html:84 +#: order/templates/order/sales_order_base.html:79 msgid "Order Reference" msgstr "" -#: order/templates/order/order_base.html:98 -#: order/templates/order/sales_order_base.html:103 +#: order/templates/order/order_base.html:89 +#: order/templates/order/sales_order_base.html:84 +msgid "Order Description" +msgstr "" + +#: order/templates/order/order_base.html:94 +#: order/templates/order/sales_order_base.html:89 msgid "Order Status" msgstr "" -#: order/templates/order/order_base.html:133 +#: order/templates/order/order_base.html:137 #: report/templates/report/inventree_build_order_base.html:122 msgid "Issued" msgstr "" -#: order/templates/order/order_base.html:203 +#: order/templates/order/order_base.html:207 msgid "Edit Purchase Order" msgstr "" @@ -3421,7 +3453,7 @@ msgid "Select existing purchase orders, or create new orders." msgstr "" #: order/templates/order/order_wizard/select_pos.html:31 -#: templates/js/translated/order.js:695 templates/js/translated/order.js:1119 +#: templates/js/translated/order.js:694 templates/js/translated/order.js:1118 msgid "Items" msgstr "" @@ -3465,10 +3497,6 @@ msgstr "" msgid "Receive selected items" msgstr "" -#: order/templates/order/purchase_order_detail.html:31 -msgid "Receive Items" -msgstr "" - #: order/templates/order/purchase_order_detail.html:50 msgid "Received Items" msgstr "" @@ -3496,16 +3524,16 @@ msgstr "" msgid "Ship Order" msgstr "" -#: order/templates/order/sales_order_base.html:86 +#: order/templates/order/sales_order_base.html:102 msgid "This Sales Order has not been fully allocated" msgstr "" -#: order/templates/order/sales_order_base.html:121 -#: templates/js/translated/order.js:1086 +#: order/templates/order/sales_order_base.html:122 +#: templates/js/translated/order.js:1085 msgid "Customer Reference" msgstr "" -#: order/templates/order/sales_order_base.html:194 +#: order/templates/order/sales_order_base.html:195 msgid "Edit Sales Order" msgstr "" @@ -3576,10 +3604,6 @@ msgstr "" msgid "Purchase order issued" msgstr "" -#: order/views.py:185 -msgid "Complete Order" -msgstr "" - #: order/views.py:201 msgid "Confirm order completion" msgstr "" @@ -3672,11 +3696,11 @@ msgid "This field is required" msgstr "" #: part/bom.py:125 part/models.py:81 part/models.py:816 -#: part/templates/part/category.html:90 part/templates/part/detail.html:104 +#: part/templates/part/category.html:104 part/templates/part/part_base.html:338 msgid "Default Location" msgstr "" -#: part/bom.py:126 part/templates/part/part_base.html:167 +#: part/bom.py:126 part/templates/part/part_base.html:185 msgid "Available Stock" msgstr "" @@ -3793,19 +3817,19 @@ msgstr "" msgid "Part Category" msgstr "" -#: part/models.py:96 part/templates/part/category.html:117 +#: part/models.py:96 part/templates/part/category.html:124 #: templates/InvenTree/search.html:101 templates/stats.html:84 #: users/models.py:40 msgid "Part Categories" msgstr "" #: part/models.py:358 part/templates/part/cat_link.html:3 -#: part/templates/part/category.html:13 part/templates/part/category.html:122 -#: part/templates/part/category.html:142 +#: part/templates/part/category.html:13 part/templates/part/category.html:129 +#: part/templates/part/category.html:149 #: part/templates/part/category_sidebar.html:9 #: templates/InvenTree/index.html:85 templates/InvenTree/search.html:88 #: templates/InvenTree/settings/sidebar.html:36 -#: templates/js/translated/part.js:1416 templates/navbar.html:19 +#: templates/js/translated/part.js:1597 templates/navbar.html:19 #: templates/stats.html:80 templates/stats.html:89 users/models.py:41 msgid "Parts" msgstr "" @@ -3859,8 +3883,8 @@ msgstr "" msgid "Part description" msgstr "" -#: part/models.py:770 part/templates/part/category.html:97 -#: part/templates/part/detail.html:73 +#: part/models.py:770 part/templates/part/category.html:82 +#: part/templates/part/part_base.html:302 msgid "Keywords" msgstr "" @@ -3869,9 +3893,10 @@ msgid "Part keywords to improve visibility in search results" msgstr "" #: part/models.py:778 part/models.py:2223 part/models.py:2472 -#: part/templates/part/detail.html:36 part/templates/part/set_category.html:15 +#: part/templates/part/part_base.html:265 +#: part/templates/part/set_category.html:15 #: templates/InvenTree/settings/settings.html:163 -#: templates/js/translated/part.js:1021 +#: templates/js/translated/part.js:1202 msgid "Category" msgstr "" @@ -3879,9 +3904,9 @@ msgstr "" msgid "Part category" msgstr "" -#: part/models.py:784 part/templates/part/detail.html:45 -#: templates/js/translated/part.js:550 templates/js/translated/part.js:974 -#: templates/js/translated/stock.js:1134 +#: part/models.py:784 part/templates/part/part_base.html:274 +#: templates/js/translated/part.js:557 templates/js/translated/part.js:1155 +#: templates/js/translated/stock.js:1216 msgid "IPN" msgstr "" @@ -3893,8 +3918,8 @@ msgstr "" msgid "Part revision or version number" msgstr "" -#: part/models.py:792 part/templates/part/detail.html:52 report/models.py:200 -#: templates/js/translated/part.js:554 +#: part/models.py:792 part/templates/part/part_base.html:281 +#: report/models.py:200 templates/js/translated/part.js:561 msgid "Revision" msgstr "" @@ -3902,7 +3927,7 @@ msgstr "" msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:861 part/templates/part/detail.html:113 +#: part/models.py:861 part/templates/part/part_base.html:347 msgid "Default Supplier" msgstr "" @@ -3918,7 +3943,7 @@ msgstr "" msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:875 part/templates/part/part_base.html:178 +#: part/models.py:875 part/templates/part/part_base.html:196 msgid "Minimum Stock" msgstr "" @@ -4001,8 +4026,8 @@ msgstr "" msgid "Test with this name already exists for this part" msgstr "" -#: part/models.py:2310 templates/js/translated/part.js:1467 -#: templates/js/translated/stock.js:858 +#: part/models.py:2310 templates/js/translated/part.js:1648 +#: templates/js/translated/stock.js:940 msgid "Test Name" msgstr "" @@ -4018,7 +4043,7 @@ msgstr "" msgid "Enter description for this test" msgstr "" -#: part/models.py:2322 templates/js/translated/part.js:1476 +#: part/models.py:2322 templates/js/translated/part.js:1657 #: templates/js/translated/table_filters.js:276 msgid "Required" msgstr "" @@ -4027,7 +4052,7 @@ msgstr "" msgid "Is this test required to pass?" msgstr "" -#: part/models.py:2328 templates/js/translated/part.js:1484 +#: part/models.py:2328 templates/js/translated/part.js:1665 msgid "Requires Value" msgstr "" @@ -4035,7 +4060,7 @@ msgstr "" msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:2334 templates/js/translated/part.js:1491 +#: part/models.py:2334 templates/js/translated/part.js:1672 msgid "Requires Attachment" msgstr "" @@ -4150,7 +4175,7 @@ msgstr "" msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:2686 stock/models.py:371 +#: part/models.py:2686 stock/models.py:361 msgid "Quantity must be integer value for trackable parts" msgstr "" @@ -4213,7 +4238,7 @@ msgstr "" msgid "The BOM for %(part)s has not been validated." msgstr "" -#: part/templates/part/bom.html:30 part/templates/part/detail.html:357 +#: part/templates/part/bom.html:30 part/templates/part/detail.html:250 msgid "BOM actions" msgstr "" @@ -4298,68 +4323,64 @@ msgstr "" msgid "New Category" msgstr "" -#: part/templates/part/category.html:67 -msgid "Top level part category" -msgstr "" - -#: part/templates/part/category.html:79 +#: part/templates/part/category.html:76 part/templates/part/category.html:89 msgid "Category Path" msgstr "" -#: part/templates/part/category.html:84 -msgid "Category Description" +#: part/templates/part/category.html:90 +msgid "Top level part category" msgstr "" -#: part/templates/part/category.html:103 part/templates/part/category.html:194 +#: part/templates/part/category.html:110 part/templates/part/category.html:201 #: part/templates/part/category_sidebar.html:7 msgid "Subcategories" msgstr "" -#: part/templates/part/category.html:108 +#: part/templates/part/category.html:115 msgid "Parts (Including subcategories)" msgstr "" -#: part/templates/part/category.html:145 +#: part/templates/part/category.html:152 msgid "Export Part Data" msgstr "" -#: part/templates/part/category.html:146 part/templates/part/category.html:170 +#: part/templates/part/category.html:153 part/templates/part/category.html:177 msgid "Export" msgstr "" -#: part/templates/part/category.html:149 +#: part/templates/part/category.html:156 msgid "Create new part" msgstr "" -#: part/templates/part/category.html:150 templates/js/translated/bom.js:40 +#: part/templates/part/category.html:157 templates/js/translated/bom.js:40 msgid "New Part" msgstr "" -#: part/templates/part/category.html:164 +#: part/templates/part/category.html:171 msgid "Set category" msgstr "" -#: part/templates/part/category.html:164 +#: part/templates/part/category.html:171 msgid "Set Category" msgstr "" -#: part/templates/part/category.html:168 +#: part/templates/part/category.html:175 msgid "Print Labels" msgstr "" -#: part/templates/part/category.html:170 +#: part/templates/part/category.html:177 msgid "Export Data" msgstr "" -#: part/templates/part/category.html:184 +#: part/templates/part/category.html:191 msgid "Part Parameters" msgstr "" -#: part/templates/part/category.html:261 +#: part/templates/part/category.html:268 msgid "Create Part Category" msgstr "" -#: part/templates/part/category.html:288 +#: part/templates/part/category.html:295 msgid "Create Part" msgstr "" @@ -4402,7 +4423,7 @@ msgstr "" msgid "Import Parts" msgstr "" -#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:366 +#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:373 msgid "Duplicate Part" msgstr "" @@ -4426,167 +4447,155 @@ msgstr "" msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)" msgstr "" -#: part/templates/part/detail.html:16 -msgid "Part Details" -msgstr "" - -#: part/templates/part/detail.html:66 -msgid "Minimum stock level" -msgstr "" - -#: part/templates/part/detail.html:97 -msgid "Latest Serial Number" -msgstr "" - -#: part/templates/part/detail.html:124 +#: part/templates/part/detail.html:17 msgid "Part Stock" msgstr "" -#: part/templates/part/detail.html:136 +#: part/templates/part/detail.html:29 #, python-format msgid "Showing stock for all variants of %(full_name)s" msgstr "" -#: part/templates/part/detail.html:146 +#: part/templates/part/detail.html:39 msgid "Part Test Templates" msgstr "" -#: part/templates/part/detail.html:151 +#: part/templates/part/detail.html:44 msgid "Add Test Template" msgstr "" -#: part/templates/part/detail.html:208 +#: part/templates/part/detail.html:101 msgid "Sales Order Allocations" msgstr "" -#: part/templates/part/detail.html:249 +#: part/templates/part/detail.html:142 msgid "Part Variants" msgstr "" -#: part/templates/part/detail.html:253 +#: part/templates/part/detail.html:146 msgid "Create new variant" msgstr "" -#: part/templates/part/detail.html:254 +#: part/templates/part/detail.html:147 msgid "New Variant" msgstr "" -#: part/templates/part/detail.html:281 +#: part/templates/part/detail.html:174 msgid "Add new parameter" msgstr "" -#: part/templates/part/detail.html:315 part/templates/part/part_sidebar.html:47 +#: part/templates/part/detail.html:208 part/templates/part/part_sidebar.html:45 msgid "Related Parts" msgstr "" -#: part/templates/part/detail.html:319 part/templates/part/detail.html:320 +#: part/templates/part/detail.html:212 part/templates/part/detail.html:213 msgid "Add Related" msgstr "" -#: part/templates/part/detail.html:340 part/templates/part/part_sidebar.html:19 +#: part/templates/part/detail.html:233 part/templates/part/part_sidebar.html:17 msgid "Bill of Materials" msgstr "" -#: part/templates/part/detail.html:345 +#: part/templates/part/detail.html:238 msgid "Export actions" msgstr "" -#: part/templates/part/detail.html:349 +#: part/templates/part/detail.html:242 msgid "Export BOM" msgstr "" -#: part/templates/part/detail.html:351 +#: part/templates/part/detail.html:244 msgid "Print BOM Report" msgstr "" -#: part/templates/part/detail.html:361 +#: part/templates/part/detail.html:254 msgid "Upload BOM" msgstr "" -#: part/templates/part/detail.html:363 templates/js/translated/part.js:267 +#: part/templates/part/detail.html:256 templates/js/translated/part.js:270 msgid "Copy BOM" msgstr "" -#: part/templates/part/detail.html:365 part/views.py:755 +#: part/templates/part/detail.html:258 part/views.py:755 msgid "Validate BOM" msgstr "" -#: part/templates/part/detail.html:370 +#: part/templates/part/detail.html:263 msgid "New BOM Item" msgstr "" -#: part/templates/part/detail.html:371 +#: part/templates/part/detail.html:264 msgid "Add BOM Item" msgstr "" -#: part/templates/part/detail.html:384 +#: part/templates/part/detail.html:277 msgid "Assemblies" msgstr "" -#: part/templates/part/detail.html:401 +#: part/templates/part/detail.html:294 msgid "Part Builds" msgstr "" -#: part/templates/part/detail.html:426 +#: part/templates/part/detail.html:319 msgid "Build Order Allocations" msgstr "" -#: part/templates/part/detail.html:436 +#: part/templates/part/detail.html:329 msgid "Part Suppliers" msgstr "" -#: part/templates/part/detail.html:463 +#: part/templates/part/detail.html:356 msgid "Part Manufacturers" msgstr "" -#: part/templates/part/detail.html:479 +#: part/templates/part/detail.html:372 msgid "Delete manufacturer parts" msgstr "" -#: part/templates/part/detail.html:660 +#: part/templates/part/detail.html:553 msgid "Delete selected BOM items?" msgstr "" -#: part/templates/part/detail.html:661 +#: part/templates/part/detail.html:554 msgid "All selected BOM items will be deleted" msgstr "" -#: part/templates/part/detail.html:712 +#: part/templates/part/detail.html:605 msgid "Create BOM Item" msgstr "" -#: part/templates/part/detail.html:764 +#: part/templates/part/detail.html:657 msgid "Related Part" msgstr "" -#: part/templates/part/detail.html:772 +#: part/templates/part/detail.html:665 msgid "Add Related Part" msgstr "" -#: part/templates/part/detail.html:869 +#: part/templates/part/detail.html:760 msgid "Add Test Result Template" msgstr "" -#: part/templates/part/detail.html:926 +#: part/templates/part/detail.html:817 msgid "Edit Part Notes" msgstr "" -#: part/templates/part/detail.html:1039 +#: part/templates/part/detail.html:930 #, python-format msgid "Purchase Unit Price - %(currency)s" msgstr "" -#: part/templates/part/detail.html:1051 +#: part/templates/part/detail.html:942 #, python-format msgid "Unit Price-Cost Difference - %(currency)s" msgstr "" -#: part/templates/part/detail.html:1063 +#: part/templates/part/detail.html:954 #, python-format msgid "Supplier Unit Cost - %(currency)s" msgstr "" -#: part/templates/part/detail.html:1152 +#: part/templates/part/detail.html:1043 #, python-format msgid "Unit Price - %(currency)s" msgstr "" @@ -4668,86 +4677,108 @@ msgstr "" msgid "Delete part" msgstr "" -#: part/templates/part/part_base.html:109 +#: part/templates/part/part_base.html:112 msgid "Part is a template part (variants can be made from this part)" msgstr "" -#: part/templates/part/part_base.html:113 +#: part/templates/part/part_base.html:116 msgid "Part can be assembled from other parts" msgstr "" -#: part/templates/part/part_base.html:117 +#: part/templates/part/part_base.html:120 msgid "Part can be used in assemblies" msgstr "" -#: part/templates/part/part_base.html:121 +#: part/templates/part/part_base.html:124 msgid "Part stock is tracked by serial number" msgstr "" -#: part/templates/part/part_base.html:125 +#: part/templates/part/part_base.html:128 msgid "Part can be purchased from external suppliers" msgstr "" -#: part/templates/part/part_base.html:129 +#: part/templates/part/part_base.html:132 msgid "Part can be sold to customers" msgstr "" -#: part/templates/part/part_base.html:135 -#: part/templates/part/part_base.html:143 +#: part/templates/part/part_base.html:138 +#: part/templates/part/part_base.html:146 msgid "Part is virtual (not a physical part)" msgstr "" -#: part/templates/part/part_base.html:136 +#: part/templates/part/part_base.html:139 #: templates/js/translated/company.js:505 #: templates/js/translated/company.js:762 #: templates/js/translated/model_renderers.js:175 -#: templates/js/translated/part.js:465 templates/js/translated/part.js:542 +#: templates/js/translated/part.js:472 templates/js/translated/part.js:549 msgid "Inactive" msgstr "" -#: part/templates/part/part_base.html:155 +#: part/templates/part/part_base.html:156 +#: part/templates/part/part_base.html:579 +msgid "Show Part Details" +msgstr "" + +#: part/templates/part/part_base.html:173 #, python-format msgid "This part is a variant of %(link)s" msgstr "" -#: part/templates/part/part_base.html:172 templates/js/translated/order.js:1546 +#: part/templates/part/part_base.html:190 templates/js/translated/order.js:1545 #: templates/js/translated/table_filters.js:188 msgid "In Stock" msgstr "" -#: part/templates/part/part_base.html:185 templates/js/translated/part.js:1054 +#: part/templates/part/part_base.html:203 templates/js/translated/part.js:1235 msgid "On Order" msgstr "" -#: part/templates/part/part_base.html:192 templates/InvenTree/index.html:178 +#: part/templates/part/part_base.html:210 templates/InvenTree/index.html:178 msgid "Required for Build Orders" msgstr "" -#: part/templates/part/part_base.html:199 +#: part/templates/part/part_base.html:217 msgid "Required for Sales Orders" msgstr "" -#: part/templates/part/part_base.html:206 +#: part/templates/part/part_base.html:224 msgid "Allocated to Orders" msgstr "" -#: part/templates/part/part_base.html:221 templates/js/translated/bom.js:566 +#: part/templates/part/part_base.html:239 templates/js/translated/bom.js:566 msgid "Can Build" msgstr "" -#: part/templates/part/part_base.html:227 templates/js/translated/part.js:885 -#: templates/js/translated/part.js:1058 +#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1066 +#: templates/js/translated/part.js:1239 msgid "Building" msgstr "" -#: part/templates/part/part_base.html:320 part/templates/part/prices.html:144 +#: part/templates/part/part_base.html:295 +msgid "Minimum stock level" +msgstr "" + +#: part/templates/part/part_base.html:324 +msgid "Latest Serial Number" +msgstr "" + +#: part/templates/part/part_base.html:328 +#: stock/templates/stock/item_base.html:159 +msgid "Search for serial number" +msgstr "" + +#: part/templates/part/part_base.html:449 part/templates/part/prices.html:144 msgid "Calculate" msgstr "" -#: part/templates/part/part_base.html:363 +#: part/templates/part/part_base.html:492 msgid "No matching images found" msgstr "" +#: part/templates/part/part_base.html:573 +msgid "Hide Part Details" +msgstr "" + #: part/templates/part/part_pricing.html:22 part/templates/part/prices.html:21 msgid "Supplier Pricing" msgstr "" @@ -4805,20 +4836,15 @@ msgstr "" msgid "No pricing information is available for this part." msgstr "" -#: part/templates/part/part_sidebar.html:8 -#: templates/js/translated/stock.js:1949 -msgid "Details" -msgstr "" - -#: part/templates/part/part_sidebar.html:13 +#: part/templates/part/part_sidebar.html:11 msgid "Variants" msgstr "" -#: part/templates/part/part_sidebar.html:27 +#: part/templates/part/part_sidebar.html:25 msgid "Used In" msgstr "" -#: part/templates/part/part_sidebar.html:43 +#: part/templates/part/part_sidebar.html:41 msgid "Test Templates" msgstr "" @@ -4934,8 +4960,8 @@ msgid "Set category for the following parts" msgstr "" #: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:476 -#: templates/js/translated/part.js:429 templates/js/translated/part.js:875 -#: templates/js/translated/part.js:1062 +#: templates/js/translated/part.js:436 templates/js/translated/part.js:1056 +#: templates/js/translated/part.js:1243 msgid "No Stock" msgstr "" @@ -5037,7 +5063,7 @@ msgstr "" msgid "Delete Part Parameter Template" msgstr "" -#: part/views.py:1489 templates/js/translated/part.js:310 +#: part/views.py:1489 templates/js/translated/part.js:313 msgid "Edit Part Category" msgstr "" @@ -5171,11 +5197,12 @@ msgid "Stock Item Test Report" msgstr "" #: report/templates/report/inventree_test_report_base.html:79 -#: stock/models.py:530 stock/templates/stock/item_base.html:238 +#: stock/models.py:520 stock/templates/stock/item_base.html:149 #: templates/js/translated/build.js:233 templates/js/translated/build.js:637 #: templates/js/translated/build.js:1013 #: templates/js/translated/model_renderers.js:95 -#: templates/js/translated/order.js:1288 templates/js/translated/order.js:1377 +#: templates/js/translated/order.js:1287 templates/js/translated/order.js:1376 +#: templates/js/translated/stock.js:410 msgid "Serial Number" msgstr "" @@ -5184,17 +5211,17 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:93 -#: stock/models.py:1855 +#: stock/models.py:1845 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:94 -#: stock/models.py:1861 +#: stock/models.py:1851 msgid "Result" msgstr "" #: report/templates/report/inventree_test_report_base.html:97 -#: templates/js/translated/order.js:685 templates/js/translated/stock.js:1917 +#: templates/js/translated/order.js:684 templates/js/translated/stock.js:1999 msgid "Date" msgstr "" @@ -5212,7 +5239,7 @@ msgid "Installed Items" msgstr "" #: report/templates/report/inventree_test_report_base.html:137 -#: templates/js/translated/stock.js:2177 +#: templates/js/translated/stock.js:2259 msgid "Serial" msgstr "" @@ -5220,9 +5247,9 @@ msgstr "" msgid "Quantity is required" msgstr "" -#: stock/forms.py:91 stock/forms.py:265 stock/models.py:587 -#: stock/templates/stock/item_base.html:382 -#: templates/js/translated/stock.js:1276 +#: stock/forms.py:91 stock/forms.py:265 stock/models.py:577 +#: stock/templates/stock/item_base.html:186 +#: templates/js/translated/stock.js:1358 msgid "Expiry Date" msgstr "" @@ -5270,241 +5297,241 @@ msgstr "" msgid "Confirm removal of installed stock items" msgstr "" -#: stock/models.py:60 stock/models.py:624 -#: stock/templates/stock/item_base.html:422 +#: stock/models.py:60 stock/models.py:614 +#: stock/templates/stock/item_base.html:417 msgid "Owner" msgstr "" -#: stock/models.py:61 stock/models.py:625 +#: stock/models.py:61 stock/models.py:615 msgid "Select Owner" msgstr "" -#: stock/models.py:352 +#: stock/models.py:342 msgid "StockItem with this serial number already exists" msgstr "" -#: stock/models.py:388 +#: stock/models.py:378 #, python-brace-format msgid "Part type ('{pf}') must be {pe}" msgstr "" -#: stock/models.py:398 stock/models.py:407 +#: stock/models.py:388 stock/models.py:397 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:399 +#: stock/models.py:389 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:421 +#: stock/models.py:411 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:427 +#: stock/models.py:417 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:434 +#: stock/models.py:424 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:476 +#: stock/models.py:466 msgid "Parent Stock Item" msgstr "" -#: stock/models.py:485 +#: stock/models.py:475 msgid "Base part" msgstr "" -#: stock/models.py:493 +#: stock/models.py:483 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:498 stock/templates/stock/location.html:12 +#: stock/models.py:488 stock/templates/stock/location.html:12 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" msgstr "" -#: stock/models.py:501 +#: stock/models.py:491 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:508 +#: stock/models.py:498 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:513 stock/templates/stock/item_base.html:271 +#: stock/models.py:503 stock/templates/stock/item_base.html:299 msgid "Installed In" msgstr "" -#: stock/models.py:516 +#: stock/models.py:506 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:532 +#: stock/models.py:522 msgid "Serial number for this item" msgstr "" -#: stock/models.py:546 +#: stock/models.py:536 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:550 +#: stock/models.py:540 msgid "Stock Quantity" msgstr "" -#: stock/models.py:559 +#: stock/models.py:549 msgid "Source Build" msgstr "" -#: stock/models.py:561 +#: stock/models.py:551 msgid "Build for this stock item" msgstr "" -#: stock/models.py:572 +#: stock/models.py:562 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:575 +#: stock/models.py:565 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:581 +#: stock/models.py:571 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:588 +#: stock/models.py:578 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:601 +#: stock/models.py:591 msgid "Delete on deplete" msgstr "" -#: stock/models.py:601 +#: stock/models.py:591 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:611 stock/templates/stock/item.html:111 +#: stock/models.py:601 stock/templates/stock/item.html:111 msgid "Stock Item Notes" msgstr "" -#: stock/models.py:620 +#: stock/models.py:610 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:630 +#: stock/models.py:620 msgid "Scheduled for deletion" msgstr "" -#: stock/models.py:631 +#: stock/models.py:621 msgid "This StockItem will be deleted by the background worker" msgstr "" -#: stock/models.py:1094 +#: stock/models.py:1084 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1100 +#: stock/models.py:1090 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1106 +#: stock/models.py:1096 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({n})" msgstr "" -#: stock/models.py:1109 +#: stock/models.py:1099 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1112 +#: stock/models.py:1102 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1119 +#: stock/models.py:1109 #, python-brace-format msgid "Serial numbers already exist: {exists}" msgstr "" -#: stock/models.py:1277 +#: stock/models.py:1267 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:1775 +#: stock/models.py:1765 msgid "Entry notes" msgstr "" -#: stock/models.py:1832 +#: stock/models.py:1822 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:1838 +#: stock/models.py:1828 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:1856 +#: stock/models.py:1846 msgid "Test name" msgstr "" -#: stock/models.py:1862 templates/js/translated/table_filters.js:266 +#: stock/models.py:1852 templates/js/translated/table_filters.js:266 msgid "Test result" msgstr "" -#: stock/models.py:1868 +#: stock/models.py:1858 msgid "Test output value" msgstr "" -#: stock/models.py:1875 +#: stock/models.py:1865 msgid "Test result attachment" msgstr "" -#: stock/models.py:1881 +#: stock/models.py:1871 msgid "Test notes" msgstr "" -#: stock/serializers.py:166 +#: stock/serializers.py:171 msgid "Purchase price of this stock item" msgstr "" -#: stock/serializers.py:173 +#: stock/serializers.py:178 msgid "Purchase currency of this stock item" msgstr "" -#: stock/serializers.py:287 +#: stock/serializers.py:292 msgid "Enter number of stock items to serialize" msgstr "" -#: stock/serializers.py:302 +#: stock/serializers.py:307 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "" -#: stock/serializers.py:308 +#: stock/serializers.py:313 msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:319 stock/serializers.py:686 +#: stock/serializers.py:324 stock/serializers.py:691 msgid "Destination stock location" msgstr "" -#: stock/serializers.py:326 +#: stock/serializers.py:331 msgid "Optional note field" msgstr "" -#: stock/serializers.py:339 +#: stock/serializers.py:344 msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:556 +#: stock/serializers.py:561 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:584 +#: stock/serializers.py:589 msgid "Stock transaction notes" msgstr "" -#: stock/serializers.py:594 +#: stock/serializers.py:599 msgid "A list of stock items must be provided" msgstr "" @@ -5629,125 +5656,131 @@ msgstr "" msgid "Install" msgstr "" -#: stock/templates/stock/item_base.html:106 +#: stock/templates/stock/item_base.html:108 msgid "Convert to variant" msgstr "" -#: stock/templates/stock/item_base.html:109 +#: stock/templates/stock/item_base.html:111 msgid "Duplicate stock item" msgstr "" -#: stock/templates/stock/item_base.html:111 +#: stock/templates/stock/item_base.html:113 msgid "Edit stock item" msgstr "" -#: stock/templates/stock/item_base.html:114 +#: stock/templates/stock/item_base.html:116 msgid "Delete stock item" msgstr "" -#: stock/templates/stock/item_base.html:136 -#: stock/templates/stock/item_base.html:386 -#: templates/js/translated/table_filters.js:247 -msgid "Expired" +#: stock/templates/stock/item_base.html:154 +msgid "previous page" msgstr "" -#: stock/templates/stock/item_base.html:146 -#: stock/templates/stock/item_base.html:388 -#: templates/js/translated/table_filters.js:253 -msgid "Stale" +#: stock/templates/stock/item_base.html:154 +msgid "Navigate to previous serial number" msgstr "" -#: stock/templates/stock/item_base.html:161 -msgid "You are not in the list of owners of this item. This stock item cannot be edited." +#: stock/templates/stock/item_base.html:163 +msgid "next page" msgstr "" -#: stock/templates/stock/item_base.html:168 -msgid "This stock item is in production and cannot be edited." -msgstr "" - -#: stock/templates/stock/item_base.html:169 -msgid "Edit the stock item from the build view." -msgstr "" - -#: stock/templates/stock/item_base.html:182 -msgid "This stock item has not passed all required tests" +#: stock/templates/stock/item_base.html:163 +msgid "Navigate to next serial number" msgstr "" #: stock/templates/stock/item_base.html:190 #, python-format -msgid "This stock item is allocated to Sales Order %(link)s (Quantity: %(qty)s)" -msgstr "" - -#: stock/templates/stock/item_base.html:198 -#, python-format -msgid "This stock item is allocated to Build %(link)s (Quantity: %(qty)s)" -msgstr "" - -#: stock/templates/stock/item_base.html:204 -msgid "This stock item is serialized - it has a unique serial number and the quantity cannot be adjusted." -msgstr "" - -#: stock/templates/stock/item_base.html:208 -msgid "This stock item cannot be deleted as it has child items" -msgstr "" - -#: stock/templates/stock/item_base.html:212 -msgid "This stock item will be automatically deleted when all stock is depleted." -msgstr "" - -#: stock/templates/stock/item_base.html:241 -msgid "previous page" -msgstr "" - -#: stock/templates/stock/item_base.html:247 -msgid "next page" -msgstr "" - -#: stock/templates/stock/item_base.html:290 -#: templates/js/translated/build.js:1035 -msgid "No location set" -msgstr "" - -#: stock/templates/stock/item_base.html:297 -msgid "Barcode Identifier" -msgstr "" - -#: stock/templates/stock/item_base.html:339 -msgid "Parent Item" -msgstr "" - -#: stock/templates/stock/item_base.html:357 -msgid "No manufacturer set" -msgstr "" - -#: stock/templates/stock/item_base.html:386 -#, python-format msgid "This StockItem expired on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:388 +#: stock/templates/stock/item_base.html:190 +#: templates/js/translated/table_filters.js:247 +msgid "Expired" +msgstr "" + +#: stock/templates/stock/item_base.html:192 #, python-format msgid "This StockItem expires on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:395 -#: templates/js/translated/stock.js:1289 +#: stock/templates/stock/item_base.html:192 +#: templates/js/translated/table_filters.js:253 +msgid "Stale" +msgstr "" + +#: stock/templates/stock/item_base.html:199 +#: templates/js/translated/stock.js:1371 msgid "Last Updated" msgstr "" -#: stock/templates/stock/item_base.html:400 +#: stock/templates/stock/item_base.html:204 msgid "Last Stocktake" msgstr "" -#: stock/templates/stock/item_base.html:404 +#: stock/templates/stock/item_base.html:208 msgid "No stocktake performed" msgstr "" -#: stock/templates/stock/item_base.html:415 +#: stock/templates/stock/item_base.html:226 +msgid "You are not in the list of owners of this item. This stock item cannot be edited." +msgstr "" + +#: stock/templates/stock/item_base.html:233 +msgid "This stock item is in production and cannot be edited." +msgstr "" + +#: stock/templates/stock/item_base.html:234 +msgid "Edit the stock item from the build view." +msgstr "" + +#: stock/templates/stock/item_base.html:247 +msgid "This stock item has not passed all required tests" +msgstr "" + +#: stock/templates/stock/item_base.html:255 +#, python-format +msgid "This stock item is allocated to Sales Order %(link)s (Quantity: %(qty)s)" +msgstr "" + +#: stock/templates/stock/item_base.html:263 +#, python-format +msgid "This stock item is allocated to Build %(link)s (Quantity: %(qty)s)" +msgstr "" + +#: stock/templates/stock/item_base.html:269 +msgid "This stock item is serialized - it has a unique serial number and the quantity cannot be adjusted." +msgstr "" + +#: stock/templates/stock/item_base.html:273 +msgid "This stock item cannot be deleted as it has child items" +msgstr "" + +#: stock/templates/stock/item_base.html:277 +msgid "This stock item will be automatically deleted when all stock is depleted." +msgstr "" + +#: stock/templates/stock/item_base.html:318 +#: templates/js/translated/build.js:1035 +msgid "No location set" +msgstr "" + +#: stock/templates/stock/item_base.html:325 +msgid "Barcode Identifier" +msgstr "" + +#: stock/templates/stock/item_base.html:367 +msgid "Parent Item" +msgstr "" + +#: stock/templates/stock/item_base.html:385 +msgid "No manufacturer set" +msgstr "" + +#: stock/templates/stock/item_base.html:410 msgid "Tests" msgstr "" -#: stock/templates/stock/item_base.html:505 +#: stock/templates/stock/item_base.html:500 msgid "Edit Stock Status" msgstr "" @@ -5825,30 +5858,35 @@ msgstr "" msgid "New Location" msgstr "" -#: stock/templates/stock/location.html:86 +#: stock/templates/stock/location.html:95 +#: stock/templates/stock/location.html:101 +msgid "Location Path" +msgstr "" + +#: stock/templates/stock/location.html:102 msgid "Top level stock location" msgstr "" -#: stock/templates/stock/location.html:95 +#: stock/templates/stock/location.html:115 msgid "You are not in the list of owners of this location. This stock location cannot be edited." msgstr "" -#: stock/templates/stock/location.html:113 -#: stock/templates/stock/location.html:160 +#: stock/templates/stock/location.html:128 +#: stock/templates/stock/location.html:175 #: stock/templates/stock/location_sidebar.html:5 msgid "Sublocations" msgstr "" -#: stock/templates/stock/location.html:127 templates/InvenTree/search.html:170 +#: stock/templates/stock/location.html:142 templates/InvenTree/search.html:170 #: templates/stats.html:97 users/models.py:42 msgid "Stock Locations" msgstr "" -#: stock/templates/stock/location.html:167 templates/stock_table.html:30 +#: stock/templates/stock/location.html:182 templates/stock_table.html:30 msgid "Printing Actions" msgstr "" -#: stock/templates/stock/location.html:171 templates/stock_table.html:34 +#: stock/templates/stock/location.html:186 templates/stock_table.html:34 msgid "Print labels" msgstr "" @@ -5942,7 +5980,7 @@ msgstr "" msgid "Uninstall Stock Items" msgstr "" -#: stock/views.py:760 templates/js/translated/stock.js:648 +#: stock/views.py:760 templates/js/translated/stock.js:730 msgid "Confirm stock adjustment" msgstr "" @@ -5950,7 +5988,7 @@ msgstr "" msgid "Uninstalled stock items" msgstr "" -#: stock/views.py:793 templates/js/translated/stock.js:318 +#: stock/views.py:793 templates/js/translated/stock.js:319 msgid "Edit Stock Item" msgstr "" @@ -5962,7 +6000,7 @@ msgstr "" msgid "Create new Stock Item" msgstr "" -#: stock/views.py:1186 templates/js/translated/stock.js:298 +#: stock/views.py:1186 templates/js/translated/stock.js:299 msgid "Duplicate Stock Item" msgstr "" @@ -6868,7 +6906,7 @@ msgstr "" msgid "Unlink" msgstr "" -#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:600 +#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:682 msgid "Remove stock item" msgstr "" @@ -6963,7 +7001,7 @@ msgid "View BOM" msgstr "" #: templates/js/translated/bom.js:608 templates/js/translated/build.js:1183 -#: templates/js/translated/order.js:1320 +#: templates/js/translated/order.js:1319 msgid "Actions" msgstr "" @@ -7055,7 +7093,7 @@ msgstr "" msgid "No build order allocations found" msgstr "" -#: templates/js/translated/build.js:424 templates/js/translated/order.js:1194 +#: templates/js/translated/build.js:424 templates/js/translated/order.js:1193 msgid "Location not specified" msgstr "" @@ -7064,12 +7102,12 @@ msgid "No active build outputs found" msgstr "" #: templates/js/translated/build.js:1052 templates/js/translated/build.js:1760 -#: templates/js/translated/order.js:1327 +#: templates/js/translated/order.js:1326 msgid "Edit stock allocation" msgstr "" #: templates/js/translated/build.js:1054 templates/js/translated/build.js:1761 -#: templates/js/translated/order.js:1328 +#: templates/js/translated/order.js:1327 msgid "Delete stock allocation" msgstr "" @@ -7090,11 +7128,11 @@ msgid "Quantity Per" msgstr "" #: templates/js/translated/build.js:1134 templates/js/translated/build.js:1360 -#: templates/js/translated/build.js:1756 templates/js/translated/order.js:1557 +#: templates/js/translated/build.js:1756 templates/js/translated/order.js:1556 msgid "Allocated" msgstr "" -#: templates/js/translated/build.js:1190 templates/js/translated/order.js:1611 +#: templates/js/translated/build.js:1190 templates/js/translated/order.js:1610 msgid "Build stock" msgstr "" @@ -7102,7 +7140,7 @@ msgstr "" msgid "Order stock" msgstr "" -#: templates/js/translated/build.js:1197 templates/js/translated/order.js:1604 +#: templates/js/translated/build.js:1197 templates/js/translated/order.js:1603 msgid "Allocate stock" msgstr "" @@ -7143,9 +7181,9 @@ msgstr "" msgid "No builds matching query" msgstr "" -#: templates/js/translated/build.js:1593 templates/js/translated/part.js:966 -#: templates/js/translated/part.js:1377 templates/js/translated/stock.js:1094 -#: templates/js/translated/stock.js:1871 +#: templates/js/translated/build.js:1593 templates/js/translated/part.js:1147 +#: templates/js/translated/part.js:1558 templates/js/translated/stock.js:1176 +#: templates/js/translated/stock.js:1953 msgid "Select" msgstr "" @@ -7153,7 +7191,7 @@ msgstr "" msgid "Build order is overdue" msgstr "" -#: templates/js/translated/build.js:1674 templates/js/translated/stock.js:2090 +#: templates/js/translated/build.js:1674 templates/js/translated/stock.js:2172 msgid "No user information" msgstr "" @@ -7197,10 +7235,6 @@ msgstr "" msgid "Delete Supplier Part" msgstr "" -#: templates/js/translated/company.js:265 -msgid "Edit Company" -msgstr "" - #: templates/js/translated/company.js:286 msgid "Add new Company" msgstr "" @@ -7230,34 +7264,34 @@ msgid "No manufacturer parts found" msgstr "" #: templates/js/translated/company.js:497 -#: templates/js/translated/company.js:754 templates/js/translated/part.js:449 -#: templates/js/translated/part.js:534 +#: templates/js/translated/company.js:754 templates/js/translated/part.js:456 +#: templates/js/translated/part.js:541 msgid "Template part" msgstr "" #: templates/js/translated/company.js:501 -#: templates/js/translated/company.js:758 templates/js/translated/part.js:453 -#: templates/js/translated/part.js:538 +#: templates/js/translated/company.js:758 templates/js/translated/part.js:460 +#: templates/js/translated/part.js:545 msgid "Assembled part" msgstr "" -#: templates/js/translated/company.js:628 templates/js/translated/part.js:626 +#: templates/js/translated/company.js:628 templates/js/translated/part.js:633 msgid "No parameters found" msgstr "" -#: templates/js/translated/company.js:665 templates/js/translated/part.js:668 +#: templates/js/translated/company.js:665 templates/js/translated/part.js:675 msgid "Edit parameter" msgstr "" -#: templates/js/translated/company.js:666 templates/js/translated/part.js:669 +#: templates/js/translated/company.js:666 templates/js/translated/part.js:676 msgid "Delete parameter" msgstr "" -#: templates/js/translated/company.js:685 templates/js/translated/part.js:686 +#: templates/js/translated/company.js:685 templates/js/translated/part.js:693 msgid "Edit Parameter" msgstr "" -#: templates/js/translated/company.js:696 templates/js/translated/part.js:698 +#: templates/js/translated/company.js:696 templates/js/translated/part.js:705 msgid "Delete Parameter" msgstr "" @@ -7346,7 +7380,7 @@ msgid "NO" msgstr "" #: templates/js/translated/label.js:29 templates/js/translated/report.js:118 -#: templates/js/translated/stock.js:624 +#: templates/js/translated/stock.js:706 msgid "Select Stock Items" msgstr "" @@ -7502,11 +7536,11 @@ msgstr "" msgid "Export Order" msgstr "" -#: templates/js/translated/order.js:211 templates/js/translated/stock.js:423 +#: templates/js/translated/order.js:211 templates/js/translated/stock.js:505 msgid "Format" msgstr "" -#: templates/js/translated/order.js:212 templates/js/translated/stock.js:424 +#: templates/js/translated/order.js:212 templates/js/translated/stock.js:506 msgid "Select file format" msgstr "" @@ -7522,7 +7556,7 @@ msgstr "" msgid "Quantity to receive" msgstr "" -#: templates/js/translated/order.js:360 templates/js/translated/stock.js:1673 +#: templates/js/translated/order.js:360 templates/js/translated/stock.js:1755 msgid "Stock Status" msgstr "" @@ -7546,321 +7580,321 @@ msgstr "" msgid "Receive Purchase Order Items" msgstr "" -#: templates/js/translated/order.js:627 +#: templates/js/translated/order.js:627 templates/js/translated/part.js:746 msgid "No purchase orders found" msgstr "" -#: templates/js/translated/order.js:652 templates/js/translated/order.js:1063 +#: templates/js/translated/order.js:659 templates/js/translated/order.js:1062 msgid "Order is overdue" msgstr "" -#: templates/js/translated/order.js:772 templates/js/translated/order.js:1646 +#: templates/js/translated/order.js:771 templates/js/translated/order.js:1645 msgid "Edit Line Item" msgstr "" -#: templates/js/translated/order.js:784 templates/js/translated/order.js:1657 +#: templates/js/translated/order.js:783 templates/js/translated/order.js:1656 msgid "Delete Line Item" msgstr "" -#: templates/js/translated/order.js:823 +#: templates/js/translated/order.js:822 msgid "No line items found" msgstr "" -#: templates/js/translated/order.js:850 templates/js/translated/order.js:1467 +#: templates/js/translated/order.js:849 templates/js/translated/order.js:1466 msgid "Total" msgstr "" -#: templates/js/translated/order.js:904 templates/js/translated/order.js:1492 -#: templates/js/translated/part.js:1594 templates/js/translated/part.js:1805 +#: templates/js/translated/order.js:903 templates/js/translated/order.js:1491 +#: templates/js/translated/part.js:1775 templates/js/translated/part.js:1986 msgid "Unit Price" msgstr "" -#: templates/js/translated/order.js:919 templates/js/translated/order.js:1508 +#: templates/js/translated/order.js:918 templates/js/translated/order.js:1507 msgid "Total Price" msgstr "" -#: templates/js/translated/order.js:997 templates/js/translated/order.js:1617 +#: templates/js/translated/order.js:996 templates/js/translated/order.js:1616 msgid "Edit line item" msgstr "" -#: templates/js/translated/order.js:998 +#: templates/js/translated/order.js:997 msgid "Delete line item" msgstr "" -#: templates/js/translated/order.js:1002 +#: templates/js/translated/order.js:1001 templates/js/translated/part.js:878 msgid "Receive line item" msgstr "" -#: templates/js/translated/order.js:1039 +#: templates/js/translated/order.js:1038 msgid "No sales orders found" msgstr "" -#: templates/js/translated/order.js:1077 +#: templates/js/translated/order.js:1076 msgid "Invalid Customer" msgstr "" -#: templates/js/translated/order.js:1155 +#: templates/js/translated/order.js:1154 msgid "No sales order allocations found" msgstr "" -#: templates/js/translated/order.js:1248 +#: templates/js/translated/order.js:1247 msgid "Edit Stock Allocation" msgstr "" -#: templates/js/translated/order.js:1265 +#: templates/js/translated/order.js:1264 msgid "Confirm Delete Operation" msgstr "" -#: templates/js/translated/order.js:1266 +#: templates/js/translated/order.js:1265 msgid "Delete Stock Allocation" msgstr "" -#: templates/js/translated/order.js:1308 +#: templates/js/translated/order.js:1307 msgid "Stock location not specified" msgstr "" -#: templates/js/translated/order.js:1557 +#: templates/js/translated/order.js:1556 msgid "Fulfilled" msgstr "" -#: templates/js/translated/order.js:1601 +#: templates/js/translated/order.js:1600 msgid "Allocate serial numbers" msgstr "" -#: templates/js/translated/order.js:1607 +#: templates/js/translated/order.js:1606 msgid "Purchase stock" msgstr "" -#: templates/js/translated/order.js:1614 templates/js/translated/order.js:1793 +#: templates/js/translated/order.js:1613 templates/js/translated/order.js:1792 msgid "Calculate price" msgstr "" -#: templates/js/translated/order.js:1618 +#: templates/js/translated/order.js:1617 msgid "Delete line item " msgstr "" -#: templates/js/translated/order.js:1741 +#: templates/js/translated/order.js:1740 msgid "Allocate Stock Item" msgstr "" -#: templates/js/translated/order.js:1801 +#: templates/js/translated/order.js:1800 msgid "Update Unit Price" msgstr "" -#: templates/js/translated/order.js:1815 +#: templates/js/translated/order.js:1814 msgid "No matching line items" msgstr "" -#: templates/js/translated/part.js:51 +#: templates/js/translated/part.js:52 msgid "Part Attributes" msgstr "" -#: templates/js/translated/part.js:55 +#: templates/js/translated/part.js:56 msgid "Part Creation Options" msgstr "" -#: templates/js/translated/part.js:59 +#: templates/js/translated/part.js:60 msgid "Part Duplication Options" msgstr "" -#: templates/js/translated/part.js:63 +#: templates/js/translated/part.js:64 msgid "Supplier Options" msgstr "" -#: templates/js/translated/part.js:77 +#: templates/js/translated/part.js:78 msgid "Add Part Category" msgstr "" -#: templates/js/translated/part.js:166 +#: templates/js/translated/part.js:162 msgid "Create Initial Stock" msgstr "" -#: templates/js/translated/part.js:167 +#: templates/js/translated/part.js:163 msgid "Create an initial stock item for this part" msgstr "" -#: templates/js/translated/part.js:174 +#: templates/js/translated/part.js:170 msgid "Initial Stock Quantity" msgstr "" -#: templates/js/translated/part.js:175 +#: templates/js/translated/part.js:171 msgid "Specify initial stock quantity for this part" msgstr "" -#: templates/js/translated/part.js:182 +#: templates/js/translated/part.js:178 msgid "Select destination stock location" msgstr "" -#: templates/js/translated/part.js:193 +#: templates/js/translated/part.js:196 msgid "Copy Category Parameters" msgstr "" -#: templates/js/translated/part.js:194 +#: templates/js/translated/part.js:197 msgid "Copy parameter templates from selected part category" msgstr "" -#: templates/js/translated/part.js:202 +#: templates/js/translated/part.js:205 msgid "Add Supplier Data" msgstr "" -#: templates/js/translated/part.js:203 +#: templates/js/translated/part.js:206 msgid "Create initial supplier data for this part" msgstr "" -#: templates/js/translated/part.js:259 +#: templates/js/translated/part.js:262 msgid "Copy Image" msgstr "" -#: templates/js/translated/part.js:260 +#: templates/js/translated/part.js:263 msgid "Copy image from original part" msgstr "" -#: templates/js/translated/part.js:268 +#: templates/js/translated/part.js:271 msgid "Copy bill of materials from original part" msgstr "" -#: templates/js/translated/part.js:275 +#: templates/js/translated/part.js:278 msgid "Copy Parameters" msgstr "" -#: templates/js/translated/part.js:276 +#: templates/js/translated/part.js:279 msgid "Copy parameter data from original part" msgstr "" -#: templates/js/translated/part.js:289 +#: templates/js/translated/part.js:292 msgid "Parent part category" msgstr "" -#: templates/js/translated/part.js:333 +#: templates/js/translated/part.js:336 msgid "Edit Part" msgstr "" -#: templates/js/translated/part.js:335 +#: templates/js/translated/part.js:338 msgid "Part edited" msgstr "" -#: templates/js/translated/part.js:403 +#: templates/js/translated/part.js:410 msgid "You are subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:405 +#: templates/js/translated/part.js:412 msgid "You have subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:410 +#: templates/js/translated/part.js:417 msgid "Subscribe to notifications for this item" msgstr "" -#: templates/js/translated/part.js:412 +#: templates/js/translated/part.js:419 msgid "You have unsubscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:441 templates/js/translated/part.js:526 +#: templates/js/translated/part.js:448 templates/js/translated/part.js:533 msgid "Trackable part" msgstr "" -#: templates/js/translated/part.js:445 templates/js/translated/part.js:530 +#: templates/js/translated/part.js:452 templates/js/translated/part.js:537 msgid "Virtual part" msgstr "" -#: templates/js/translated/part.js:457 +#: templates/js/translated/part.js:464 msgid "Subscribed part" msgstr "" -#: templates/js/translated/part.js:461 +#: templates/js/translated/part.js:468 msgid "Salable part" msgstr "" -#: templates/js/translated/part.js:576 +#: templates/js/translated/part.js:583 msgid "No variants found" msgstr "" -#: templates/js/translated/part.js:765 +#: templates/js/translated/part.js:946 msgid "Delete part relationship" msgstr "" -#: templates/js/translated/part.js:789 +#: templates/js/translated/part.js:970 msgid "Delete Part Relationship" msgstr "" -#: templates/js/translated/part.js:856 templates/js/translated/part.js:1116 +#: templates/js/translated/part.js:1037 templates/js/translated/part.js:1297 msgid "No parts found" msgstr "" -#: templates/js/translated/part.js:1026 +#: templates/js/translated/part.js:1207 msgid "No category" msgstr "" -#: templates/js/translated/part.js:1049 +#: templates/js/translated/part.js:1230 #: templates/js/translated/table_filters.js:381 msgid "Low stock" msgstr "" -#: templates/js/translated/part.js:1140 templates/js/translated/part.js:1312 -#: templates/js/translated/stock.js:1832 +#: templates/js/translated/part.js:1321 templates/js/translated/part.js:1493 +#: templates/js/translated/stock.js:1914 msgid "Display as list" msgstr "" -#: templates/js/translated/part.js:1156 +#: templates/js/translated/part.js:1337 msgid "Display as grid" msgstr "" -#: templates/js/translated/part.js:1331 templates/js/translated/stock.js:1851 +#: templates/js/translated/part.js:1512 templates/js/translated/stock.js:1933 msgid "Display as tree" msgstr "" -#: templates/js/translated/part.js:1395 +#: templates/js/translated/part.js:1576 msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:1409 templates/js/translated/stock.js:1895 +#: templates/js/translated/part.js:1590 templates/js/translated/stock.js:1977 msgid "Path" msgstr "" -#: templates/js/translated/part.js:1453 +#: templates/js/translated/part.js:1634 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:1504 templates/js/translated/stock.js:816 +#: templates/js/translated/part.js:1685 templates/js/translated/stock.js:898 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:1505 templates/js/translated/stock.js:817 +#: templates/js/translated/part.js:1686 templates/js/translated/stock.js:899 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:1511 +#: templates/js/translated/part.js:1692 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:1533 +#: templates/js/translated/part.js:1714 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:1547 +#: templates/js/translated/part.js:1728 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:1572 +#: templates/js/translated/part.js:1753 #, python-brace-format msgid "No ${human_name} information found" msgstr "" -#: templates/js/translated/part.js:1627 +#: templates/js/translated/part.js:1808 #, python-brace-format msgid "Edit ${human_name}" msgstr "" -#: templates/js/translated/part.js:1628 +#: templates/js/translated/part.js:1809 #, python-brace-format msgid "Delete ${human_name}" msgstr "" -#: templates/js/translated/part.js:1729 +#: templates/js/translated/part.js:1910 msgid "Single Price" msgstr "" -#: templates/js/translated/part.js:1748 +#: templates/js/translated/part.js:1929 msgid "Single Price Difference" msgstr "" @@ -7930,276 +7964,300 @@ msgstr "" msgid "Sales Order(s) must be selected before printing report" msgstr "" -#: templates/js/translated/stock.js:70 +#: templates/js/translated/stock.js:71 msgid "Serialize Stock Item" msgstr "" -#: templates/js/translated/stock.js:88 templates/js/translated/stock.js:167 +#: templates/js/translated/stock.js:89 templates/js/translated/stock.js:168 msgid "Next available serial number" msgstr "" -#: templates/js/translated/stock.js:90 templates/js/translated/stock.js:169 +#: templates/js/translated/stock.js:91 templates/js/translated/stock.js:170 msgid "Latest serial number" msgstr "" -#: templates/js/translated/stock.js:104 +#: templates/js/translated/stock.js:105 msgid "Parent stock location" msgstr "" -#: templates/js/translated/stock.js:140 +#: templates/js/translated/stock.js:141 msgid "New Stock Location" msgstr "" -#: templates/js/translated/stock.js:180 +#: templates/js/translated/stock.js:181 msgid "This part cannot be serialized" msgstr "" -#: templates/js/translated/stock.js:219 +#: templates/js/translated/stock.js:220 msgid "Enter initial quantity for this stock item" msgstr "" -#: templates/js/translated/stock.js:225 +#: templates/js/translated/stock.js:226 msgid "Enter serial numbers for new stock (or leave blank)" msgstr "" -#: templates/js/translated/stock.js:368 +#: templates/js/translated/stock.js:369 msgid "Created new stock item" msgstr "" -#: templates/js/translated/stock.js:381 +#: templates/js/translated/stock.js:382 msgid "Created multiple stock items" msgstr "" -#: templates/js/translated/stock.js:420 +#: templates/js/translated/stock.js:407 +msgid "Find Serial Number" +msgstr "" + +#: templates/js/translated/stock.js:411 templates/js/translated/stock.js:412 +msgid "Enter serial number" +msgstr "" + +#: templates/js/translated/stock.js:428 +msgid "Enter a serial number" +msgstr "" + +#: templates/js/translated/stock.js:448 +msgid "No matching serial number" +msgstr "" + +#: templates/js/translated/stock.js:457 +msgid "More than one matching result found" +msgstr "" + +#: templates/js/translated/stock.js:502 msgid "Export Stock" msgstr "" -#: templates/js/translated/stock.js:431 +#: templates/js/translated/stock.js:513 msgid "Include Sublocations" msgstr "" -#: templates/js/translated/stock.js:432 +#: templates/js/translated/stock.js:514 msgid "Include stock items in sublocations" msgstr "" -#: templates/js/translated/stock.js:474 +#: templates/js/translated/stock.js:556 msgid "Transfer Stock" msgstr "" -#: templates/js/translated/stock.js:475 +#: templates/js/translated/stock.js:557 msgid "Move" msgstr "" -#: templates/js/translated/stock.js:481 +#: templates/js/translated/stock.js:563 msgid "Count Stock" msgstr "" -#: templates/js/translated/stock.js:482 +#: templates/js/translated/stock.js:564 msgid "Count" msgstr "" -#: templates/js/translated/stock.js:486 +#: templates/js/translated/stock.js:568 msgid "Remove Stock" msgstr "" -#: templates/js/translated/stock.js:487 +#: templates/js/translated/stock.js:569 msgid "Take" msgstr "" -#: templates/js/translated/stock.js:491 +#: templates/js/translated/stock.js:573 msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:492 users/models.py:200 +#: templates/js/translated/stock.js:574 users/models.py:200 msgid "Add" msgstr "" -#: templates/js/translated/stock.js:496 templates/stock_table.html:56 +#: templates/js/translated/stock.js:578 templates/stock_table.html:56 msgid "Delete Stock" msgstr "" -#: templates/js/translated/stock.js:585 +#: templates/js/translated/stock.js:667 msgid "Quantity cannot be adjusted for serialized stock" msgstr "" -#: templates/js/translated/stock.js:585 +#: templates/js/translated/stock.js:667 msgid "Specify stock quantity" msgstr "" -#: templates/js/translated/stock.js:625 +#: templates/js/translated/stock.js:707 msgid "You must select at least one available stock item" msgstr "" -#: templates/js/translated/stock.js:783 +#: templates/js/translated/stock.js:865 msgid "PASS" msgstr "" -#: templates/js/translated/stock.js:785 +#: templates/js/translated/stock.js:867 msgid "FAIL" msgstr "" -#: templates/js/translated/stock.js:790 +#: templates/js/translated/stock.js:872 msgid "NO RESULT" msgstr "" -#: templates/js/translated/stock.js:812 +#: templates/js/translated/stock.js:894 msgid "Add test result" msgstr "" -#: templates/js/translated/stock.js:838 +#: templates/js/translated/stock.js:920 msgid "No test results found" msgstr "" -#: templates/js/translated/stock.js:895 +#: templates/js/translated/stock.js:977 msgid "Test Date" msgstr "" -#: templates/js/translated/stock.js:1002 +#: templates/js/translated/stock.js:1084 msgid "In production" msgstr "" -#: templates/js/translated/stock.js:1006 +#: templates/js/translated/stock.js:1088 msgid "Installed in Stock Item" msgstr "" -#: templates/js/translated/stock.js:1010 +#: templates/js/translated/stock.js:1092 msgid "Shipped to customer" msgstr "" -#: templates/js/translated/stock.js:1014 +#: templates/js/translated/stock.js:1096 msgid "Assigned to Sales Order" msgstr "" -#: templates/js/translated/stock.js:1020 +#: templates/js/translated/stock.js:1102 msgid "No stock location set" msgstr "" -#: templates/js/translated/stock.js:1178 +#: templates/js/translated/stock.js:1260 msgid "Stock item is in production" msgstr "" -#: templates/js/translated/stock.js:1183 +#: templates/js/translated/stock.js:1265 msgid "Stock item assigned to sales order" msgstr "" -#: templates/js/translated/stock.js:1186 +#: templates/js/translated/stock.js:1268 msgid "Stock item assigned to customer" msgstr "" -#: templates/js/translated/stock.js:1190 +#: templates/js/translated/stock.js:1272 msgid "Stock item has expired" msgstr "" -#: templates/js/translated/stock.js:1192 +#: templates/js/translated/stock.js:1274 msgid "Stock item will expire soon" msgstr "" -#: templates/js/translated/stock.js:1196 +#: templates/js/translated/stock.js:1278 msgid "Stock item has been allocated" msgstr "" -#: templates/js/translated/stock.js:1200 +#: templates/js/translated/stock.js:1282 msgid "Stock item has been installed in another item" msgstr "" -#: templates/js/translated/stock.js:1207 +#: templates/js/translated/stock.js:1289 msgid "Stock item has been rejected" msgstr "" -#: templates/js/translated/stock.js:1209 +#: templates/js/translated/stock.js:1291 msgid "Stock item is lost" msgstr "" -#: templates/js/translated/stock.js:1211 +#: templates/js/translated/stock.js:1293 msgid "Stock item is destroyed" msgstr "" -#: templates/js/translated/stock.js:1215 +#: templates/js/translated/stock.js:1297 #: templates/js/translated/table_filters.js:183 msgid "Depleted" msgstr "" -#: templates/js/translated/stock.js:1265 +#: templates/js/translated/stock.js:1347 msgid "Stocktake" msgstr "" -#: templates/js/translated/stock.js:1338 +#: templates/js/translated/stock.js:1420 msgid "Supplier part not specified" msgstr "" -#: templates/js/translated/stock.js:1376 +#: templates/js/translated/stock.js:1458 msgid "No stock items matching query" msgstr "" -#: templates/js/translated/stock.js:1397 templates/js/translated/stock.js:1445 +#: templates/js/translated/stock.js:1479 templates/js/translated/stock.js:1527 msgid "items" msgstr "" -#: templates/js/translated/stock.js:1485 +#: templates/js/translated/stock.js:1567 msgid "batches" msgstr "" -#: templates/js/translated/stock.js:1512 +#: templates/js/translated/stock.js:1594 msgid "locations" msgstr "" -#: templates/js/translated/stock.js:1514 +#: templates/js/translated/stock.js:1596 msgid "Undefined location" msgstr "" -#: templates/js/translated/stock.js:1688 +#: templates/js/translated/stock.js:1770 msgid "Set Stock Status" msgstr "" -#: templates/js/translated/stock.js:1702 +#: templates/js/translated/stock.js:1784 msgid "Select Status Code" msgstr "" -#: templates/js/translated/stock.js:1703 +#: templates/js/translated/stock.js:1785 msgid "Status code must be selected" msgstr "" -#: templates/js/translated/stock.js:1927 +#: templates/js/translated/stock.js:2009 msgid "Invalid date" msgstr "" -#: templates/js/translated/stock.js:1974 +#: templates/js/translated/stock.js:2031 +msgid "Details" +msgstr "" + +#: templates/js/translated/stock.js:2056 msgid "Location no longer exists" msgstr "" -#: templates/js/translated/stock.js:1993 +#: templates/js/translated/stock.js:2075 msgid "Purchase order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2012 +#: templates/js/translated/stock.js:2094 msgid "Customer no longer exists" msgstr "" -#: templates/js/translated/stock.js:2030 +#: templates/js/translated/stock.js:2112 msgid "Stock item no longer exists" msgstr "" -#: templates/js/translated/stock.js:2053 +#: templates/js/translated/stock.js:2135 msgid "Added" msgstr "" -#: templates/js/translated/stock.js:2061 +#: templates/js/translated/stock.js:2143 msgid "Removed" msgstr "" -#: templates/js/translated/stock.js:2102 +#: templates/js/translated/stock.js:2184 msgid "Edit tracking entry" msgstr "" -#: templates/js/translated/stock.js:2103 +#: templates/js/translated/stock.js:2185 msgid "Delete tracking entry" msgstr "" -#: templates/js/translated/stock.js:2154 +#: templates/js/translated/stock.js:2236 msgid "No installed items" msgstr "" -#: templates/js/translated/stock.js:2205 +#: templates/js/translated/stock.js:2287 msgid "Uninstall Stock Item" msgstr "" diff --git a/InvenTree/locale/th/LC_MESSAGES/django.po b/InvenTree/locale/th/LC_MESSAGES/django.po index b9039d5982..826a1b4653 100644 --- a/InvenTree/locale/th/LC_MESSAGES/django.po +++ b/InvenTree/locale/th/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-11-30 21:49+0000\n" -"PO-Revision-Date: 2021-11-30 21:51\n" +"POT-Creation-Date: 2021-12-03 10:37+0000\n" +"PO-Revision-Date: 2021-12-03 11:25\n" "Last-Translator: \n" "Language-Team: Thai\n" "Language: th_TH\n" @@ -114,129 +114,130 @@ msgstr "" msgid "Number of unique serial number ({s}) must match quantity ({q})" msgstr "" -#: InvenTree/models.py:114 +#: InvenTree/models.py:120 msgid "Missing file" msgstr "" -#: InvenTree/models.py:115 +#: InvenTree/models.py:121 msgid "Missing external link" msgstr "" -#: InvenTree/models.py:126 stock/models.py:1874 +#: InvenTree/models.py:132 stock/models.py:1864 #: templates/js/translated/attachment.js:117 msgid "Attachment" msgstr "" -#: InvenTree/models.py:127 +#: InvenTree/models.py:133 msgid "Select file to attach" msgstr "" -#: InvenTree/models.py:133 company/models.py:131 company/models.py:348 +#: InvenTree/models.py:139 company/models.py:131 company/models.py:348 #: company/models.py:564 order/models.py:163 part/models.py:797 #: report/templates/report/inventree_build_order_base.html:165 #: templates/js/translated/company.js:537 -#: templates/js/translated/company.js:826 templates/js/translated/part.js:1077 +#: templates/js/translated/company.js:826 templates/js/translated/part.js:1258 msgid "Link" msgstr "" -#: InvenTree/models.py:134 build/models.py:330 part/models.py:798 -#: stock/models.py:540 +#: InvenTree/models.py:140 build/models.py:330 part/models.py:798 +#: stock/models.py:530 msgid "Link to external URL" msgstr "" -#: InvenTree/models.py:137 templates/js/translated/attachment.js:161 +#: InvenTree/models.py:143 templates/js/translated/attachment.js:161 msgid "Comment" msgstr "" -#: InvenTree/models.py:137 +#: InvenTree/models.py:143 msgid "File comment" msgstr "" -#: InvenTree/models.py:143 InvenTree/models.py:144 common/models.py:1185 +#: InvenTree/models.py:149 InvenTree/models.py:150 common/models.py:1185 #: common/models.py:1186 part/models.py:2205 part/models.py:2225 #: report/templates/report/inventree_test_report_base.html:96 -#: templates/js/translated/stock.js:2084 +#: templates/js/translated/stock.js:2166 msgid "User" msgstr "" -#: InvenTree/models.py:147 +#: InvenTree/models.py:153 msgid "upload date" msgstr "" -#: InvenTree/models.py:170 +#: InvenTree/models.py:176 msgid "Filename must not be empty" msgstr "" -#: InvenTree/models.py:193 +#: InvenTree/models.py:199 msgid "Invalid attachment directory" msgstr "" -#: InvenTree/models.py:203 +#: InvenTree/models.py:209 #, python-brace-format msgid "Filename contains illegal character '{c}'" msgstr "" -#: InvenTree/models.py:206 +#: InvenTree/models.py:212 msgid "Filename missing extension" msgstr "" -#: InvenTree/models.py:213 +#: InvenTree/models.py:219 msgid "Attachment with this filename already exists" msgstr "" -#: InvenTree/models.py:220 +#: InvenTree/models.py:226 msgid "Error renaming file" msgstr "" -#: InvenTree/models.py:255 +#: InvenTree/models.py:261 msgid "Invalid choice" msgstr "" -#: InvenTree/models.py:271 InvenTree/models.py:272 company/models.py:415 +#: InvenTree/models.py:277 InvenTree/models.py:278 company/models.py:415 #: label/models.py:112 part/models.py:741 part/models.py:2389 -#: part/templates/part/detail.html:25 report/models.py:181 -#: templates/InvenTree/settings/settings.html:259 -#: templates/js/translated/company.js:638 templates/js/translated/part.js:499 -#: templates/js/translated/part.js:636 templates/js/translated/part.js:1384 -#: templates/js/translated/stock.js:1877 +#: report/models.py:181 templates/InvenTree/settings/settings.html:259 +#: templates/js/translated/company.js:638 templates/js/translated/part.js:506 +#: templates/js/translated/part.js:643 templates/js/translated/part.js:1565 +#: templates/js/translated/stock.js:1959 msgid "Name" msgstr "" -#: InvenTree/models.py:278 build/models.py:207 +#: InvenTree/models.py:284 build/models.py:207 #: build/templates/build/detail.html:25 company/models.py:354 -#: company/models.py:570 company/templates/company/manufacturer_part.html:80 -#: company/templates/company/supplier_part.html:81 label/models.py:119 -#: order/models.py:161 part/models.py:764 part/templates/part/detail.html:30 +#: company/models.py:570 company/templates/company/company_base.html:68 +#: company/templates/company/manufacturer_part.html:76 +#: company/templates/company/supplier_part.html:73 label/models.py:119 +#: order/models.py:161 part/models.py:764 part/templates/part/category.html:70 +#: part/templates/part/part_base.html:163 #: part/templates/part/set_category.html:14 report/models.py:194 #: report/models.py:553 report/models.py:592 #: report/templates/report/inventree_build_order_base.html:118 -#: stock/templates/stock/location.html:108 templates/js/translated/bom.js:215 +#: stock/templates/stock/location.html:89 templates/js/translated/bom.js:215 #: templates/js/translated/bom.js:428 templates/js/translated/build.js:1621 #: templates/js/translated/company.js:345 #: templates/js/translated/company.js:548 -#: templates/js/translated/company.js:837 templates/js/translated/order.js:673 -#: templates/js/translated/order.js:855 templates/js/translated/order.js:1091 -#: templates/js/translated/part.js:558 templates/js/translated/part.js:752 -#: templates/js/translated/part.js:837 templates/js/translated/part.js:1007 -#: templates/js/translated/part.js:1403 templates/js/translated/part.js:1472 -#: templates/js/translated/stock.js:1151 templates/js/translated/stock.js:1889 -#: templates/js/translated/stock.js:1934 +#: templates/js/translated/company.js:837 templates/js/translated/order.js:680 +#: templates/js/translated/order.js:854 templates/js/translated/order.js:1090 +#: templates/js/translated/part.js:565 templates/js/translated/part.js:933 +#: templates/js/translated/part.js:1018 templates/js/translated/part.js:1188 +#: templates/js/translated/part.js:1584 templates/js/translated/part.js:1653 +#: templates/js/translated/stock.js:1233 templates/js/translated/stock.js:1971 +#: templates/js/translated/stock.js:2016 msgid "Description" msgstr "" -#: InvenTree/models.py:279 +#: InvenTree/models.py:285 msgid "Description (optional)" msgstr "" -#: InvenTree/models.py:287 +#: InvenTree/models.py:293 msgid "parent" msgstr "" -#: InvenTree/serializers.py:62 part/models.py:2674 +#: InvenTree/serializers.py:65 part/models.py:2674 msgid "Must be a valid number" msgstr "" -#: InvenTree/serializers.py:285 +#: InvenTree/serializers.py:299 msgid "Filename" msgstr "" @@ -361,7 +362,7 @@ msgid "Returned" msgstr "" #: InvenTree/status_codes.py:143 -#: order/templates/order/sales_order_base.html:147 +#: order/templates/order/sales_order_base.html:148 msgid "Shipped" msgstr "" @@ -566,7 +567,7 @@ msgid "Barcode associated with StockItem" msgstr "" #: build/forms.py:36 build/models.py:1283 -#: build/templates/build/build_base.html:124 +#: build/templates/build/build_base.html:132 #: build/templates/build/detail.html:35 common/models.py:1225 #: company/forms.py:42 company/templates/company/supplier_part.html:251 #: order/forms.py:102 order/models.py:729 order/models.py:991 @@ -574,26 +575,27 @@ msgstr "" #: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:223 #: part/forms.py:239 part/forms.py:255 part/models.py:2576 #: part/templates/part/bom_upload/match_parts.html:31 -#: part/templates/part/detail.html:1076 part/templates/part/detail.html:1162 +#: part/templates/part/detail.html:967 part/templates/part/detail.html:1053 #: part/templates/part/part_pricing.html:16 #: report/templates/report/inventree_build_order_base.html:114 #: report/templates/report/inventree_po_report.html:91 #: report/templates/report/inventree_so_report.html:91 #: report/templates/report/inventree_test_report_base.html:81 #: report/templates/report/inventree_test_report_base.html:139 -#: stock/forms.py:156 stock/serializers.py:286 -#: stock/templates/stock/item_base.html:256 +#: stock/forms.py:156 stock/serializers.py:291 +#: stock/templates/stock/item_base.html:174 #: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:443 #: templates/js/translated/build.js:235 templates/js/translated/build.js:435 #: templates/js/translated/build.js:629 templates/js/translated/build.js:639 #: templates/js/translated/build.js:1015 templates/js/translated/build.js:1362 #: templates/js/translated/model_renderers.js:99 -#: templates/js/translated/order.js:892 templates/js/translated/order.js:1205 -#: templates/js/translated/order.js:1283 templates/js/translated/order.js:1290 -#: templates/js/translated/order.js:1379 templates/js/translated/order.js:1479 -#: templates/js/translated/part.js:1615 templates/js/translated/part.js:1738 -#: templates/js/translated/part.js:1816 templates/js/translated/stock.js:377 -#: templates/js/translated/stock.js:2069 templates/js/translated/stock.js:2171 +#: templates/js/translated/order.js:891 templates/js/translated/order.js:1204 +#: templates/js/translated/order.js:1282 templates/js/translated/order.js:1289 +#: templates/js/translated/order.js:1378 templates/js/translated/order.js:1478 +#: templates/js/translated/part.js:843 templates/js/translated/part.js:1796 +#: templates/js/translated/part.js:1919 templates/js/translated/part.js:1997 +#: templates/js/translated/stock.js:378 templates/js/translated/stock.js:2151 +#: templates/js/translated/stock.js:2253 msgid "Quantity" msgstr "" @@ -602,8 +604,8 @@ msgid "Enter quantity for build output" msgstr "" #: build/forms.py:41 order/forms.py:96 stock/forms.py:95 -#: stock/serializers.py:307 templates/js/translated/stock.js:224 -#: templates/js/translated/stock.js:378 +#: stock/serializers.py:312 templates/js/translated/stock.js:225 +#: templates/js/translated/stock.js:379 msgid "Serial Numbers" msgstr "" @@ -646,7 +648,7 @@ msgstr "" #: build/templates/build/index.html:8 build/templates/build/index.html:12 #: order/templates/order/sales_order_detail.html:42 #: order/templates/order/so_sidebar.html:7 -#: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:221 +#: part/templates/part/part_sidebar.html:20 templates/InvenTree/index.html:221 #: templates/InvenTree/search.html:145 #: templates/InvenTree/settings/sidebar.html:42 users/models.py:44 msgid "Build Orders" @@ -662,7 +664,7 @@ msgstr "" #: report/templates/report/inventree_po_report.html:92 #: report/templates/report/inventree_so_report.html:92 #: templates/js/translated/bom.js:435 templates/js/translated/build.js:1119 -#: templates/js/translated/order.js:886 templates/js/translated/order.js:1473 +#: templates/js/translated/order.js:885 templates/js/translated/order.js:1472 msgid "Reference" msgstr "" @@ -670,7 +672,7 @@ msgstr "" msgid "Brief description of the build" msgstr "" -#: build/models.py:219 build/templates/build/build_base.html:156 +#: build/models.py:219 build/templates/build/build_base.html:164 #: build/templates/build/detail.html:88 msgid "Parent Build" msgstr "" @@ -679,7 +681,7 @@ msgstr "" msgid "BuildOrder to which this build is allocated" msgstr "" -#: build/models.py:225 build/templates/build/build_base.html:119 +#: build/models.py:225 build/templates/build/build_base.html:77 #: build/templates/build/detail.html:30 company/models.py:705 #: order/models.py:789 order/models.py:860 #: order/templates/order/order_wizard/select_parts.html:32 part/models.py:357 @@ -700,10 +702,10 @@ msgstr "" #: templates/js/translated/build.js:988 templates/js/translated/build.js:1359 #: templates/js/translated/build.js:1626 templates/js/translated/company.js:489 #: templates/js/translated/company.js:746 templates/js/translated/order.js:426 -#: templates/js/translated/order.js:840 templates/js/translated/order.js:1457 -#: templates/js/translated/part.js:737 templates/js/translated/part.js:818 -#: templates/js/translated/part.js:985 templates/js/translated/stock.js:508 -#: templates/js/translated/stock.js:1108 templates/js/translated/stock.js:2159 +#: templates/js/translated/order.js:839 templates/js/translated/order.js:1456 +#: templates/js/translated/part.js:918 templates/js/translated/part.js:999 +#: templates/js/translated/part.js:1166 templates/js/translated/stock.js:590 +#: templates/js/translated/stock.js:1190 templates/js/translated/stock.js:2241 msgid "Part" msgstr "" @@ -751,7 +753,7 @@ msgstr "" msgid "Number of stock items which have been completed" msgstr "" -#: build/models.py:277 part/templates/part/part_base.html:216 +#: build/models.py:277 part/templates/part/part_base.html:234 msgid "Build Status" msgstr "" @@ -759,7 +761,7 @@ msgstr "" msgid "Build status code" msgstr "" -#: build/models.py:285 stock/models.py:544 +#: build/models.py:285 stock/models.py:534 msgid "Batch Code" msgstr "" @@ -768,7 +770,7 @@ msgid "Batch code for this build output" msgstr "" #: build/models.py:292 order/models.py:165 part/models.py:936 -#: part/templates/part/detail.html:86 templates/js/translated/order.js:1104 +#: part/templates/part/part_base.html:313 templates/js/translated/order.js:1103 msgid "Creation Date" msgstr "" @@ -797,12 +799,12 @@ msgstr "" msgid "User who issued this build order" msgstr "" -#: build/models.py:323 build/templates/build/build_base.html:177 +#: build/models.py:323 build/templates/build/build_base.html:185 #: build/templates/build/detail.html:116 order/models.py:179 -#: order/templates/order/order_base.html:154 -#: order/templates/order/sales_order_base.html:161 part/models.py:940 +#: order/templates/order/order_base.html:158 +#: order/templates/order/sales_order_base.html:162 part/models.py:940 #: report/templates/report/inventree_build_order_base.html:159 -#: templates/js/translated/build.js:1680 templates/js/translated/order.js:700 +#: templates/js/translated/build.js:1680 templates/js/translated/order.js:699 msgid "Responsible" msgstr "" @@ -811,10 +813,10 @@ msgid "User responsible for this build order" msgstr "" #: build/models.py:329 build/templates/build/detail.html:102 -#: company/templates/company/manufacturer_part.html:87 -#: company/templates/company/supplier_part.html:88 -#: part/templates/part/detail.html:80 stock/models.py:538 -#: stock/templates/stock/item_base.html:346 +#: company/templates/company/manufacturer_part.html:102 +#: company/templates/company/supplier_part.html:126 +#: part/templates/part/part_base.html:354 stock/models.py:528 +#: stock/templates/stock/item_base.html:374 msgid "External Link" msgstr "" @@ -824,15 +826,15 @@ msgstr "" #: order/models.py:183 order/models.py:738 #: order/templates/order/po_sidebar.html:11 #: order/templates/order/so_sidebar.html:11 part/models.py:925 -#: part/templates/part/detail.html:223 part/templates/part/part_sidebar.html:52 +#: part/templates/part/detail.html:116 part/templates/part/part_sidebar.html:50 #: report/templates/report/inventree_build_order_base.html:173 -#: stock/forms.py:154 stock/forms.py:204 stock/forms.py:238 stock/models.py:610 -#: stock/models.py:1774 stock/models.py:1880 stock/serializers.py:325 -#: stock/serializers.py:583 stock/templates/stock/stock_sidebar.html:21 +#: stock/forms.py:154 stock/forms.py:204 stock/forms.py:238 stock/models.py:600 +#: stock/models.py:1764 stock/models.py:1870 stock/serializers.py:330 +#: stock/serializers.py:588 stock/templates/stock/stock_sidebar.html:21 #: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:599 -#: templates/js/translated/company.js:842 templates/js/translated/order.js:985 -#: templates/js/translated/order.js:1583 templates/js/translated/stock.js:891 -#: templates/js/translated/stock.js:1370 +#: templates/js/translated/company.js:842 templates/js/translated/order.js:984 +#: templates/js/translated/order.js:1582 templates/js/translated/stock.js:973 +#: templates/js/translated/stock.js:1452 msgid "Notes" msgstr "" @@ -877,7 +879,7 @@ msgstr "" msgid "Selected stock item not found in BOM" msgstr "" -#: build/models.py:1253 stock/templates/stock/item_base.html:318 +#: build/models.py:1253 stock/templates/stock/item_base.html:346 #: templates/InvenTree/search.html:143 templates/js/translated/build.js:1599 #: templates/navbar.html:33 msgid "Build" @@ -890,11 +892,11 @@ msgstr "" #: build/models.py:1270 build/serializers.py:328 #: stock/templates/stock/item_base.html:8 #: stock/templates/stock/item_base.html:16 -#: stock/templates/stock/item_base.html:340 +#: stock/templates/stock/item_base.html:368 #: templates/js/translated/build.js:408 templates/js/translated/build.js:413 #: templates/js/translated/build.js:1361 templates/js/translated/build.js:1742 -#: templates/js/translated/order.js:1178 templates/js/translated/order.js:1183 -#: templates/js/translated/stock.js:2020 +#: templates/js/translated/order.js:1177 templates/js/translated/order.js:1182 +#: templates/js/translated/stock.js:2102 msgid "Stock Item" msgstr "" @@ -934,16 +936,16 @@ msgstr "" msgid "This build output is not fully allocated" msgstr "" -#: build/serializers.py:190 order/serializers.py:219 order/serializers.py:287 -#: stock/forms.py:236 stock/serializers.py:318 stock/serializers.py:685 -#: stock/templates/stock/item_base.html:286 +#: build/serializers.py:190 order/serializers.py:228 order/serializers.py:296 +#: stock/forms.py:236 stock/serializers.py:323 stock/serializers.py:690 +#: stock/templates/stock/item_base.html:314 #: templates/js/translated/barcode.js:384 #: templates/js/translated/barcode.js:557 templates/js/translated/build.js:420 #: templates/js/translated/build.js:1027 templates/js/translated/order.js:348 -#: templates/js/translated/order.js:1190 templates/js/translated/order.js:1298 -#: templates/js/translated/order.js:1304 templates/js/translated/part.js:181 -#: templates/js/translated/stock.js:510 templates/js/translated/stock.js:1251 -#: templates/js/translated/stock.js:1961 +#: templates/js/translated/order.js:1189 templates/js/translated/order.js:1297 +#: templates/js/translated/order.js:1303 templates/js/translated/part.js:177 +#: templates/js/translated/stock.js:592 templates/js/translated/stock.js:1333 +#: templates/js/translated/stock.js:2043 msgid "Location" msgstr "" @@ -951,13 +953,13 @@ msgstr "" msgid "Location for completed build outputs" msgstr "" -#: build/serializers.py:197 build/templates/build/build_base.html:129 +#: build/serializers.py:197 build/templates/build/build_base.html:137 #: build/templates/build/detail.html:63 order/models.py:572 -#: order/serializers.py:240 stock/templates/stock/item_base.html:409 +#: order/serializers.py:249 stock/templates/stock/item_base.html:180 #: templates/js/translated/barcode.js:140 templates/js/translated/build.js:1655 -#: templates/js/translated/order.js:431 templates/js/translated/order.js:677 -#: templates/js/translated/order.js:1096 templates/js/translated/stock.js:1226 -#: templates/js/translated/stock.js:2038 templates/js/translated/stock.js:2187 +#: templates/js/translated/order.js:431 templates/js/translated/order.js:1095 +#: templates/js/translated/stock.js:1308 templates/js/translated/stock.js:2120 +#: templates/js/translated/stock.js:2269 msgid "Status" msgstr "" @@ -986,8 +988,8 @@ msgstr "" msgid "Item must be in stock" msgstr "" -#: build/serializers.py:348 order/models.py:316 order/serializers.py:233 -#: stock/models.py:381 stock/models.py:1103 stock/serializers.py:298 +#: build/serializers.py:348 order/models.py:316 order/serializers.py:242 +#: stock/models.py:371 stock/models.py:1093 stock/serializers.py:303 msgid "Quantity must be greater than zero" msgstr "" @@ -1031,7 +1033,7 @@ msgid "Edit Build" msgstr "" #: build/templates/build/build_base.html:56 -#: build/templates/build/build_base.html:207 build/views.py:56 +#: build/templates/build/build_base.html:215 build/views.py:56 msgid "Cancel Build" msgstr "" @@ -1041,93 +1043,95 @@ msgstr "" #: build/templates/build/build_base.html:64 #: build/templates/build/build_base.html:65 -#: build/templates/build/build_base.html:223 +#: build/templates/build/build_base.html:231 msgid "Complete Build" msgstr "" -#: build/templates/build/build_base.html:79 +#: build/templates/build/build_base.html:82 +msgid "Build Description" +msgstr "" + +#: build/templates/build/build_base.html:91 #, python-format msgid "This Build Order is allocated to Sales Order %(link)s" msgstr "" -#: build/templates/build/build_base.html:86 +#: build/templates/build/build_base.html:98 #, python-format msgid "This Build Order is a child of Build Order %(link)s" msgstr "" -#: build/templates/build/build_base.html:93 +#: build/templates/build/build_base.html:105 msgid "Build Order is ready to mark as completed" msgstr "" -#: build/templates/build/build_base.html:98 +#: build/templates/build/build_base.html:110 msgid "Build Order cannot be completed as outstanding outputs remain" msgstr "" -#: build/templates/build/build_base.html:103 +#: build/templates/build/build_base.html:115 msgid "Required build quantity has not yet been completed" msgstr "" -#: build/templates/build/build_base.html:108 +#: build/templates/build/build_base.html:120 msgid "Stock has not been fully allocated to this Build Order" msgstr "" -#: build/templates/build/build_base.html:138 +#: build/templates/build/build_base.html:146 #: build/templates/build/detail.html:132 -#: order/templates/order/order_base.html:140 -#: order/templates/order/sales_order_base.html:140 +#: order/templates/order/order_base.html:144 +#: order/templates/order/sales_order_base.html:141 #: report/templates/report/inventree_build_order_base.html:126 -#: templates/js/translated/build.js:1692 templates/js/translated/order.js:690 -#: templates/js/translated/order.js:1109 +#: templates/js/translated/build.js:1692 templates/js/translated/order.js:689 +#: templates/js/translated/order.js:1108 msgid "Target Date" msgstr "" -#: build/templates/build/build_base.html:143 +#: build/templates/build/build_base.html:151 #, python-format msgid "This build was due on %(target)s" msgstr "" -#: build/templates/build/build_base.html:143 -#: build/templates/build/build_base.html:188 -#: order/templates/order/order_base.html:81 -#: order/templates/order/order_base.html:102 -#: order/templates/order/sales_order_base.html:78 -#: order/templates/order/sales_order_base.html:107 +#: build/templates/build/build_base.html:151 +#: build/templates/build/build_base.html:196 +#: order/templates/order/order_base.html:98 +#: order/templates/order/sales_order_base.html:93 #: templates/js/translated/table_filters.js:294 #: templates/js/translated/table_filters.js:322 #: templates/js/translated/table_filters.js:339 msgid "Overdue" msgstr "" -#: build/templates/build/build_base.html:150 +#: build/templates/build/build_base.html:158 #: build/templates/build/detail.html:68 build/templates/build/detail.html:143 #: templates/js/translated/build.js:1641 #: templates/js/translated/table_filters.js:304 msgid "Completed" msgstr "" -#: build/templates/build/build_base.html:163 +#: build/templates/build/build_base.html:171 #: build/templates/build/detail.html:95 order/models.py:857 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: order/templates/order/sales_order_ship.html:25 #: report/templates/report/inventree_build_order_base.html:136 #: report/templates/report/inventree_so_report.html:77 -#: stock/templates/stock/item_base.html:280 -#: templates/js/translated/order.js:1051 +#: stock/templates/stock/item_base.html:308 +#: templates/js/translated/order.js:1050 msgid "Sales Order" msgstr "" -#: build/templates/build/build_base.html:170 +#: build/templates/build/build_base.html:178 #: build/templates/build/detail.html:109 #: report/templates/report/inventree_build_order_base.html:153 msgid "Issued By" msgstr "" -#: build/templates/build/build_base.html:215 +#: build/templates/build/build_base.html:223 msgid "Incomplete Outputs" msgstr "" -#: build/templates/build/build_base.html:216 +#: build/templates/build/build_base.html:224 msgid "Build Order cannot be completed as incomplete build outputs remain" msgstr "" @@ -1188,7 +1192,7 @@ msgid "Stock can be taken from any available location." msgstr "" #: build/templates/build/detail.html:50 order/models.py:811 stock/forms.py:150 -#: templates/js/translated/order.js:432 templates/js/translated/order.js:974 +#: templates/js/translated/order.js:432 templates/js/translated/order.js:973 msgid "Destination" msgstr "" @@ -1201,16 +1205,16 @@ msgid "Allocated Parts" msgstr "" #: build/templates/build/detail.html:81 -#: stock/templates/stock/item_base.html:304 -#: templates/js/translated/stock.js:1240 templates/js/translated/stock.js:2194 +#: stock/templates/stock/item_base.html:332 +#: templates/js/translated/stock.js:1322 templates/js/translated/stock.js:2276 #: templates/js/translated/table_filters.js:151 #: templates/js/translated/table_filters.js:233 msgid "Batch" msgstr "" #: build/templates/build/detail.html:127 -#: order/templates/order/order_base.html:127 -#: order/templates/order/sales_order_base.html:134 +#: order/templates/order/order_base.html:131 +#: order/templates/order/sales_order_base.html:135 #: templates/js/translated/build.js:1663 msgid "Created" msgstr "" @@ -1254,7 +1258,7 @@ msgstr "" #: build/templates/build/detail.html:185 #: company/templates/company/detail.html:38 #: company/templates/company/detail.html:85 order/views.py:509 -#: part/templates/part/category.html:166 +#: part/templates/part/category.html:173 msgid "Order Parts" msgstr "" @@ -1306,8 +1310,8 @@ msgstr "" #: order/templates/order/po_sidebar.html:9 #: order/templates/order/purchase_order_detail.html:60 #: order/templates/order/sales_order_detail.html:52 -#: order/templates/order/so_sidebar.html:9 part/templates/part/detail.html:300 -#: part/templates/part/part_sidebar.html:50 stock/templates/stock/item.html:95 +#: order/templates/order/so_sidebar.html:9 part/templates/part/detail.html:193 +#: part/templates/part/part_sidebar.html:48 stock/templates/stock/item.html:95 #: stock/templates/stock/stock_sidebar.html:19 msgid "Attachments" msgstr "" @@ -1323,7 +1327,7 @@ msgstr "" #: order/templates/order/purchase_order_detail.html:108 #: order/templates/order/sales_order_detail.html:72 #: order/templates/order/sales_order_detail.html:99 -#: part/templates/part/detail.html:227 stock/templates/stock/item.html:115 +#: part/templates/part/detail.html:120 stock/templates/stock/item.html:115 #: stock/templates/stock/item.html:205 msgid "Edit Notes" msgstr "" @@ -1336,7 +1340,7 @@ msgstr "" msgid "All untracked stock items have been allocated" msgstr "" -#: build/templates/build/index.html:18 part/templates/part/detail.html:407 +#: build/templates/build/index.html:18 part/templates/part/detail.html:300 msgid "New Build Order" msgstr "" @@ -1380,7 +1384,7 @@ msgstr "" msgid "Maximum output quantity is " msgstr "" -#: build/views.py:122 stock/serializers.py:356 stock/views.py:1290 +#: build/views.py:122 stock/serializers.py:361 stock/views.py:1290 msgid "Serial numbers already exist" msgstr "" @@ -1675,7 +1679,7 @@ msgid "Parts are trackable by default" msgstr "" #: common/models.py:745 part/models.py:920 -#: part/templates/part/part_base.html:144 +#: part/templates/part/part_base.html:147 #: templates/js/translated/table_filters.js:42 msgid "Virtual" msgstr "" @@ -2142,7 +2146,7 @@ msgstr "" #: common/models.py:1233 company/serializers.py:264 #: company/templates/company/supplier_part.html:256 -#: templates/js/translated/part.js:1620 +#: templates/js/translated/part.js:852 templates/js/translated/part.js:1801 msgid "Price" msgstr "" @@ -2206,7 +2210,7 @@ msgstr "" msgid "Description of the company" msgstr "" -#: company/models.py:112 company/templates/company/company_base.html:70 +#: company/models.py:112 company/templates/company/company_base.html:97 #: templates/js/translated/company.js:349 msgid "Website" msgstr "" @@ -2215,7 +2219,7 @@ msgstr "" msgid "Company website URL" msgstr "" -#: company/models.py:117 company/templates/company/company_base.html:88 +#: company/models.py:117 company/templates/company/company_base.html:115 msgid "Address" msgstr "" @@ -2231,7 +2235,7 @@ msgstr "" msgid "Contact phone number" msgstr "" -#: company/models.py:125 company/templates/company/company_base.html:102 +#: company/models.py:125 company/templates/company/company_base.html:129 #: templates/InvenTree/settings/user.html:47 msgid "Email" msgstr "" @@ -2240,7 +2244,7 @@ msgstr "" msgid "Contact email address" msgstr "" -#: company/models.py:128 company/templates/company/company_base.html:109 +#: company/models.py:128 company/templates/company/company_base.html:136 msgid "Contact" msgstr "" @@ -2281,7 +2285,7 @@ msgid "Does this company manufacture parts?" msgstr "" #: company/models.py:152 company/serializers.py:270 -#: company/templates/company/company_base.html:76 stock/serializers.py:172 +#: company/templates/company/company_base.html:103 stock/serializers.py:177 msgid "Currency" msgstr "" @@ -2289,8 +2293,8 @@ msgstr "" msgid "Default currency used for this company" msgstr "" -#: company/models.py:320 company/models.py:535 stock/models.py:484 -#: stock/templates/stock/item_base.html:224 +#: company/models.py:320 company/models.py:535 stock/models.py:474 +#: stock/templates/stock/item_base.html:135 msgid "Base Part" msgstr "" @@ -2298,29 +2302,29 @@ msgstr "" msgid "Select part" msgstr "" -#: company/models.py:335 company/templates/company/company_base.html:116 -#: company/templates/company/manufacturer_part.html:93 -#: company/templates/company/supplier_part.html:104 -#: stock/templates/stock/item_base.html:353 +#: company/models.py:335 company/templates/company/company_base.html:73 +#: company/templates/company/manufacturer_part.html:91 +#: company/templates/company/supplier_part.html:97 +#: stock/templates/stock/item_base.html:381 #: templates/js/translated/company.js:333 #: templates/js/translated/company.js:514 -#: templates/js/translated/company.js:797 templates/js/translated/part.js:229 +#: templates/js/translated/company.js:797 templates/js/translated/part.js:232 msgid "Manufacturer" msgstr "" -#: company/models.py:336 templates/js/translated/part.js:230 +#: company/models.py:336 templates/js/translated/part.js:233 msgid "Select manufacturer" msgstr "" -#: company/models.py:342 company/templates/company/manufacturer_part.html:97 -#: company/templates/company/supplier_part.html:112 +#: company/models.py:342 company/templates/company/manufacturer_part.html:96 +#: company/templates/company/supplier_part.html:105 #: templates/js/translated/company.js:530 -#: templates/js/translated/company.js:815 templates/js/translated/order.js:874 -#: templates/js/translated/part.js:240 +#: templates/js/translated/company.js:815 templates/js/translated/order.js:873 +#: templates/js/translated/part.js:243 templates/js/translated/part.js:832 msgid "MPN" msgstr "" -#: company/models.py:343 templates/js/translated/part.js:241 +#: company/models.py:343 templates/js/translated/part.js:244 msgid "Manufacturer Part Number" msgstr "" @@ -2335,7 +2339,7 @@ msgstr "" #: company/models.py:409 company/models.py:558 #: company/templates/company/manufacturer_part.html:6 #: company/templates/company/manufacturer_part.html:23 -#: stock/templates/stock/item_base.html:363 +#: stock/templates/stock/item_base.html:391 msgid "Manufacturer Part" msgstr "" @@ -2345,8 +2349,8 @@ msgstr "" #: company/models.py:422 #: report/templates/report/inventree_test_report_base.html:95 -#: stock/models.py:1867 templates/js/translated/company.js:644 -#: templates/js/translated/part.js:645 templates/js/translated/stock.js:878 +#: stock/models.py:1857 templates/js/translated/company.js:644 +#: templates/js/translated/part.js:652 templates/js/translated/stock.js:960 msgid "Value" msgstr "" @@ -2355,9 +2359,9 @@ msgid "Parameter value" msgstr "" #: company/models.py:429 part/models.py:882 part/models.py:2397 -#: part/templates/part/detail.html:59 +#: part/templates/part/part_base.html:288 #: templates/InvenTree/settings/settings.html:264 -#: templates/js/translated/company.js:650 templates/js/translated/part.js:651 +#: templates/js/translated/company.js:650 templates/js/translated/part.js:658 msgid "Units" msgstr "" @@ -2369,28 +2373,28 @@ msgstr "" msgid "Linked manufacturer part must reference the same base part" msgstr "" -#: company/models.py:545 company/templates/company/company_base.html:121 -#: company/templates/company/supplier_part.html:94 order/models.py:263 -#: order/templates/order/order_base.html:108 +#: company/models.py:545 company/templates/company/company_base.html:78 +#: company/templates/company/supplier_part.html:87 order/models.py:263 +#: order/templates/order/order_base.html:112 #: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:219 -#: part/bom.py:247 stock/templates/stock/item_base.html:370 +#: part/bom.py:247 stock/templates/stock/item_base.html:398 #: templates/js/translated/company.js:337 -#: templates/js/translated/company.js:771 templates/js/translated/order.js:660 -#: templates/js/translated/part.js:210 +#: templates/js/translated/company.js:771 templates/js/translated/order.js:667 +#: templates/js/translated/part.js:213 templates/js/translated/part.js:800 msgid "Supplier" msgstr "" -#: company/models.py:546 templates/js/translated/part.js:211 +#: company/models.py:546 templates/js/translated/part.js:214 msgid "Select supplier" msgstr "" -#: company/models.py:551 company/templates/company/supplier_part.html:98 -#: part/bom.py:220 part/bom.py:248 templates/js/translated/order.js:861 -#: templates/js/translated/part.js:221 +#: company/models.py:551 company/templates/company/supplier_part.html:91 +#: part/bom.py:220 part/bom.py:248 templates/js/translated/order.js:860 +#: templates/js/translated/part.js:224 templates/js/translated/part.js:818 msgid "SKU" msgstr "" -#: company/models.py:552 templates/js/translated/part.js:222 +#: company/models.py:552 templates/js/translated/part.js:225 msgid "Supplier stock keeping unit" msgstr "" @@ -2406,7 +2410,7 @@ msgstr "" msgid "Supplier part description" msgstr "" -#: company/models.py:576 company/templates/company/supplier_part.html:126 +#: company/models.py:576 company/templates/company/supplier_part.html:119 #: part/models.py:2588 report/templates/report/inventree_po_report.html:93 #: report/templates/report/inventree_so_report.html:93 msgid "Note" @@ -2420,9 +2424,9 @@ msgstr "" msgid "Minimum charge (e.g. stocking fee)" msgstr "" -#: company/models.py:582 company/templates/company/supplier_part.html:119 -#: stock/models.py:507 stock/templates/stock/item_base.html:311 -#: templates/js/translated/company.js:847 templates/js/translated/stock.js:1366 +#: company/models.py:582 company/templates/company/supplier_part.html:112 +#: stock/models.py:497 stock/templates/stock/item_base.html:339 +#: templates/js/translated/company.js:847 templates/js/translated/stock.js:1448 msgid "Packaging" msgstr "" @@ -2457,43 +2461,56 @@ msgstr "" msgid "Create Purchase Order" msgstr "" -#: company/templates/company/company_base.html:27 +#: company/templates/company/company_base.html:26 +msgid "Company actions" +msgstr "" + +#: company/templates/company/company_base.html:31 msgid "Edit company information" msgstr "" #: company/templates/company/company_base.html:32 -#: company/templates/company/company_base.html:148 +#: templates/js/translated/company.js:265 +msgid "Edit Company" +msgstr "" + +#: company/templates/company/company_base.html:36 +msgid "Delete company" +msgstr "" + +#: company/templates/company/company_base.html:37 +#: company/templates/company/company_base.html:159 msgid "Delete Company" msgstr "" -#: company/templates/company/company_base.html:48 +#: company/templates/company/company_base.html:53 #: part/templates/part/part_thumb.html:12 msgid "Upload new image" msgstr "" -#: company/templates/company/company_base.html:51 +#: company/templates/company/company_base.html:56 #: part/templates/part/part_thumb.html:14 msgid "Download image from URL" msgstr "" -#: company/templates/company/company_base.html:81 -msgid "Uses default currency" -msgstr "" - -#: company/templates/company/company_base.html:95 -msgid "Phone" -msgstr "" - -#: company/templates/company/company_base.html:126 order/models.py:567 -#: order/templates/order/sales_order_base.html:114 stock/models.py:525 -#: stock/models.py:526 stock/templates/stock/item_base.html:263 -#: templates/js/translated/company.js:329 templates/js/translated/order.js:1073 -#: templates/js/translated/stock.js:2002 +#: company/templates/company/company_base.html:83 order/models.py:567 +#: order/templates/order/sales_order_base.html:115 stock/models.py:515 +#: stock/models.py:516 stock/templates/stock/item_base.html:291 +#: templates/js/translated/company.js:329 templates/js/translated/order.js:1072 +#: templates/js/translated/stock.js:2084 msgid "Customer" msgstr "" -#: company/templates/company/company_base.html:194 -#: part/templates/part/part_base.html:342 +#: company/templates/company/company_base.html:108 +msgid "Uses default currency" +msgstr "" + +#: company/templates/company/company_base.html:122 +msgid "Phone" +msgstr "" + +#: company/templates/company/company_base.html:205 +#: part/templates/part/part_base.html:471 msgid "Upload Image" msgstr "" @@ -2509,23 +2526,23 @@ msgid "Create new supplier part" msgstr "" #: company/templates/company/detail.html:20 -#: company/templates/company/manufacturer_part.html:112 -#: part/templates/part/detail.html:440 +#: company/templates/company/manufacturer_part.html:118 +#: part/templates/part/detail.html:333 msgid "New Supplier Part" msgstr "" #: company/templates/company/detail.html:32 #: company/templates/company/detail.html:79 -#: company/templates/company/manufacturer_part.html:121 -#: company/templates/company/manufacturer_part.html:150 -#: part/templates/part/category.html:160 part/templates/part/detail.html:449 -#: part/templates/part/detail.html:477 +#: company/templates/company/manufacturer_part.html:127 +#: company/templates/company/manufacturer_part.html:156 +#: part/templates/part/category.html:167 part/templates/part/detail.html:342 +#: part/templates/part/detail.html:370 msgid "Options" msgstr "" #: company/templates/company/detail.html:37 #: company/templates/company/detail.html:84 -#: part/templates/part/category.html:166 +#: part/templates/part/category.html:173 msgid "Order parts" msgstr "" @@ -2547,7 +2564,7 @@ msgstr "" msgid "Create new manufacturer part" msgstr "" -#: company/templates/company/detail.html:67 part/templates/part/detail.html:467 +#: company/templates/company/detail.html:67 part/templates/part/detail.html:360 msgid "New Manufacturer Part" msgstr "" @@ -2561,7 +2578,7 @@ msgstr "" #: order/templates/order/order_base.html:13 #: order/templates/order/purchase_orders.html:8 #: order/templates/order/purchase_orders.html:12 -#: part/templates/part/detail.html:171 part/templates/part/part_sidebar.html:35 +#: part/templates/part/detail.html:64 part/templates/part/part_sidebar.html:33 #: templates/InvenTree/index.html:252 templates/InvenTree/search.html:203 #: templates/InvenTree/settings/sidebar.html:44 templates/navbar.html:45 #: users/models.py:45 @@ -2583,7 +2600,7 @@ msgstr "" #: order/templates/order/sales_order_base.html:13 #: order/templates/order/sales_orders.html:8 #: order/templates/order/sales_orders.html:15 -#: part/templates/part/detail.html:194 part/templates/part/part_sidebar.html:39 +#: part/templates/part/detail.html:87 part/templates/part/part_sidebar.html:37 #: templates/InvenTree/index.html:283 templates/InvenTree/search.html:223 #: templates/InvenTree/settings/sidebar.html:46 templates/navbar.html:56 #: users/models.py:46 @@ -2610,14 +2627,14 @@ msgid "Company Notes" msgstr "" #: company/templates/company/detail.html:383 -#: company/templates/company/manufacturer_part.html:209 -#: part/templates/part/detail.html:520 +#: company/templates/company/manufacturer_part.html:215 +#: part/templates/part/detail.html:413 msgid "Delete Supplier Parts?" msgstr "" #: company/templates/company/detail.html:384 -#: company/templates/company/manufacturer_part.html:210 -#: part/templates/part/detail.html:521 +#: company/templates/company/manufacturer_part.html:216 +#: part/templates/part/detail.html:414 msgid "All selected supplier parts will be deleted" msgstr "" @@ -2634,7 +2651,7 @@ msgstr "" #: company/templates/company/manufacturer_part.html:35 #: company/templates/company/supplier_part.html:34 #: company/templates/company/supplier_part.html:159 -#: part/templates/part/detail.html:174 part/templates/part/part_base.html:76 +#: part/templates/part/detail.html:67 part/templates/part/part_base.html:76 msgid "Order part" msgstr "" @@ -2648,60 +2665,60 @@ msgstr "" msgid "Delete manufacturer part" msgstr "" -#: company/templates/company/manufacturer_part.html:70 -#: company/templates/company/supplier_part.html:71 +#: company/templates/company/manufacturer_part.html:66 +#: company/templates/company/supplier_part.html:63 msgid "Internal Part" msgstr "" -#: company/templates/company/manufacturer_part.html:108 +#: company/templates/company/manufacturer_part.html:114 #: company/templates/company/supplier_part.html:15 company/views.py:49 -#: part/templates/part/part_sidebar.html:33 part/templates/part/prices.html:163 +#: part/templates/part/part_sidebar.html:31 part/templates/part/prices.html:163 #: templates/InvenTree/search.html:194 templates/navbar.html:43 msgid "Suppliers" msgstr "" -#: company/templates/company/manufacturer_part.html:123 -#: part/templates/part/detail.html:451 +#: company/templates/company/manufacturer_part.html:129 +#: part/templates/part/detail.html:344 msgid "Delete supplier parts" msgstr "" -#: company/templates/company/manufacturer_part.html:123 -#: company/templates/company/manufacturer_part.html:152 -#: company/templates/company/manufacturer_part.html:248 -#: part/templates/part/detail.html:451 part/templates/part/detail.html:479 +#: company/templates/company/manufacturer_part.html:129 +#: company/templates/company/manufacturer_part.html:158 +#: company/templates/company/manufacturer_part.html:254 +#: part/templates/part/detail.html:344 part/templates/part/detail.html:372 #: templates/js/translated/company.js:425 templates/js/translated/helpers.js:31 #: users/models.py:204 msgid "Delete" msgstr "" -#: company/templates/company/manufacturer_part.html:137 +#: company/templates/company/manufacturer_part.html:143 #: company/templates/company/manufacturer_part_sidebar.html:5 #: part/templates/part/category_sidebar.html:17 -#: part/templates/part/detail.html:277 part/templates/part/part_sidebar.html:10 +#: part/templates/part/detail.html:170 part/templates/part/part_sidebar.html:8 msgid "Parameters" msgstr "" -#: company/templates/company/manufacturer_part.html:141 -#: part/templates/part/detail.html:282 +#: company/templates/company/manufacturer_part.html:147 +#: part/templates/part/detail.html:175 #: templates/InvenTree/settings/category.html:12 #: templates/InvenTree/settings/part.html:65 msgid "New Parameter" msgstr "" -#: company/templates/company/manufacturer_part.html:152 +#: company/templates/company/manufacturer_part.html:158 msgid "Delete parameters" msgstr "" -#: company/templates/company/manufacturer_part.html:185 -#: part/templates/part/detail.html:976 +#: company/templates/company/manufacturer_part.html:191 +#: part/templates/part/detail.html:867 msgid "Add Parameter" msgstr "" -#: company/templates/company/manufacturer_part.html:233 +#: company/templates/company/manufacturer_part.html:239 msgid "Selected parameters will be deleted" msgstr "" -#: company/templates/company/manufacturer_part.html:245 +#: company/templates/company/manufacturer_part.html:251 msgid "Delete Parameters" msgstr "" @@ -2722,9 +2739,9 @@ msgid "Assigned Stock Items" msgstr "" #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 stock/models.py:492 -#: stock/templates/stock/item_base.html:375 -#: templates/js/translated/company.js:787 templates/js/translated/stock.js:1323 +#: company/templates/company/supplier_part.html:24 stock/models.py:482 +#: stock/templates/stock/item_base.html:403 +#: templates/js/translated/company.js:787 templates/js/translated/stock.js:1405 msgid "Supplier Part" msgstr "" @@ -2744,13 +2761,13 @@ msgid "Supplier Part Stock" msgstr "" #: company/templates/company/supplier_part.html:141 -#: part/templates/part/detail.html:127 stock/templates/stock/location.html:147 +#: part/templates/part/detail.html:20 stock/templates/stock/location.html:162 msgid "Create new stock item" msgstr "" #: company/templates/company/supplier_part.html:142 -#: part/templates/part/detail.html:128 stock/templates/stock/location.html:148 -#: templates/js/translated/stock.js:354 +#: part/templates/part/detail.html:21 stock/templates/stock/location.html:163 +#: templates/js/translated/stock.js:355 msgid "New Stock Item" msgstr "" @@ -2760,7 +2777,7 @@ msgid "Supplier Part Orders" msgstr "" #: company/templates/company/supplier_part.html:160 -#: part/templates/part/detail.html:175 +#: part/templates/part/detail.html:68 msgid "Order Part" msgstr "" @@ -2796,15 +2813,15 @@ msgid "Delete price break" msgstr "" #: company/templates/company/supplier_part_navbar.html:15 -#: part/templates/part/part_sidebar.html:16 +#: part/templates/part/part_sidebar.html:14 #: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:14 #: stock/templates/stock/stock_app_base.html:10 #: templates/InvenTree/search.html:156 #: templates/InvenTree/settings/sidebar.html:40 -#: templates/js/translated/bom.js:216 templates/js/translated/part.js:427 -#: templates/js/translated/part.js:562 templates/js/translated/part.js:878 -#: templates/js/translated/part.js:1039 templates/js/translated/stock.js:509 -#: templates/js/translated/stock.js:1162 templates/navbar.html:26 +#: templates/js/translated/bom.js:216 templates/js/translated/part.js:434 +#: templates/js/translated/part.js:569 templates/js/translated/part.js:1059 +#: templates/js/translated/part.js:1220 templates/js/translated/stock.js:591 +#: templates/js/translated/stock.js:1244 templates/navbar.html:26 msgid "Stock" msgstr "" @@ -2818,16 +2835,16 @@ msgid "Supplier Part Pricing" msgstr "" #: company/templates/company/supplier_part_navbar.html:29 -#: part/templates/part/part_sidebar.html:30 +#: part/templates/part/part_sidebar.html:28 msgid "Pricing" msgstr "" #: company/templates/company/supplier_part_sidebar.html:5 -#: stock/templates/stock/location.html:118 -#: stock/templates/stock/location.html:132 -#: stock/templates/stock/location.html:144 +#: stock/templates/stock/location.html:133 +#: stock/templates/stock/location.html:147 +#: stock/templates/stock/location.html:159 #: stock/templates/stock/location_sidebar.html:7 -#: templates/InvenTree/search.html:158 templates/js/translated/stock.js:1901 +#: templates/InvenTree/search.html:158 templates/js/translated/stock.js:1983 #: templates/stats.html:93 templates/stats.html:102 users/models.py:43 msgid "Stock Items" msgstr "" @@ -2947,7 +2964,7 @@ msgstr "" msgid "Place order" msgstr "" -#: order/forms.py:37 order/templates/order/order_base.html:59 +#: order/forms.py:37 order/templates/order/order_base.html:60 msgid "Mark order as complete" msgstr "" @@ -3000,8 +3017,8 @@ msgstr "" msgid "Company from which the items are being ordered" msgstr "" -#: order/models.py:267 order/templates/order/order_base.html:114 -#: templates/js/translated/order.js:669 +#: order/models.py:267 order/templates/order/order_base.html:118 +#: templates/js/translated/order.js:676 msgid "Supplier Reference" msgstr "" @@ -3061,7 +3078,7 @@ msgstr "" msgid "Target date for order completion. Order will be overdue after this date." msgstr "" -#: order/models.py:582 templates/js/translated/order.js:1114 +#: order/models.py:582 templates/js/translated/order.js:1113 msgid "Shipment Date" msgstr "" @@ -3086,16 +3103,16 @@ msgid "Line item notes" msgstr "" #: order/models.py:768 order/models.py:856 -#: templates/js/translated/order.js:1166 +#: templates/js/translated/order.js:1165 msgid "Order" msgstr "" #: order/models.py:769 order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_po_report.html:77 -#: stock/templates/stock/item_base.html:325 -#: templates/js/translated/order.js:638 templates/js/translated/stock.js:1300 -#: templates/js/translated/stock.js:1983 +#: stock/templates/stock/item_base.html:353 +#: templates/js/translated/order.js:638 templates/js/translated/part.js:775 +#: templates/js/translated/stock.js:1382 templates/js/translated/stock.js:2065 msgid "Purchase Order" msgstr "" @@ -3103,9 +3120,10 @@ msgstr "" msgid "Supplier part" msgstr "" -#: order/models.py:797 order/templates/order/order_base.html:147 -#: order/templates/order/sales_order_base.html:154 -#: templates/js/translated/order.js:429 templates/js/translated/order.js:954 +#: order/models.py:797 order/templates/order/order_base.html:151 +#: order/templates/order/sales_order_base.html:155 +#: templates/js/translated/order.js:429 templates/js/translated/order.js:953 +#: templates/js/translated/part.js:847 templates/js/translated/part.js:873 msgid "Received" msgstr "" @@ -3113,9 +3131,9 @@ msgstr "" msgid "Number of items received" msgstr "" -#: order/models.py:805 part/templates/part/prices.html:176 stock/models.py:619 -#: stock/serializers.py:163 stock/templates/stock/item_base.html:332 -#: templates/js/translated/stock.js:1354 +#: order/models.py:805 part/templates/part/prices.html:176 stock/models.py:609 +#: stock/serializers.py:168 stock/templates/stock/item_base.html:360 +#: templates/js/translated/stock.js:1436 msgid "Purchase Price" msgstr "" @@ -3176,47 +3194,47 @@ msgstr "" msgid "Enter stock allocation quantity" msgstr "" -#: order/serializers.py:169 +#: order/serializers.py:175 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:204 +#: order/serializers.py:213 msgid "Line Item" msgstr "" -#: order/serializers.py:210 +#: order/serializers.py:219 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:220 order/serializers.py:288 +#: order/serializers.py:229 order/serializers.py:297 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:244 +#: order/serializers.py:253 msgid "Barcode Hash" msgstr "" -#: order/serializers.py:245 +#: order/serializers.py:254 msgid "Unique identifier field" msgstr "" -#: order/serializers.py:262 +#: order/serializers.py:271 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:300 +#: order/serializers.py:309 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:317 +#: order/serializers.py:326 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:328 +#: order/serializers.py:337 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:569 +#: order/serializers.py:578 msgid "Sale price currency" msgstr "" @@ -3248,22 +3266,36 @@ msgstr "" msgid "Receive items" msgstr "" -#: order/templates/order/order_base.html:93 -#: order/templates/order/sales_order_base.html:98 +#: order/templates/order/order_base.html:58 +#: order/templates/order/purchase_order_detail.html:31 +msgid "Receive Items" +msgstr "" + +#: order/templates/order/order_base.html:62 order/views.py:185 +msgid "Complete Order" +msgstr "" + +#: order/templates/order/order_base.html:84 +#: order/templates/order/sales_order_base.html:79 msgid "Order Reference" msgstr "" -#: order/templates/order/order_base.html:98 -#: order/templates/order/sales_order_base.html:103 +#: order/templates/order/order_base.html:89 +#: order/templates/order/sales_order_base.html:84 +msgid "Order Description" +msgstr "" + +#: order/templates/order/order_base.html:94 +#: order/templates/order/sales_order_base.html:89 msgid "Order Status" msgstr "" -#: order/templates/order/order_base.html:133 +#: order/templates/order/order_base.html:137 #: report/templates/report/inventree_build_order_base.html:122 msgid "Issued" msgstr "" -#: order/templates/order/order_base.html:203 +#: order/templates/order/order_base.html:207 msgid "Edit Purchase Order" msgstr "" @@ -3421,7 +3453,7 @@ msgid "Select existing purchase orders, or create new orders." msgstr "" #: order/templates/order/order_wizard/select_pos.html:31 -#: templates/js/translated/order.js:695 templates/js/translated/order.js:1119 +#: templates/js/translated/order.js:694 templates/js/translated/order.js:1118 msgid "Items" msgstr "" @@ -3465,10 +3497,6 @@ msgstr "" msgid "Receive selected items" msgstr "" -#: order/templates/order/purchase_order_detail.html:31 -msgid "Receive Items" -msgstr "" - #: order/templates/order/purchase_order_detail.html:50 msgid "Received Items" msgstr "" @@ -3496,16 +3524,16 @@ msgstr "" msgid "Ship Order" msgstr "" -#: order/templates/order/sales_order_base.html:86 +#: order/templates/order/sales_order_base.html:102 msgid "This Sales Order has not been fully allocated" msgstr "" -#: order/templates/order/sales_order_base.html:121 -#: templates/js/translated/order.js:1086 +#: order/templates/order/sales_order_base.html:122 +#: templates/js/translated/order.js:1085 msgid "Customer Reference" msgstr "" -#: order/templates/order/sales_order_base.html:194 +#: order/templates/order/sales_order_base.html:195 msgid "Edit Sales Order" msgstr "" @@ -3576,10 +3604,6 @@ msgstr "" msgid "Purchase order issued" msgstr "" -#: order/views.py:185 -msgid "Complete Order" -msgstr "" - #: order/views.py:201 msgid "Confirm order completion" msgstr "" @@ -3672,11 +3696,11 @@ msgid "This field is required" msgstr "" #: part/bom.py:125 part/models.py:81 part/models.py:816 -#: part/templates/part/category.html:90 part/templates/part/detail.html:104 +#: part/templates/part/category.html:104 part/templates/part/part_base.html:338 msgid "Default Location" msgstr "" -#: part/bom.py:126 part/templates/part/part_base.html:167 +#: part/bom.py:126 part/templates/part/part_base.html:185 msgid "Available Stock" msgstr "" @@ -3793,19 +3817,19 @@ msgstr "" msgid "Part Category" msgstr "" -#: part/models.py:96 part/templates/part/category.html:117 +#: part/models.py:96 part/templates/part/category.html:124 #: templates/InvenTree/search.html:101 templates/stats.html:84 #: users/models.py:40 msgid "Part Categories" msgstr "" #: part/models.py:358 part/templates/part/cat_link.html:3 -#: part/templates/part/category.html:13 part/templates/part/category.html:122 -#: part/templates/part/category.html:142 +#: part/templates/part/category.html:13 part/templates/part/category.html:129 +#: part/templates/part/category.html:149 #: part/templates/part/category_sidebar.html:9 #: templates/InvenTree/index.html:85 templates/InvenTree/search.html:88 #: templates/InvenTree/settings/sidebar.html:36 -#: templates/js/translated/part.js:1416 templates/navbar.html:19 +#: templates/js/translated/part.js:1597 templates/navbar.html:19 #: templates/stats.html:80 templates/stats.html:89 users/models.py:41 msgid "Parts" msgstr "" @@ -3859,8 +3883,8 @@ msgstr "" msgid "Part description" msgstr "" -#: part/models.py:770 part/templates/part/category.html:97 -#: part/templates/part/detail.html:73 +#: part/models.py:770 part/templates/part/category.html:82 +#: part/templates/part/part_base.html:302 msgid "Keywords" msgstr "" @@ -3869,9 +3893,10 @@ msgid "Part keywords to improve visibility in search results" msgstr "" #: part/models.py:778 part/models.py:2223 part/models.py:2472 -#: part/templates/part/detail.html:36 part/templates/part/set_category.html:15 +#: part/templates/part/part_base.html:265 +#: part/templates/part/set_category.html:15 #: templates/InvenTree/settings/settings.html:163 -#: templates/js/translated/part.js:1021 +#: templates/js/translated/part.js:1202 msgid "Category" msgstr "" @@ -3879,9 +3904,9 @@ msgstr "" msgid "Part category" msgstr "" -#: part/models.py:784 part/templates/part/detail.html:45 -#: templates/js/translated/part.js:550 templates/js/translated/part.js:974 -#: templates/js/translated/stock.js:1134 +#: part/models.py:784 part/templates/part/part_base.html:274 +#: templates/js/translated/part.js:557 templates/js/translated/part.js:1155 +#: templates/js/translated/stock.js:1216 msgid "IPN" msgstr "" @@ -3893,8 +3918,8 @@ msgstr "" msgid "Part revision or version number" msgstr "" -#: part/models.py:792 part/templates/part/detail.html:52 report/models.py:200 -#: templates/js/translated/part.js:554 +#: part/models.py:792 part/templates/part/part_base.html:281 +#: report/models.py:200 templates/js/translated/part.js:561 msgid "Revision" msgstr "" @@ -3902,7 +3927,7 @@ msgstr "" msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:861 part/templates/part/detail.html:113 +#: part/models.py:861 part/templates/part/part_base.html:347 msgid "Default Supplier" msgstr "" @@ -3918,7 +3943,7 @@ msgstr "" msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:875 part/templates/part/part_base.html:178 +#: part/models.py:875 part/templates/part/part_base.html:196 msgid "Minimum Stock" msgstr "" @@ -4001,8 +4026,8 @@ msgstr "" msgid "Test with this name already exists for this part" msgstr "" -#: part/models.py:2310 templates/js/translated/part.js:1467 -#: templates/js/translated/stock.js:858 +#: part/models.py:2310 templates/js/translated/part.js:1648 +#: templates/js/translated/stock.js:940 msgid "Test Name" msgstr "" @@ -4018,7 +4043,7 @@ msgstr "" msgid "Enter description for this test" msgstr "" -#: part/models.py:2322 templates/js/translated/part.js:1476 +#: part/models.py:2322 templates/js/translated/part.js:1657 #: templates/js/translated/table_filters.js:276 msgid "Required" msgstr "" @@ -4027,7 +4052,7 @@ msgstr "" msgid "Is this test required to pass?" msgstr "" -#: part/models.py:2328 templates/js/translated/part.js:1484 +#: part/models.py:2328 templates/js/translated/part.js:1665 msgid "Requires Value" msgstr "" @@ -4035,7 +4060,7 @@ msgstr "" msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:2334 templates/js/translated/part.js:1491 +#: part/models.py:2334 templates/js/translated/part.js:1672 msgid "Requires Attachment" msgstr "" @@ -4150,7 +4175,7 @@ msgstr "" msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:2686 stock/models.py:371 +#: part/models.py:2686 stock/models.py:361 msgid "Quantity must be integer value for trackable parts" msgstr "" @@ -4213,7 +4238,7 @@ msgstr "" msgid "The BOM for %(part)s has not been validated." msgstr "" -#: part/templates/part/bom.html:30 part/templates/part/detail.html:357 +#: part/templates/part/bom.html:30 part/templates/part/detail.html:250 msgid "BOM actions" msgstr "" @@ -4298,68 +4323,64 @@ msgstr "" msgid "New Category" msgstr "" -#: part/templates/part/category.html:67 -msgid "Top level part category" -msgstr "" - -#: part/templates/part/category.html:79 +#: part/templates/part/category.html:76 part/templates/part/category.html:89 msgid "Category Path" msgstr "" -#: part/templates/part/category.html:84 -msgid "Category Description" +#: part/templates/part/category.html:90 +msgid "Top level part category" msgstr "" -#: part/templates/part/category.html:103 part/templates/part/category.html:194 +#: part/templates/part/category.html:110 part/templates/part/category.html:201 #: part/templates/part/category_sidebar.html:7 msgid "Subcategories" msgstr "" -#: part/templates/part/category.html:108 +#: part/templates/part/category.html:115 msgid "Parts (Including subcategories)" msgstr "" -#: part/templates/part/category.html:145 +#: part/templates/part/category.html:152 msgid "Export Part Data" msgstr "" -#: part/templates/part/category.html:146 part/templates/part/category.html:170 +#: part/templates/part/category.html:153 part/templates/part/category.html:177 msgid "Export" msgstr "" -#: part/templates/part/category.html:149 +#: part/templates/part/category.html:156 msgid "Create new part" msgstr "" -#: part/templates/part/category.html:150 templates/js/translated/bom.js:40 +#: part/templates/part/category.html:157 templates/js/translated/bom.js:40 msgid "New Part" msgstr "" -#: part/templates/part/category.html:164 +#: part/templates/part/category.html:171 msgid "Set category" msgstr "" -#: part/templates/part/category.html:164 +#: part/templates/part/category.html:171 msgid "Set Category" msgstr "" -#: part/templates/part/category.html:168 +#: part/templates/part/category.html:175 msgid "Print Labels" msgstr "" -#: part/templates/part/category.html:170 +#: part/templates/part/category.html:177 msgid "Export Data" msgstr "" -#: part/templates/part/category.html:184 +#: part/templates/part/category.html:191 msgid "Part Parameters" msgstr "" -#: part/templates/part/category.html:261 +#: part/templates/part/category.html:268 msgid "Create Part Category" msgstr "" -#: part/templates/part/category.html:288 +#: part/templates/part/category.html:295 msgid "Create Part" msgstr "" @@ -4402,7 +4423,7 @@ msgstr "" msgid "Import Parts" msgstr "" -#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:366 +#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:373 msgid "Duplicate Part" msgstr "" @@ -4426,167 +4447,155 @@ msgstr "" msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)" msgstr "" -#: part/templates/part/detail.html:16 -msgid "Part Details" -msgstr "" - -#: part/templates/part/detail.html:66 -msgid "Minimum stock level" -msgstr "" - -#: part/templates/part/detail.html:97 -msgid "Latest Serial Number" -msgstr "" - -#: part/templates/part/detail.html:124 +#: part/templates/part/detail.html:17 msgid "Part Stock" msgstr "" -#: part/templates/part/detail.html:136 +#: part/templates/part/detail.html:29 #, python-format msgid "Showing stock for all variants of %(full_name)s" msgstr "" -#: part/templates/part/detail.html:146 +#: part/templates/part/detail.html:39 msgid "Part Test Templates" msgstr "" -#: part/templates/part/detail.html:151 +#: part/templates/part/detail.html:44 msgid "Add Test Template" msgstr "" -#: part/templates/part/detail.html:208 +#: part/templates/part/detail.html:101 msgid "Sales Order Allocations" msgstr "" -#: part/templates/part/detail.html:249 +#: part/templates/part/detail.html:142 msgid "Part Variants" msgstr "" -#: part/templates/part/detail.html:253 +#: part/templates/part/detail.html:146 msgid "Create new variant" msgstr "" -#: part/templates/part/detail.html:254 +#: part/templates/part/detail.html:147 msgid "New Variant" msgstr "" -#: part/templates/part/detail.html:281 +#: part/templates/part/detail.html:174 msgid "Add new parameter" msgstr "" -#: part/templates/part/detail.html:315 part/templates/part/part_sidebar.html:47 +#: part/templates/part/detail.html:208 part/templates/part/part_sidebar.html:45 msgid "Related Parts" msgstr "" -#: part/templates/part/detail.html:319 part/templates/part/detail.html:320 +#: part/templates/part/detail.html:212 part/templates/part/detail.html:213 msgid "Add Related" msgstr "" -#: part/templates/part/detail.html:340 part/templates/part/part_sidebar.html:19 +#: part/templates/part/detail.html:233 part/templates/part/part_sidebar.html:17 msgid "Bill of Materials" msgstr "" -#: part/templates/part/detail.html:345 +#: part/templates/part/detail.html:238 msgid "Export actions" msgstr "" -#: part/templates/part/detail.html:349 +#: part/templates/part/detail.html:242 msgid "Export BOM" msgstr "" -#: part/templates/part/detail.html:351 +#: part/templates/part/detail.html:244 msgid "Print BOM Report" msgstr "" -#: part/templates/part/detail.html:361 +#: part/templates/part/detail.html:254 msgid "Upload BOM" msgstr "" -#: part/templates/part/detail.html:363 templates/js/translated/part.js:267 +#: part/templates/part/detail.html:256 templates/js/translated/part.js:270 msgid "Copy BOM" msgstr "" -#: part/templates/part/detail.html:365 part/views.py:755 +#: part/templates/part/detail.html:258 part/views.py:755 msgid "Validate BOM" msgstr "" -#: part/templates/part/detail.html:370 +#: part/templates/part/detail.html:263 msgid "New BOM Item" msgstr "" -#: part/templates/part/detail.html:371 +#: part/templates/part/detail.html:264 msgid "Add BOM Item" msgstr "" -#: part/templates/part/detail.html:384 +#: part/templates/part/detail.html:277 msgid "Assemblies" msgstr "" -#: part/templates/part/detail.html:401 +#: part/templates/part/detail.html:294 msgid "Part Builds" msgstr "" -#: part/templates/part/detail.html:426 +#: part/templates/part/detail.html:319 msgid "Build Order Allocations" msgstr "" -#: part/templates/part/detail.html:436 +#: part/templates/part/detail.html:329 msgid "Part Suppliers" msgstr "" -#: part/templates/part/detail.html:463 +#: part/templates/part/detail.html:356 msgid "Part Manufacturers" msgstr "" -#: part/templates/part/detail.html:479 +#: part/templates/part/detail.html:372 msgid "Delete manufacturer parts" msgstr "" -#: part/templates/part/detail.html:660 +#: part/templates/part/detail.html:553 msgid "Delete selected BOM items?" msgstr "" -#: part/templates/part/detail.html:661 +#: part/templates/part/detail.html:554 msgid "All selected BOM items will be deleted" msgstr "" -#: part/templates/part/detail.html:712 +#: part/templates/part/detail.html:605 msgid "Create BOM Item" msgstr "" -#: part/templates/part/detail.html:764 +#: part/templates/part/detail.html:657 msgid "Related Part" msgstr "" -#: part/templates/part/detail.html:772 +#: part/templates/part/detail.html:665 msgid "Add Related Part" msgstr "" -#: part/templates/part/detail.html:869 +#: part/templates/part/detail.html:760 msgid "Add Test Result Template" msgstr "" -#: part/templates/part/detail.html:926 +#: part/templates/part/detail.html:817 msgid "Edit Part Notes" msgstr "" -#: part/templates/part/detail.html:1039 +#: part/templates/part/detail.html:930 #, python-format msgid "Purchase Unit Price - %(currency)s" msgstr "" -#: part/templates/part/detail.html:1051 +#: part/templates/part/detail.html:942 #, python-format msgid "Unit Price-Cost Difference - %(currency)s" msgstr "" -#: part/templates/part/detail.html:1063 +#: part/templates/part/detail.html:954 #, python-format msgid "Supplier Unit Cost - %(currency)s" msgstr "" -#: part/templates/part/detail.html:1152 +#: part/templates/part/detail.html:1043 #, python-format msgid "Unit Price - %(currency)s" msgstr "" @@ -4668,86 +4677,108 @@ msgstr "" msgid "Delete part" msgstr "" -#: part/templates/part/part_base.html:109 +#: part/templates/part/part_base.html:112 msgid "Part is a template part (variants can be made from this part)" msgstr "" -#: part/templates/part/part_base.html:113 +#: part/templates/part/part_base.html:116 msgid "Part can be assembled from other parts" msgstr "" -#: part/templates/part/part_base.html:117 +#: part/templates/part/part_base.html:120 msgid "Part can be used in assemblies" msgstr "" -#: part/templates/part/part_base.html:121 +#: part/templates/part/part_base.html:124 msgid "Part stock is tracked by serial number" msgstr "" -#: part/templates/part/part_base.html:125 +#: part/templates/part/part_base.html:128 msgid "Part can be purchased from external suppliers" msgstr "" -#: part/templates/part/part_base.html:129 +#: part/templates/part/part_base.html:132 msgid "Part can be sold to customers" msgstr "" -#: part/templates/part/part_base.html:135 -#: part/templates/part/part_base.html:143 +#: part/templates/part/part_base.html:138 +#: part/templates/part/part_base.html:146 msgid "Part is virtual (not a physical part)" msgstr "" -#: part/templates/part/part_base.html:136 +#: part/templates/part/part_base.html:139 #: templates/js/translated/company.js:505 #: templates/js/translated/company.js:762 #: templates/js/translated/model_renderers.js:175 -#: templates/js/translated/part.js:465 templates/js/translated/part.js:542 +#: templates/js/translated/part.js:472 templates/js/translated/part.js:549 msgid "Inactive" msgstr "" -#: part/templates/part/part_base.html:155 +#: part/templates/part/part_base.html:156 +#: part/templates/part/part_base.html:579 +msgid "Show Part Details" +msgstr "" + +#: part/templates/part/part_base.html:173 #, python-format msgid "This part is a variant of %(link)s" msgstr "" -#: part/templates/part/part_base.html:172 templates/js/translated/order.js:1546 +#: part/templates/part/part_base.html:190 templates/js/translated/order.js:1545 #: templates/js/translated/table_filters.js:188 msgid "In Stock" msgstr "" -#: part/templates/part/part_base.html:185 templates/js/translated/part.js:1054 +#: part/templates/part/part_base.html:203 templates/js/translated/part.js:1235 msgid "On Order" msgstr "" -#: part/templates/part/part_base.html:192 templates/InvenTree/index.html:178 +#: part/templates/part/part_base.html:210 templates/InvenTree/index.html:178 msgid "Required for Build Orders" msgstr "" -#: part/templates/part/part_base.html:199 +#: part/templates/part/part_base.html:217 msgid "Required for Sales Orders" msgstr "" -#: part/templates/part/part_base.html:206 +#: part/templates/part/part_base.html:224 msgid "Allocated to Orders" msgstr "" -#: part/templates/part/part_base.html:221 templates/js/translated/bom.js:566 +#: part/templates/part/part_base.html:239 templates/js/translated/bom.js:566 msgid "Can Build" msgstr "" -#: part/templates/part/part_base.html:227 templates/js/translated/part.js:885 -#: templates/js/translated/part.js:1058 +#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1066 +#: templates/js/translated/part.js:1239 msgid "Building" msgstr "" -#: part/templates/part/part_base.html:320 part/templates/part/prices.html:144 +#: part/templates/part/part_base.html:295 +msgid "Minimum stock level" +msgstr "" + +#: part/templates/part/part_base.html:324 +msgid "Latest Serial Number" +msgstr "" + +#: part/templates/part/part_base.html:328 +#: stock/templates/stock/item_base.html:159 +msgid "Search for serial number" +msgstr "" + +#: part/templates/part/part_base.html:449 part/templates/part/prices.html:144 msgid "Calculate" msgstr "" -#: part/templates/part/part_base.html:363 +#: part/templates/part/part_base.html:492 msgid "No matching images found" msgstr "" +#: part/templates/part/part_base.html:573 +msgid "Hide Part Details" +msgstr "" + #: part/templates/part/part_pricing.html:22 part/templates/part/prices.html:21 msgid "Supplier Pricing" msgstr "" @@ -4805,20 +4836,15 @@ msgstr "" msgid "No pricing information is available for this part." msgstr "" -#: part/templates/part/part_sidebar.html:8 -#: templates/js/translated/stock.js:1949 -msgid "Details" -msgstr "" - -#: part/templates/part/part_sidebar.html:13 +#: part/templates/part/part_sidebar.html:11 msgid "Variants" msgstr "" -#: part/templates/part/part_sidebar.html:27 +#: part/templates/part/part_sidebar.html:25 msgid "Used In" msgstr "" -#: part/templates/part/part_sidebar.html:43 +#: part/templates/part/part_sidebar.html:41 msgid "Test Templates" msgstr "" @@ -4934,8 +4960,8 @@ msgid "Set category for the following parts" msgstr "" #: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:476 -#: templates/js/translated/part.js:429 templates/js/translated/part.js:875 -#: templates/js/translated/part.js:1062 +#: templates/js/translated/part.js:436 templates/js/translated/part.js:1056 +#: templates/js/translated/part.js:1243 msgid "No Stock" msgstr "" @@ -5037,7 +5063,7 @@ msgstr "" msgid "Delete Part Parameter Template" msgstr "" -#: part/views.py:1489 templates/js/translated/part.js:310 +#: part/views.py:1489 templates/js/translated/part.js:313 msgid "Edit Part Category" msgstr "" @@ -5171,11 +5197,12 @@ msgid "Stock Item Test Report" msgstr "" #: report/templates/report/inventree_test_report_base.html:79 -#: stock/models.py:530 stock/templates/stock/item_base.html:238 +#: stock/models.py:520 stock/templates/stock/item_base.html:149 #: templates/js/translated/build.js:233 templates/js/translated/build.js:637 #: templates/js/translated/build.js:1013 #: templates/js/translated/model_renderers.js:95 -#: templates/js/translated/order.js:1288 templates/js/translated/order.js:1377 +#: templates/js/translated/order.js:1287 templates/js/translated/order.js:1376 +#: templates/js/translated/stock.js:410 msgid "Serial Number" msgstr "" @@ -5184,17 +5211,17 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:93 -#: stock/models.py:1855 +#: stock/models.py:1845 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:94 -#: stock/models.py:1861 +#: stock/models.py:1851 msgid "Result" msgstr "" #: report/templates/report/inventree_test_report_base.html:97 -#: templates/js/translated/order.js:685 templates/js/translated/stock.js:1917 +#: templates/js/translated/order.js:684 templates/js/translated/stock.js:1999 msgid "Date" msgstr "" @@ -5212,7 +5239,7 @@ msgid "Installed Items" msgstr "" #: report/templates/report/inventree_test_report_base.html:137 -#: templates/js/translated/stock.js:2177 +#: templates/js/translated/stock.js:2259 msgid "Serial" msgstr "" @@ -5220,9 +5247,9 @@ msgstr "" msgid "Quantity is required" msgstr "" -#: stock/forms.py:91 stock/forms.py:265 stock/models.py:587 -#: stock/templates/stock/item_base.html:382 -#: templates/js/translated/stock.js:1276 +#: stock/forms.py:91 stock/forms.py:265 stock/models.py:577 +#: stock/templates/stock/item_base.html:186 +#: templates/js/translated/stock.js:1358 msgid "Expiry Date" msgstr "" @@ -5270,241 +5297,241 @@ msgstr "" msgid "Confirm removal of installed stock items" msgstr "" -#: stock/models.py:60 stock/models.py:624 -#: stock/templates/stock/item_base.html:422 +#: stock/models.py:60 stock/models.py:614 +#: stock/templates/stock/item_base.html:417 msgid "Owner" msgstr "" -#: stock/models.py:61 stock/models.py:625 +#: stock/models.py:61 stock/models.py:615 msgid "Select Owner" msgstr "" -#: stock/models.py:352 +#: stock/models.py:342 msgid "StockItem with this serial number already exists" msgstr "" -#: stock/models.py:388 +#: stock/models.py:378 #, python-brace-format msgid "Part type ('{pf}') must be {pe}" msgstr "" -#: stock/models.py:398 stock/models.py:407 +#: stock/models.py:388 stock/models.py:397 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:399 +#: stock/models.py:389 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:421 +#: stock/models.py:411 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:427 +#: stock/models.py:417 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:434 +#: stock/models.py:424 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:476 +#: stock/models.py:466 msgid "Parent Stock Item" msgstr "" -#: stock/models.py:485 +#: stock/models.py:475 msgid "Base part" msgstr "" -#: stock/models.py:493 +#: stock/models.py:483 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:498 stock/templates/stock/location.html:12 +#: stock/models.py:488 stock/templates/stock/location.html:12 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" msgstr "" -#: stock/models.py:501 +#: stock/models.py:491 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:508 +#: stock/models.py:498 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:513 stock/templates/stock/item_base.html:271 +#: stock/models.py:503 stock/templates/stock/item_base.html:299 msgid "Installed In" msgstr "" -#: stock/models.py:516 +#: stock/models.py:506 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:532 +#: stock/models.py:522 msgid "Serial number for this item" msgstr "" -#: stock/models.py:546 +#: stock/models.py:536 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:550 +#: stock/models.py:540 msgid "Stock Quantity" msgstr "" -#: stock/models.py:559 +#: stock/models.py:549 msgid "Source Build" msgstr "" -#: stock/models.py:561 +#: stock/models.py:551 msgid "Build for this stock item" msgstr "" -#: stock/models.py:572 +#: stock/models.py:562 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:575 +#: stock/models.py:565 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:581 +#: stock/models.py:571 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:588 +#: stock/models.py:578 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:601 +#: stock/models.py:591 msgid "Delete on deplete" msgstr "" -#: stock/models.py:601 +#: stock/models.py:591 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:611 stock/templates/stock/item.html:111 +#: stock/models.py:601 stock/templates/stock/item.html:111 msgid "Stock Item Notes" msgstr "" -#: stock/models.py:620 +#: stock/models.py:610 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:630 +#: stock/models.py:620 msgid "Scheduled for deletion" msgstr "" -#: stock/models.py:631 +#: stock/models.py:621 msgid "This StockItem will be deleted by the background worker" msgstr "" -#: stock/models.py:1094 +#: stock/models.py:1084 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1100 +#: stock/models.py:1090 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1106 +#: stock/models.py:1096 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({n})" msgstr "" -#: stock/models.py:1109 +#: stock/models.py:1099 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1112 +#: stock/models.py:1102 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1119 +#: stock/models.py:1109 #, python-brace-format msgid "Serial numbers already exist: {exists}" msgstr "" -#: stock/models.py:1277 +#: stock/models.py:1267 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:1775 +#: stock/models.py:1765 msgid "Entry notes" msgstr "" -#: stock/models.py:1832 +#: stock/models.py:1822 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:1838 +#: stock/models.py:1828 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:1856 +#: stock/models.py:1846 msgid "Test name" msgstr "" -#: stock/models.py:1862 templates/js/translated/table_filters.js:266 +#: stock/models.py:1852 templates/js/translated/table_filters.js:266 msgid "Test result" msgstr "" -#: stock/models.py:1868 +#: stock/models.py:1858 msgid "Test output value" msgstr "" -#: stock/models.py:1875 +#: stock/models.py:1865 msgid "Test result attachment" msgstr "" -#: stock/models.py:1881 +#: stock/models.py:1871 msgid "Test notes" msgstr "" -#: stock/serializers.py:166 +#: stock/serializers.py:171 msgid "Purchase price of this stock item" msgstr "" -#: stock/serializers.py:173 +#: stock/serializers.py:178 msgid "Purchase currency of this stock item" msgstr "" -#: stock/serializers.py:287 +#: stock/serializers.py:292 msgid "Enter number of stock items to serialize" msgstr "" -#: stock/serializers.py:302 +#: stock/serializers.py:307 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "" -#: stock/serializers.py:308 +#: stock/serializers.py:313 msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:319 stock/serializers.py:686 +#: stock/serializers.py:324 stock/serializers.py:691 msgid "Destination stock location" msgstr "" -#: stock/serializers.py:326 +#: stock/serializers.py:331 msgid "Optional note field" msgstr "" -#: stock/serializers.py:339 +#: stock/serializers.py:344 msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:556 +#: stock/serializers.py:561 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:584 +#: stock/serializers.py:589 msgid "Stock transaction notes" msgstr "" -#: stock/serializers.py:594 +#: stock/serializers.py:599 msgid "A list of stock items must be provided" msgstr "" @@ -5629,125 +5656,131 @@ msgstr "" msgid "Install" msgstr "" -#: stock/templates/stock/item_base.html:106 +#: stock/templates/stock/item_base.html:108 msgid "Convert to variant" msgstr "" -#: stock/templates/stock/item_base.html:109 +#: stock/templates/stock/item_base.html:111 msgid "Duplicate stock item" msgstr "" -#: stock/templates/stock/item_base.html:111 +#: stock/templates/stock/item_base.html:113 msgid "Edit stock item" msgstr "" -#: stock/templates/stock/item_base.html:114 +#: stock/templates/stock/item_base.html:116 msgid "Delete stock item" msgstr "" -#: stock/templates/stock/item_base.html:136 -#: stock/templates/stock/item_base.html:386 -#: templates/js/translated/table_filters.js:247 -msgid "Expired" +#: stock/templates/stock/item_base.html:154 +msgid "previous page" msgstr "" -#: stock/templates/stock/item_base.html:146 -#: stock/templates/stock/item_base.html:388 -#: templates/js/translated/table_filters.js:253 -msgid "Stale" +#: stock/templates/stock/item_base.html:154 +msgid "Navigate to previous serial number" msgstr "" -#: stock/templates/stock/item_base.html:161 -msgid "You are not in the list of owners of this item. This stock item cannot be edited." +#: stock/templates/stock/item_base.html:163 +msgid "next page" msgstr "" -#: stock/templates/stock/item_base.html:168 -msgid "This stock item is in production and cannot be edited." -msgstr "" - -#: stock/templates/stock/item_base.html:169 -msgid "Edit the stock item from the build view." -msgstr "" - -#: stock/templates/stock/item_base.html:182 -msgid "This stock item has not passed all required tests" +#: stock/templates/stock/item_base.html:163 +msgid "Navigate to next serial number" msgstr "" #: stock/templates/stock/item_base.html:190 #, python-format -msgid "This stock item is allocated to Sales Order %(link)s (Quantity: %(qty)s)" -msgstr "" - -#: stock/templates/stock/item_base.html:198 -#, python-format -msgid "This stock item is allocated to Build %(link)s (Quantity: %(qty)s)" -msgstr "" - -#: stock/templates/stock/item_base.html:204 -msgid "This stock item is serialized - it has a unique serial number and the quantity cannot be adjusted." -msgstr "" - -#: stock/templates/stock/item_base.html:208 -msgid "This stock item cannot be deleted as it has child items" -msgstr "" - -#: stock/templates/stock/item_base.html:212 -msgid "This stock item will be automatically deleted when all stock is depleted." -msgstr "" - -#: stock/templates/stock/item_base.html:241 -msgid "previous page" -msgstr "" - -#: stock/templates/stock/item_base.html:247 -msgid "next page" -msgstr "" - -#: stock/templates/stock/item_base.html:290 -#: templates/js/translated/build.js:1035 -msgid "No location set" -msgstr "" - -#: stock/templates/stock/item_base.html:297 -msgid "Barcode Identifier" -msgstr "" - -#: stock/templates/stock/item_base.html:339 -msgid "Parent Item" -msgstr "" - -#: stock/templates/stock/item_base.html:357 -msgid "No manufacturer set" -msgstr "" - -#: stock/templates/stock/item_base.html:386 -#, python-format msgid "This StockItem expired on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:388 +#: stock/templates/stock/item_base.html:190 +#: templates/js/translated/table_filters.js:247 +msgid "Expired" +msgstr "" + +#: stock/templates/stock/item_base.html:192 #, python-format msgid "This StockItem expires on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:395 -#: templates/js/translated/stock.js:1289 +#: stock/templates/stock/item_base.html:192 +#: templates/js/translated/table_filters.js:253 +msgid "Stale" +msgstr "" + +#: stock/templates/stock/item_base.html:199 +#: templates/js/translated/stock.js:1371 msgid "Last Updated" msgstr "" -#: stock/templates/stock/item_base.html:400 +#: stock/templates/stock/item_base.html:204 msgid "Last Stocktake" msgstr "" -#: stock/templates/stock/item_base.html:404 +#: stock/templates/stock/item_base.html:208 msgid "No stocktake performed" msgstr "" -#: stock/templates/stock/item_base.html:415 +#: stock/templates/stock/item_base.html:226 +msgid "You are not in the list of owners of this item. This stock item cannot be edited." +msgstr "" + +#: stock/templates/stock/item_base.html:233 +msgid "This stock item is in production and cannot be edited." +msgstr "" + +#: stock/templates/stock/item_base.html:234 +msgid "Edit the stock item from the build view." +msgstr "" + +#: stock/templates/stock/item_base.html:247 +msgid "This stock item has not passed all required tests" +msgstr "" + +#: stock/templates/stock/item_base.html:255 +#, python-format +msgid "This stock item is allocated to Sales Order %(link)s (Quantity: %(qty)s)" +msgstr "" + +#: stock/templates/stock/item_base.html:263 +#, python-format +msgid "This stock item is allocated to Build %(link)s (Quantity: %(qty)s)" +msgstr "" + +#: stock/templates/stock/item_base.html:269 +msgid "This stock item is serialized - it has a unique serial number and the quantity cannot be adjusted." +msgstr "" + +#: stock/templates/stock/item_base.html:273 +msgid "This stock item cannot be deleted as it has child items" +msgstr "" + +#: stock/templates/stock/item_base.html:277 +msgid "This stock item will be automatically deleted when all stock is depleted." +msgstr "" + +#: stock/templates/stock/item_base.html:318 +#: templates/js/translated/build.js:1035 +msgid "No location set" +msgstr "" + +#: stock/templates/stock/item_base.html:325 +msgid "Barcode Identifier" +msgstr "" + +#: stock/templates/stock/item_base.html:367 +msgid "Parent Item" +msgstr "" + +#: stock/templates/stock/item_base.html:385 +msgid "No manufacturer set" +msgstr "" + +#: stock/templates/stock/item_base.html:410 msgid "Tests" msgstr "" -#: stock/templates/stock/item_base.html:505 +#: stock/templates/stock/item_base.html:500 msgid "Edit Stock Status" msgstr "" @@ -5825,30 +5858,35 @@ msgstr "" msgid "New Location" msgstr "" -#: stock/templates/stock/location.html:86 +#: stock/templates/stock/location.html:95 +#: stock/templates/stock/location.html:101 +msgid "Location Path" +msgstr "" + +#: stock/templates/stock/location.html:102 msgid "Top level stock location" msgstr "" -#: stock/templates/stock/location.html:95 +#: stock/templates/stock/location.html:115 msgid "You are not in the list of owners of this location. This stock location cannot be edited." msgstr "" -#: stock/templates/stock/location.html:113 -#: stock/templates/stock/location.html:160 +#: stock/templates/stock/location.html:128 +#: stock/templates/stock/location.html:175 #: stock/templates/stock/location_sidebar.html:5 msgid "Sublocations" msgstr "" -#: stock/templates/stock/location.html:127 templates/InvenTree/search.html:170 +#: stock/templates/stock/location.html:142 templates/InvenTree/search.html:170 #: templates/stats.html:97 users/models.py:42 msgid "Stock Locations" msgstr "" -#: stock/templates/stock/location.html:167 templates/stock_table.html:30 +#: stock/templates/stock/location.html:182 templates/stock_table.html:30 msgid "Printing Actions" msgstr "" -#: stock/templates/stock/location.html:171 templates/stock_table.html:34 +#: stock/templates/stock/location.html:186 templates/stock_table.html:34 msgid "Print labels" msgstr "" @@ -5942,7 +5980,7 @@ msgstr "" msgid "Uninstall Stock Items" msgstr "" -#: stock/views.py:760 templates/js/translated/stock.js:648 +#: stock/views.py:760 templates/js/translated/stock.js:730 msgid "Confirm stock adjustment" msgstr "" @@ -5950,7 +5988,7 @@ msgstr "" msgid "Uninstalled stock items" msgstr "" -#: stock/views.py:793 templates/js/translated/stock.js:318 +#: stock/views.py:793 templates/js/translated/stock.js:319 msgid "Edit Stock Item" msgstr "" @@ -5962,7 +6000,7 @@ msgstr "" msgid "Create new Stock Item" msgstr "" -#: stock/views.py:1186 templates/js/translated/stock.js:298 +#: stock/views.py:1186 templates/js/translated/stock.js:299 msgid "Duplicate Stock Item" msgstr "" @@ -6868,7 +6906,7 @@ msgstr "" msgid "Unlink" msgstr "" -#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:600 +#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:682 msgid "Remove stock item" msgstr "" @@ -6963,7 +7001,7 @@ msgid "View BOM" msgstr "" #: templates/js/translated/bom.js:608 templates/js/translated/build.js:1183 -#: templates/js/translated/order.js:1320 +#: templates/js/translated/order.js:1319 msgid "Actions" msgstr "" @@ -7055,7 +7093,7 @@ msgstr "" msgid "No build order allocations found" msgstr "" -#: templates/js/translated/build.js:424 templates/js/translated/order.js:1194 +#: templates/js/translated/build.js:424 templates/js/translated/order.js:1193 msgid "Location not specified" msgstr "" @@ -7064,12 +7102,12 @@ msgid "No active build outputs found" msgstr "" #: templates/js/translated/build.js:1052 templates/js/translated/build.js:1760 -#: templates/js/translated/order.js:1327 +#: templates/js/translated/order.js:1326 msgid "Edit stock allocation" msgstr "" #: templates/js/translated/build.js:1054 templates/js/translated/build.js:1761 -#: templates/js/translated/order.js:1328 +#: templates/js/translated/order.js:1327 msgid "Delete stock allocation" msgstr "" @@ -7090,11 +7128,11 @@ msgid "Quantity Per" msgstr "" #: templates/js/translated/build.js:1134 templates/js/translated/build.js:1360 -#: templates/js/translated/build.js:1756 templates/js/translated/order.js:1557 +#: templates/js/translated/build.js:1756 templates/js/translated/order.js:1556 msgid "Allocated" msgstr "" -#: templates/js/translated/build.js:1190 templates/js/translated/order.js:1611 +#: templates/js/translated/build.js:1190 templates/js/translated/order.js:1610 msgid "Build stock" msgstr "" @@ -7102,7 +7140,7 @@ msgstr "" msgid "Order stock" msgstr "" -#: templates/js/translated/build.js:1197 templates/js/translated/order.js:1604 +#: templates/js/translated/build.js:1197 templates/js/translated/order.js:1603 msgid "Allocate stock" msgstr "" @@ -7143,9 +7181,9 @@ msgstr "" msgid "No builds matching query" msgstr "" -#: templates/js/translated/build.js:1593 templates/js/translated/part.js:966 -#: templates/js/translated/part.js:1377 templates/js/translated/stock.js:1094 -#: templates/js/translated/stock.js:1871 +#: templates/js/translated/build.js:1593 templates/js/translated/part.js:1147 +#: templates/js/translated/part.js:1558 templates/js/translated/stock.js:1176 +#: templates/js/translated/stock.js:1953 msgid "Select" msgstr "" @@ -7153,7 +7191,7 @@ msgstr "" msgid "Build order is overdue" msgstr "" -#: templates/js/translated/build.js:1674 templates/js/translated/stock.js:2090 +#: templates/js/translated/build.js:1674 templates/js/translated/stock.js:2172 msgid "No user information" msgstr "" @@ -7197,10 +7235,6 @@ msgstr "" msgid "Delete Supplier Part" msgstr "" -#: templates/js/translated/company.js:265 -msgid "Edit Company" -msgstr "" - #: templates/js/translated/company.js:286 msgid "Add new Company" msgstr "" @@ -7230,34 +7264,34 @@ msgid "No manufacturer parts found" msgstr "" #: templates/js/translated/company.js:497 -#: templates/js/translated/company.js:754 templates/js/translated/part.js:449 -#: templates/js/translated/part.js:534 +#: templates/js/translated/company.js:754 templates/js/translated/part.js:456 +#: templates/js/translated/part.js:541 msgid "Template part" msgstr "" #: templates/js/translated/company.js:501 -#: templates/js/translated/company.js:758 templates/js/translated/part.js:453 -#: templates/js/translated/part.js:538 +#: templates/js/translated/company.js:758 templates/js/translated/part.js:460 +#: templates/js/translated/part.js:545 msgid "Assembled part" msgstr "" -#: templates/js/translated/company.js:628 templates/js/translated/part.js:626 +#: templates/js/translated/company.js:628 templates/js/translated/part.js:633 msgid "No parameters found" msgstr "" -#: templates/js/translated/company.js:665 templates/js/translated/part.js:668 +#: templates/js/translated/company.js:665 templates/js/translated/part.js:675 msgid "Edit parameter" msgstr "" -#: templates/js/translated/company.js:666 templates/js/translated/part.js:669 +#: templates/js/translated/company.js:666 templates/js/translated/part.js:676 msgid "Delete parameter" msgstr "" -#: templates/js/translated/company.js:685 templates/js/translated/part.js:686 +#: templates/js/translated/company.js:685 templates/js/translated/part.js:693 msgid "Edit Parameter" msgstr "" -#: templates/js/translated/company.js:696 templates/js/translated/part.js:698 +#: templates/js/translated/company.js:696 templates/js/translated/part.js:705 msgid "Delete Parameter" msgstr "" @@ -7346,7 +7380,7 @@ msgid "NO" msgstr "" #: templates/js/translated/label.js:29 templates/js/translated/report.js:118 -#: templates/js/translated/stock.js:624 +#: templates/js/translated/stock.js:706 msgid "Select Stock Items" msgstr "" @@ -7502,11 +7536,11 @@ msgstr "" msgid "Export Order" msgstr "" -#: templates/js/translated/order.js:211 templates/js/translated/stock.js:423 +#: templates/js/translated/order.js:211 templates/js/translated/stock.js:505 msgid "Format" msgstr "" -#: templates/js/translated/order.js:212 templates/js/translated/stock.js:424 +#: templates/js/translated/order.js:212 templates/js/translated/stock.js:506 msgid "Select file format" msgstr "" @@ -7522,7 +7556,7 @@ msgstr "" msgid "Quantity to receive" msgstr "" -#: templates/js/translated/order.js:360 templates/js/translated/stock.js:1673 +#: templates/js/translated/order.js:360 templates/js/translated/stock.js:1755 msgid "Stock Status" msgstr "" @@ -7546,321 +7580,321 @@ msgstr "" msgid "Receive Purchase Order Items" msgstr "" -#: templates/js/translated/order.js:627 +#: templates/js/translated/order.js:627 templates/js/translated/part.js:746 msgid "No purchase orders found" msgstr "" -#: templates/js/translated/order.js:652 templates/js/translated/order.js:1063 +#: templates/js/translated/order.js:659 templates/js/translated/order.js:1062 msgid "Order is overdue" msgstr "" -#: templates/js/translated/order.js:772 templates/js/translated/order.js:1646 +#: templates/js/translated/order.js:771 templates/js/translated/order.js:1645 msgid "Edit Line Item" msgstr "" -#: templates/js/translated/order.js:784 templates/js/translated/order.js:1657 +#: templates/js/translated/order.js:783 templates/js/translated/order.js:1656 msgid "Delete Line Item" msgstr "" -#: templates/js/translated/order.js:823 +#: templates/js/translated/order.js:822 msgid "No line items found" msgstr "" -#: templates/js/translated/order.js:850 templates/js/translated/order.js:1467 +#: templates/js/translated/order.js:849 templates/js/translated/order.js:1466 msgid "Total" msgstr "" -#: templates/js/translated/order.js:904 templates/js/translated/order.js:1492 -#: templates/js/translated/part.js:1594 templates/js/translated/part.js:1805 +#: templates/js/translated/order.js:903 templates/js/translated/order.js:1491 +#: templates/js/translated/part.js:1775 templates/js/translated/part.js:1986 msgid "Unit Price" msgstr "" -#: templates/js/translated/order.js:919 templates/js/translated/order.js:1508 +#: templates/js/translated/order.js:918 templates/js/translated/order.js:1507 msgid "Total Price" msgstr "" -#: templates/js/translated/order.js:997 templates/js/translated/order.js:1617 +#: templates/js/translated/order.js:996 templates/js/translated/order.js:1616 msgid "Edit line item" msgstr "" -#: templates/js/translated/order.js:998 +#: templates/js/translated/order.js:997 msgid "Delete line item" msgstr "" -#: templates/js/translated/order.js:1002 +#: templates/js/translated/order.js:1001 templates/js/translated/part.js:878 msgid "Receive line item" msgstr "" -#: templates/js/translated/order.js:1039 +#: templates/js/translated/order.js:1038 msgid "No sales orders found" msgstr "" -#: templates/js/translated/order.js:1077 +#: templates/js/translated/order.js:1076 msgid "Invalid Customer" msgstr "" -#: templates/js/translated/order.js:1155 +#: templates/js/translated/order.js:1154 msgid "No sales order allocations found" msgstr "" -#: templates/js/translated/order.js:1248 +#: templates/js/translated/order.js:1247 msgid "Edit Stock Allocation" msgstr "" -#: templates/js/translated/order.js:1265 +#: templates/js/translated/order.js:1264 msgid "Confirm Delete Operation" msgstr "" -#: templates/js/translated/order.js:1266 +#: templates/js/translated/order.js:1265 msgid "Delete Stock Allocation" msgstr "" -#: templates/js/translated/order.js:1308 +#: templates/js/translated/order.js:1307 msgid "Stock location not specified" msgstr "" -#: templates/js/translated/order.js:1557 +#: templates/js/translated/order.js:1556 msgid "Fulfilled" msgstr "" -#: templates/js/translated/order.js:1601 +#: templates/js/translated/order.js:1600 msgid "Allocate serial numbers" msgstr "" -#: templates/js/translated/order.js:1607 +#: templates/js/translated/order.js:1606 msgid "Purchase stock" msgstr "" -#: templates/js/translated/order.js:1614 templates/js/translated/order.js:1793 +#: templates/js/translated/order.js:1613 templates/js/translated/order.js:1792 msgid "Calculate price" msgstr "" -#: templates/js/translated/order.js:1618 +#: templates/js/translated/order.js:1617 msgid "Delete line item " msgstr "" -#: templates/js/translated/order.js:1741 +#: templates/js/translated/order.js:1740 msgid "Allocate Stock Item" msgstr "" -#: templates/js/translated/order.js:1801 +#: templates/js/translated/order.js:1800 msgid "Update Unit Price" msgstr "" -#: templates/js/translated/order.js:1815 +#: templates/js/translated/order.js:1814 msgid "No matching line items" msgstr "" -#: templates/js/translated/part.js:51 +#: templates/js/translated/part.js:52 msgid "Part Attributes" msgstr "" -#: templates/js/translated/part.js:55 +#: templates/js/translated/part.js:56 msgid "Part Creation Options" msgstr "" -#: templates/js/translated/part.js:59 +#: templates/js/translated/part.js:60 msgid "Part Duplication Options" msgstr "" -#: templates/js/translated/part.js:63 +#: templates/js/translated/part.js:64 msgid "Supplier Options" msgstr "" -#: templates/js/translated/part.js:77 +#: templates/js/translated/part.js:78 msgid "Add Part Category" msgstr "" -#: templates/js/translated/part.js:166 +#: templates/js/translated/part.js:162 msgid "Create Initial Stock" msgstr "" -#: templates/js/translated/part.js:167 +#: templates/js/translated/part.js:163 msgid "Create an initial stock item for this part" msgstr "" -#: templates/js/translated/part.js:174 +#: templates/js/translated/part.js:170 msgid "Initial Stock Quantity" msgstr "" -#: templates/js/translated/part.js:175 +#: templates/js/translated/part.js:171 msgid "Specify initial stock quantity for this part" msgstr "" -#: templates/js/translated/part.js:182 +#: templates/js/translated/part.js:178 msgid "Select destination stock location" msgstr "" -#: templates/js/translated/part.js:193 +#: templates/js/translated/part.js:196 msgid "Copy Category Parameters" msgstr "" -#: templates/js/translated/part.js:194 +#: templates/js/translated/part.js:197 msgid "Copy parameter templates from selected part category" msgstr "" -#: templates/js/translated/part.js:202 +#: templates/js/translated/part.js:205 msgid "Add Supplier Data" msgstr "" -#: templates/js/translated/part.js:203 +#: templates/js/translated/part.js:206 msgid "Create initial supplier data for this part" msgstr "" -#: templates/js/translated/part.js:259 +#: templates/js/translated/part.js:262 msgid "Copy Image" msgstr "" -#: templates/js/translated/part.js:260 +#: templates/js/translated/part.js:263 msgid "Copy image from original part" msgstr "" -#: templates/js/translated/part.js:268 +#: templates/js/translated/part.js:271 msgid "Copy bill of materials from original part" msgstr "" -#: templates/js/translated/part.js:275 +#: templates/js/translated/part.js:278 msgid "Copy Parameters" msgstr "" -#: templates/js/translated/part.js:276 +#: templates/js/translated/part.js:279 msgid "Copy parameter data from original part" msgstr "" -#: templates/js/translated/part.js:289 +#: templates/js/translated/part.js:292 msgid "Parent part category" msgstr "" -#: templates/js/translated/part.js:333 +#: templates/js/translated/part.js:336 msgid "Edit Part" msgstr "" -#: templates/js/translated/part.js:335 +#: templates/js/translated/part.js:338 msgid "Part edited" msgstr "" -#: templates/js/translated/part.js:403 +#: templates/js/translated/part.js:410 msgid "You are subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:405 +#: templates/js/translated/part.js:412 msgid "You have subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:410 +#: templates/js/translated/part.js:417 msgid "Subscribe to notifications for this item" msgstr "" -#: templates/js/translated/part.js:412 +#: templates/js/translated/part.js:419 msgid "You have unsubscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:441 templates/js/translated/part.js:526 +#: templates/js/translated/part.js:448 templates/js/translated/part.js:533 msgid "Trackable part" msgstr "" -#: templates/js/translated/part.js:445 templates/js/translated/part.js:530 +#: templates/js/translated/part.js:452 templates/js/translated/part.js:537 msgid "Virtual part" msgstr "" -#: templates/js/translated/part.js:457 +#: templates/js/translated/part.js:464 msgid "Subscribed part" msgstr "" -#: templates/js/translated/part.js:461 +#: templates/js/translated/part.js:468 msgid "Salable part" msgstr "" -#: templates/js/translated/part.js:576 +#: templates/js/translated/part.js:583 msgid "No variants found" msgstr "" -#: templates/js/translated/part.js:765 +#: templates/js/translated/part.js:946 msgid "Delete part relationship" msgstr "" -#: templates/js/translated/part.js:789 +#: templates/js/translated/part.js:970 msgid "Delete Part Relationship" msgstr "" -#: templates/js/translated/part.js:856 templates/js/translated/part.js:1116 +#: templates/js/translated/part.js:1037 templates/js/translated/part.js:1297 msgid "No parts found" msgstr "" -#: templates/js/translated/part.js:1026 +#: templates/js/translated/part.js:1207 msgid "No category" msgstr "" -#: templates/js/translated/part.js:1049 +#: templates/js/translated/part.js:1230 #: templates/js/translated/table_filters.js:381 msgid "Low stock" msgstr "" -#: templates/js/translated/part.js:1140 templates/js/translated/part.js:1312 -#: templates/js/translated/stock.js:1832 +#: templates/js/translated/part.js:1321 templates/js/translated/part.js:1493 +#: templates/js/translated/stock.js:1914 msgid "Display as list" msgstr "" -#: templates/js/translated/part.js:1156 +#: templates/js/translated/part.js:1337 msgid "Display as grid" msgstr "" -#: templates/js/translated/part.js:1331 templates/js/translated/stock.js:1851 +#: templates/js/translated/part.js:1512 templates/js/translated/stock.js:1933 msgid "Display as tree" msgstr "" -#: templates/js/translated/part.js:1395 +#: templates/js/translated/part.js:1576 msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:1409 templates/js/translated/stock.js:1895 +#: templates/js/translated/part.js:1590 templates/js/translated/stock.js:1977 msgid "Path" msgstr "" -#: templates/js/translated/part.js:1453 +#: templates/js/translated/part.js:1634 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:1504 templates/js/translated/stock.js:816 +#: templates/js/translated/part.js:1685 templates/js/translated/stock.js:898 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:1505 templates/js/translated/stock.js:817 +#: templates/js/translated/part.js:1686 templates/js/translated/stock.js:899 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:1511 +#: templates/js/translated/part.js:1692 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:1533 +#: templates/js/translated/part.js:1714 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:1547 +#: templates/js/translated/part.js:1728 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:1572 +#: templates/js/translated/part.js:1753 #, python-brace-format msgid "No ${human_name} information found" msgstr "" -#: templates/js/translated/part.js:1627 +#: templates/js/translated/part.js:1808 #, python-brace-format msgid "Edit ${human_name}" msgstr "" -#: templates/js/translated/part.js:1628 +#: templates/js/translated/part.js:1809 #, python-brace-format msgid "Delete ${human_name}" msgstr "" -#: templates/js/translated/part.js:1729 +#: templates/js/translated/part.js:1910 msgid "Single Price" msgstr "" -#: templates/js/translated/part.js:1748 +#: templates/js/translated/part.js:1929 msgid "Single Price Difference" msgstr "" @@ -7930,276 +7964,300 @@ msgstr "" msgid "Sales Order(s) must be selected before printing report" msgstr "" -#: templates/js/translated/stock.js:70 +#: templates/js/translated/stock.js:71 msgid "Serialize Stock Item" msgstr "" -#: templates/js/translated/stock.js:88 templates/js/translated/stock.js:167 +#: templates/js/translated/stock.js:89 templates/js/translated/stock.js:168 msgid "Next available serial number" msgstr "" -#: templates/js/translated/stock.js:90 templates/js/translated/stock.js:169 +#: templates/js/translated/stock.js:91 templates/js/translated/stock.js:170 msgid "Latest serial number" msgstr "" -#: templates/js/translated/stock.js:104 +#: templates/js/translated/stock.js:105 msgid "Parent stock location" msgstr "" -#: templates/js/translated/stock.js:140 +#: templates/js/translated/stock.js:141 msgid "New Stock Location" msgstr "" -#: templates/js/translated/stock.js:180 +#: templates/js/translated/stock.js:181 msgid "This part cannot be serialized" msgstr "" -#: templates/js/translated/stock.js:219 +#: templates/js/translated/stock.js:220 msgid "Enter initial quantity for this stock item" msgstr "" -#: templates/js/translated/stock.js:225 +#: templates/js/translated/stock.js:226 msgid "Enter serial numbers for new stock (or leave blank)" msgstr "" -#: templates/js/translated/stock.js:368 +#: templates/js/translated/stock.js:369 msgid "Created new stock item" msgstr "" -#: templates/js/translated/stock.js:381 +#: templates/js/translated/stock.js:382 msgid "Created multiple stock items" msgstr "" -#: templates/js/translated/stock.js:420 +#: templates/js/translated/stock.js:407 +msgid "Find Serial Number" +msgstr "" + +#: templates/js/translated/stock.js:411 templates/js/translated/stock.js:412 +msgid "Enter serial number" +msgstr "" + +#: templates/js/translated/stock.js:428 +msgid "Enter a serial number" +msgstr "" + +#: templates/js/translated/stock.js:448 +msgid "No matching serial number" +msgstr "" + +#: templates/js/translated/stock.js:457 +msgid "More than one matching result found" +msgstr "" + +#: templates/js/translated/stock.js:502 msgid "Export Stock" msgstr "" -#: templates/js/translated/stock.js:431 +#: templates/js/translated/stock.js:513 msgid "Include Sublocations" msgstr "" -#: templates/js/translated/stock.js:432 +#: templates/js/translated/stock.js:514 msgid "Include stock items in sublocations" msgstr "" -#: templates/js/translated/stock.js:474 +#: templates/js/translated/stock.js:556 msgid "Transfer Stock" msgstr "" -#: templates/js/translated/stock.js:475 +#: templates/js/translated/stock.js:557 msgid "Move" msgstr "" -#: templates/js/translated/stock.js:481 +#: templates/js/translated/stock.js:563 msgid "Count Stock" msgstr "" -#: templates/js/translated/stock.js:482 +#: templates/js/translated/stock.js:564 msgid "Count" msgstr "" -#: templates/js/translated/stock.js:486 +#: templates/js/translated/stock.js:568 msgid "Remove Stock" msgstr "" -#: templates/js/translated/stock.js:487 +#: templates/js/translated/stock.js:569 msgid "Take" msgstr "" -#: templates/js/translated/stock.js:491 +#: templates/js/translated/stock.js:573 msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:492 users/models.py:200 +#: templates/js/translated/stock.js:574 users/models.py:200 msgid "Add" msgstr "" -#: templates/js/translated/stock.js:496 templates/stock_table.html:56 +#: templates/js/translated/stock.js:578 templates/stock_table.html:56 msgid "Delete Stock" msgstr "" -#: templates/js/translated/stock.js:585 +#: templates/js/translated/stock.js:667 msgid "Quantity cannot be adjusted for serialized stock" msgstr "" -#: templates/js/translated/stock.js:585 +#: templates/js/translated/stock.js:667 msgid "Specify stock quantity" msgstr "" -#: templates/js/translated/stock.js:625 +#: templates/js/translated/stock.js:707 msgid "You must select at least one available stock item" msgstr "" -#: templates/js/translated/stock.js:783 +#: templates/js/translated/stock.js:865 msgid "PASS" msgstr "" -#: templates/js/translated/stock.js:785 +#: templates/js/translated/stock.js:867 msgid "FAIL" msgstr "" -#: templates/js/translated/stock.js:790 +#: templates/js/translated/stock.js:872 msgid "NO RESULT" msgstr "" -#: templates/js/translated/stock.js:812 +#: templates/js/translated/stock.js:894 msgid "Add test result" msgstr "" -#: templates/js/translated/stock.js:838 +#: templates/js/translated/stock.js:920 msgid "No test results found" msgstr "" -#: templates/js/translated/stock.js:895 +#: templates/js/translated/stock.js:977 msgid "Test Date" msgstr "" -#: templates/js/translated/stock.js:1002 +#: templates/js/translated/stock.js:1084 msgid "In production" msgstr "" -#: templates/js/translated/stock.js:1006 +#: templates/js/translated/stock.js:1088 msgid "Installed in Stock Item" msgstr "" -#: templates/js/translated/stock.js:1010 +#: templates/js/translated/stock.js:1092 msgid "Shipped to customer" msgstr "" -#: templates/js/translated/stock.js:1014 +#: templates/js/translated/stock.js:1096 msgid "Assigned to Sales Order" msgstr "" -#: templates/js/translated/stock.js:1020 +#: templates/js/translated/stock.js:1102 msgid "No stock location set" msgstr "" -#: templates/js/translated/stock.js:1178 +#: templates/js/translated/stock.js:1260 msgid "Stock item is in production" msgstr "" -#: templates/js/translated/stock.js:1183 +#: templates/js/translated/stock.js:1265 msgid "Stock item assigned to sales order" msgstr "" -#: templates/js/translated/stock.js:1186 +#: templates/js/translated/stock.js:1268 msgid "Stock item assigned to customer" msgstr "" -#: templates/js/translated/stock.js:1190 +#: templates/js/translated/stock.js:1272 msgid "Stock item has expired" msgstr "" -#: templates/js/translated/stock.js:1192 +#: templates/js/translated/stock.js:1274 msgid "Stock item will expire soon" msgstr "" -#: templates/js/translated/stock.js:1196 +#: templates/js/translated/stock.js:1278 msgid "Stock item has been allocated" msgstr "" -#: templates/js/translated/stock.js:1200 +#: templates/js/translated/stock.js:1282 msgid "Stock item has been installed in another item" msgstr "" -#: templates/js/translated/stock.js:1207 +#: templates/js/translated/stock.js:1289 msgid "Stock item has been rejected" msgstr "" -#: templates/js/translated/stock.js:1209 +#: templates/js/translated/stock.js:1291 msgid "Stock item is lost" msgstr "" -#: templates/js/translated/stock.js:1211 +#: templates/js/translated/stock.js:1293 msgid "Stock item is destroyed" msgstr "" -#: templates/js/translated/stock.js:1215 +#: templates/js/translated/stock.js:1297 #: templates/js/translated/table_filters.js:183 msgid "Depleted" msgstr "" -#: templates/js/translated/stock.js:1265 +#: templates/js/translated/stock.js:1347 msgid "Stocktake" msgstr "" -#: templates/js/translated/stock.js:1338 +#: templates/js/translated/stock.js:1420 msgid "Supplier part not specified" msgstr "" -#: templates/js/translated/stock.js:1376 +#: templates/js/translated/stock.js:1458 msgid "No stock items matching query" msgstr "" -#: templates/js/translated/stock.js:1397 templates/js/translated/stock.js:1445 +#: templates/js/translated/stock.js:1479 templates/js/translated/stock.js:1527 msgid "items" msgstr "" -#: templates/js/translated/stock.js:1485 +#: templates/js/translated/stock.js:1567 msgid "batches" msgstr "" -#: templates/js/translated/stock.js:1512 +#: templates/js/translated/stock.js:1594 msgid "locations" msgstr "" -#: templates/js/translated/stock.js:1514 +#: templates/js/translated/stock.js:1596 msgid "Undefined location" msgstr "" -#: templates/js/translated/stock.js:1688 +#: templates/js/translated/stock.js:1770 msgid "Set Stock Status" msgstr "" -#: templates/js/translated/stock.js:1702 +#: templates/js/translated/stock.js:1784 msgid "Select Status Code" msgstr "" -#: templates/js/translated/stock.js:1703 +#: templates/js/translated/stock.js:1785 msgid "Status code must be selected" msgstr "" -#: templates/js/translated/stock.js:1927 +#: templates/js/translated/stock.js:2009 msgid "Invalid date" msgstr "" -#: templates/js/translated/stock.js:1974 +#: templates/js/translated/stock.js:2031 +msgid "Details" +msgstr "" + +#: templates/js/translated/stock.js:2056 msgid "Location no longer exists" msgstr "" -#: templates/js/translated/stock.js:1993 +#: templates/js/translated/stock.js:2075 msgid "Purchase order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2012 +#: templates/js/translated/stock.js:2094 msgid "Customer no longer exists" msgstr "" -#: templates/js/translated/stock.js:2030 +#: templates/js/translated/stock.js:2112 msgid "Stock item no longer exists" msgstr "" -#: templates/js/translated/stock.js:2053 +#: templates/js/translated/stock.js:2135 msgid "Added" msgstr "" -#: templates/js/translated/stock.js:2061 +#: templates/js/translated/stock.js:2143 msgid "Removed" msgstr "" -#: templates/js/translated/stock.js:2102 +#: templates/js/translated/stock.js:2184 msgid "Edit tracking entry" msgstr "" -#: templates/js/translated/stock.js:2103 +#: templates/js/translated/stock.js:2185 msgid "Delete tracking entry" msgstr "" -#: templates/js/translated/stock.js:2154 +#: templates/js/translated/stock.js:2236 msgid "No installed items" msgstr "" -#: templates/js/translated/stock.js:2205 +#: templates/js/translated/stock.js:2287 msgid "Uninstall Stock Item" msgstr "" diff --git a/InvenTree/locale/tr/LC_MESSAGES/django.po b/InvenTree/locale/tr/LC_MESSAGES/django.po index c068a30029..39695002e7 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-11-30 21:49+0000\n" -"PO-Revision-Date: 2021-11-30 21:52\n" +"POT-Creation-Date: 2021-12-03 10:37+0000\n" +"PO-Revision-Date: 2021-12-03 11:26\n" "Last-Translator: \n" "Language-Team: Turkish\n" "Language: tr_TR\n" @@ -114,129 +114,130 @@ msgstr "Seri numarası bulunamadı" msgid "Number of unique serial number ({s}) must match quantity ({q})" msgstr "Benzersiz seri numaralarının sayısı ({s}) girilen miktarla eşleşmeli ({q})" -#: InvenTree/models.py:114 +#: InvenTree/models.py:120 msgid "Missing file" msgstr "" -#: InvenTree/models.py:115 +#: InvenTree/models.py:121 msgid "Missing external link" msgstr "" -#: InvenTree/models.py:126 stock/models.py:1874 +#: InvenTree/models.py:132 stock/models.py:1864 #: templates/js/translated/attachment.js:117 msgid "Attachment" msgstr "Ek" -#: InvenTree/models.py:127 +#: InvenTree/models.py:133 msgid "Select file to attach" msgstr "Eklenecek dosyayı seç" -#: InvenTree/models.py:133 company/models.py:131 company/models.py:348 +#: InvenTree/models.py:139 company/models.py:131 company/models.py:348 #: company/models.py:564 order/models.py:163 part/models.py:797 #: report/templates/report/inventree_build_order_base.html:165 #: templates/js/translated/company.js:537 -#: templates/js/translated/company.js:826 templates/js/translated/part.js:1077 +#: templates/js/translated/company.js:826 templates/js/translated/part.js:1258 msgid "Link" msgstr "Bağlantı" -#: InvenTree/models.py:134 build/models.py:330 part/models.py:798 -#: stock/models.py:540 +#: InvenTree/models.py:140 build/models.py:330 part/models.py:798 +#: stock/models.py:530 msgid "Link to external URL" msgstr "Harici URL'ye bağlantı" -#: InvenTree/models.py:137 templates/js/translated/attachment.js:161 +#: InvenTree/models.py:143 templates/js/translated/attachment.js:161 msgid "Comment" msgstr "Yorum" -#: InvenTree/models.py:137 +#: InvenTree/models.py:143 msgid "File comment" msgstr "Dosya yorumu" -#: InvenTree/models.py:143 InvenTree/models.py:144 common/models.py:1185 +#: InvenTree/models.py:149 InvenTree/models.py:150 common/models.py:1185 #: common/models.py:1186 part/models.py:2205 part/models.py:2225 #: report/templates/report/inventree_test_report_base.html:96 -#: templates/js/translated/stock.js:2084 +#: templates/js/translated/stock.js:2166 msgid "User" msgstr "Kullanıcı" -#: InvenTree/models.py:147 +#: InvenTree/models.py:153 msgid "upload date" msgstr "yükleme tarihi" -#: InvenTree/models.py:170 +#: InvenTree/models.py:176 msgid "Filename must not be empty" msgstr "" -#: InvenTree/models.py:193 +#: InvenTree/models.py:199 msgid "Invalid attachment directory" msgstr "" -#: InvenTree/models.py:203 +#: InvenTree/models.py:209 #, python-brace-format msgid "Filename contains illegal character '{c}'" msgstr "" -#: InvenTree/models.py:206 +#: InvenTree/models.py:212 msgid "Filename missing extension" msgstr "" -#: InvenTree/models.py:213 +#: InvenTree/models.py:219 msgid "Attachment with this filename already exists" msgstr "" -#: InvenTree/models.py:220 +#: InvenTree/models.py:226 msgid "Error renaming file" msgstr "" -#: InvenTree/models.py:255 +#: InvenTree/models.py:261 msgid "Invalid choice" msgstr "Geçersiz seçim" -#: InvenTree/models.py:271 InvenTree/models.py:272 company/models.py:415 +#: InvenTree/models.py:277 InvenTree/models.py:278 company/models.py:415 #: label/models.py:112 part/models.py:741 part/models.py:2389 -#: part/templates/part/detail.html:25 report/models.py:181 -#: templates/InvenTree/settings/settings.html:259 -#: templates/js/translated/company.js:638 templates/js/translated/part.js:499 -#: templates/js/translated/part.js:636 templates/js/translated/part.js:1384 -#: templates/js/translated/stock.js:1877 +#: report/models.py:181 templates/InvenTree/settings/settings.html:259 +#: templates/js/translated/company.js:638 templates/js/translated/part.js:506 +#: templates/js/translated/part.js:643 templates/js/translated/part.js:1565 +#: templates/js/translated/stock.js:1959 msgid "Name" msgstr "Adı" -#: InvenTree/models.py:278 build/models.py:207 +#: InvenTree/models.py:284 build/models.py:207 #: build/templates/build/detail.html:25 company/models.py:354 -#: company/models.py:570 company/templates/company/manufacturer_part.html:80 -#: company/templates/company/supplier_part.html:81 label/models.py:119 -#: order/models.py:161 part/models.py:764 part/templates/part/detail.html:30 +#: company/models.py:570 company/templates/company/company_base.html:68 +#: company/templates/company/manufacturer_part.html:76 +#: company/templates/company/supplier_part.html:73 label/models.py:119 +#: order/models.py:161 part/models.py:764 part/templates/part/category.html:70 +#: part/templates/part/part_base.html:163 #: part/templates/part/set_category.html:14 report/models.py:194 #: report/models.py:553 report/models.py:592 #: report/templates/report/inventree_build_order_base.html:118 -#: stock/templates/stock/location.html:108 templates/js/translated/bom.js:215 +#: stock/templates/stock/location.html:89 templates/js/translated/bom.js:215 #: templates/js/translated/bom.js:428 templates/js/translated/build.js:1621 #: templates/js/translated/company.js:345 #: templates/js/translated/company.js:548 -#: templates/js/translated/company.js:837 templates/js/translated/order.js:673 -#: templates/js/translated/order.js:855 templates/js/translated/order.js:1091 -#: templates/js/translated/part.js:558 templates/js/translated/part.js:752 -#: templates/js/translated/part.js:837 templates/js/translated/part.js:1007 -#: templates/js/translated/part.js:1403 templates/js/translated/part.js:1472 -#: templates/js/translated/stock.js:1151 templates/js/translated/stock.js:1889 -#: templates/js/translated/stock.js:1934 +#: templates/js/translated/company.js:837 templates/js/translated/order.js:680 +#: templates/js/translated/order.js:854 templates/js/translated/order.js:1090 +#: templates/js/translated/part.js:565 templates/js/translated/part.js:933 +#: templates/js/translated/part.js:1018 templates/js/translated/part.js:1188 +#: templates/js/translated/part.js:1584 templates/js/translated/part.js:1653 +#: templates/js/translated/stock.js:1233 templates/js/translated/stock.js:1971 +#: templates/js/translated/stock.js:2016 msgid "Description" msgstr "Açıklama" -#: InvenTree/models.py:279 +#: InvenTree/models.py:285 msgid "Description (optional)" msgstr "Açıklama (isteğe bağlı)" -#: InvenTree/models.py:287 +#: InvenTree/models.py:293 msgid "parent" msgstr "üst" -#: InvenTree/serializers.py:62 part/models.py:2674 +#: InvenTree/serializers.py:65 part/models.py:2674 msgid "Must be a valid number" msgstr "Geçerli bir numara olmalı" -#: InvenTree/serializers.py:285 +#: InvenTree/serializers.py:299 msgid "Filename" msgstr "" @@ -361,7 +362,7 @@ msgid "Returned" msgstr "İade" #: InvenTree/status_codes.py:143 -#: order/templates/order/sales_order_base.html:147 +#: order/templates/order/sales_order_base.html:148 msgid "Shipped" msgstr "Sevk edildi" @@ -566,7 +567,7 @@ msgid "Barcode associated with StockItem" msgstr "Barkod başka bir stok kalemiyle ilişkili" #: build/forms.py:36 build/models.py:1283 -#: build/templates/build/build_base.html:124 +#: build/templates/build/build_base.html:132 #: build/templates/build/detail.html:35 common/models.py:1225 #: company/forms.py:42 company/templates/company/supplier_part.html:251 #: order/forms.py:102 order/models.py:729 order/models.py:991 @@ -574,26 +575,27 @@ msgstr "Barkod başka bir stok kalemiyle ilişkili" #: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:223 #: part/forms.py:239 part/forms.py:255 part/models.py:2576 #: part/templates/part/bom_upload/match_parts.html:31 -#: part/templates/part/detail.html:1076 part/templates/part/detail.html:1162 +#: part/templates/part/detail.html:967 part/templates/part/detail.html:1053 #: part/templates/part/part_pricing.html:16 #: report/templates/report/inventree_build_order_base.html:114 #: report/templates/report/inventree_po_report.html:91 #: report/templates/report/inventree_so_report.html:91 #: report/templates/report/inventree_test_report_base.html:81 #: report/templates/report/inventree_test_report_base.html:139 -#: stock/forms.py:156 stock/serializers.py:286 -#: stock/templates/stock/item_base.html:256 +#: stock/forms.py:156 stock/serializers.py:291 +#: stock/templates/stock/item_base.html:174 #: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:443 #: templates/js/translated/build.js:235 templates/js/translated/build.js:435 #: templates/js/translated/build.js:629 templates/js/translated/build.js:639 #: templates/js/translated/build.js:1015 templates/js/translated/build.js:1362 #: templates/js/translated/model_renderers.js:99 -#: templates/js/translated/order.js:892 templates/js/translated/order.js:1205 -#: templates/js/translated/order.js:1283 templates/js/translated/order.js:1290 -#: templates/js/translated/order.js:1379 templates/js/translated/order.js:1479 -#: templates/js/translated/part.js:1615 templates/js/translated/part.js:1738 -#: templates/js/translated/part.js:1816 templates/js/translated/stock.js:377 -#: templates/js/translated/stock.js:2069 templates/js/translated/stock.js:2171 +#: templates/js/translated/order.js:891 templates/js/translated/order.js:1204 +#: templates/js/translated/order.js:1282 templates/js/translated/order.js:1289 +#: templates/js/translated/order.js:1378 templates/js/translated/order.js:1478 +#: templates/js/translated/part.js:843 templates/js/translated/part.js:1796 +#: templates/js/translated/part.js:1919 templates/js/translated/part.js:1997 +#: templates/js/translated/stock.js:378 templates/js/translated/stock.js:2151 +#: templates/js/translated/stock.js:2253 msgid "Quantity" msgstr "Miktar" @@ -602,8 +604,8 @@ msgid "Enter quantity for build output" msgstr "Yapım işi çıktısı için miktarını girin" #: build/forms.py:41 order/forms.py:96 stock/forms.py:95 -#: stock/serializers.py:307 templates/js/translated/stock.js:224 -#: templates/js/translated/stock.js:378 +#: stock/serializers.py:312 templates/js/translated/stock.js:225 +#: templates/js/translated/stock.js:379 msgid "Serial Numbers" msgstr "Seri Numaraları" @@ -646,7 +648,7 @@ msgstr "Yapım İşi Emri" #: build/templates/build/index.html:8 build/templates/build/index.html:12 #: order/templates/order/sales_order_detail.html:42 #: order/templates/order/so_sidebar.html:7 -#: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:221 +#: part/templates/part/part_sidebar.html:20 templates/InvenTree/index.html:221 #: templates/InvenTree/search.html:145 #: templates/InvenTree/settings/sidebar.html:42 users/models.py:44 msgid "Build Orders" @@ -662,7 +664,7 @@ msgstr "Yapım İşi Emri Referansı" #: report/templates/report/inventree_po_report.html:92 #: report/templates/report/inventree_so_report.html:92 #: templates/js/translated/bom.js:435 templates/js/translated/build.js:1119 -#: templates/js/translated/order.js:886 templates/js/translated/order.js:1473 +#: templates/js/translated/order.js:885 templates/js/translated/order.js:1472 msgid "Reference" msgstr "Referans" @@ -670,7 +672,7 @@ msgstr "Referans" msgid "Brief description of the build" msgstr "Yapım işinin kısa açıklaması" -#: build/models.py:219 build/templates/build/build_base.html:156 +#: build/models.py:219 build/templates/build/build_base.html:164 #: build/templates/build/detail.html:88 msgid "Parent Build" msgstr "Üst Yapım İşi" @@ -679,7 +681,7 @@ msgstr "Üst Yapım İşi" msgid "BuildOrder to which this build is allocated" msgstr "Bu yapım işinin tahsis edildiği yapım işi emri" -#: build/models.py:225 build/templates/build/build_base.html:119 +#: build/models.py:225 build/templates/build/build_base.html:77 #: build/templates/build/detail.html:30 company/models.py:705 #: order/models.py:789 order/models.py:860 #: order/templates/order/order_wizard/select_parts.html:32 part/models.py:357 @@ -700,10 +702,10 @@ msgstr "Bu yapım işinin tahsis edildiği yapım işi emri" #: templates/js/translated/build.js:988 templates/js/translated/build.js:1359 #: templates/js/translated/build.js:1626 templates/js/translated/company.js:489 #: templates/js/translated/company.js:746 templates/js/translated/order.js:426 -#: templates/js/translated/order.js:840 templates/js/translated/order.js:1457 -#: templates/js/translated/part.js:737 templates/js/translated/part.js:818 -#: templates/js/translated/part.js:985 templates/js/translated/stock.js:508 -#: templates/js/translated/stock.js:1108 templates/js/translated/stock.js:2159 +#: templates/js/translated/order.js:839 templates/js/translated/order.js:1456 +#: templates/js/translated/part.js:918 templates/js/translated/part.js:999 +#: templates/js/translated/part.js:1166 templates/js/translated/stock.js:590 +#: templates/js/translated/stock.js:1190 templates/js/translated/stock.js:2241 msgid "Part" msgstr "Parça" @@ -751,7 +753,7 @@ msgstr "Tamamlanmış ögeler" msgid "Number of stock items which have been completed" msgstr "Tamamlanan stok kalemlerinin sayısı" -#: build/models.py:277 part/templates/part/part_base.html:216 +#: build/models.py:277 part/templates/part/part_base.html:234 msgid "Build Status" msgstr "Yapım İşi Durumu" @@ -759,7 +761,7 @@ msgstr "Yapım İşi Durumu" msgid "Build status code" msgstr "Yapım işi durum kodu" -#: build/models.py:285 stock/models.py:544 +#: build/models.py:285 stock/models.py:534 msgid "Batch Code" msgstr "Sıra numarası" @@ -768,7 +770,7 @@ msgid "Batch code for this build output" msgstr "Yapım işi çıktısı için sıra numarası" #: build/models.py:292 order/models.py:165 part/models.py:936 -#: part/templates/part/detail.html:86 templates/js/translated/order.js:1104 +#: part/templates/part/part_base.html:313 templates/js/translated/order.js:1103 msgid "Creation Date" msgstr "Oluşturulma tarihi" @@ -797,12 +799,12 @@ msgstr "Veren" msgid "User who issued this build order" msgstr "Bu yapım işi emrini veren kullanıcı" -#: build/models.py:323 build/templates/build/build_base.html:177 +#: build/models.py:323 build/templates/build/build_base.html:185 #: build/templates/build/detail.html:116 order/models.py:179 -#: order/templates/order/order_base.html:154 -#: order/templates/order/sales_order_base.html:161 part/models.py:940 +#: order/templates/order/order_base.html:158 +#: order/templates/order/sales_order_base.html:162 part/models.py:940 #: report/templates/report/inventree_build_order_base.html:159 -#: templates/js/translated/build.js:1680 templates/js/translated/order.js:700 +#: templates/js/translated/build.js:1680 templates/js/translated/order.js:699 msgid "Responsible" msgstr "Sorumlu" @@ -811,10 +813,10 @@ msgid "User responsible for this build order" msgstr "Bu yapım işi emrinden sorumlu kullanıcı" #: build/models.py:329 build/templates/build/detail.html:102 -#: company/templates/company/manufacturer_part.html:87 -#: company/templates/company/supplier_part.html:88 -#: part/templates/part/detail.html:80 stock/models.py:538 -#: stock/templates/stock/item_base.html:346 +#: company/templates/company/manufacturer_part.html:102 +#: company/templates/company/supplier_part.html:126 +#: part/templates/part/part_base.html:354 stock/models.py:528 +#: stock/templates/stock/item_base.html:374 msgid "External Link" msgstr "Harici Bağlantı" @@ -824,15 +826,15 @@ msgstr "Harici Bağlantı" #: order/models.py:183 order/models.py:738 #: order/templates/order/po_sidebar.html:11 #: order/templates/order/so_sidebar.html:11 part/models.py:925 -#: part/templates/part/detail.html:223 part/templates/part/part_sidebar.html:52 +#: part/templates/part/detail.html:116 part/templates/part/part_sidebar.html:50 #: report/templates/report/inventree_build_order_base.html:173 -#: stock/forms.py:154 stock/forms.py:204 stock/forms.py:238 stock/models.py:610 -#: stock/models.py:1774 stock/models.py:1880 stock/serializers.py:325 -#: stock/serializers.py:583 stock/templates/stock/stock_sidebar.html:21 +#: stock/forms.py:154 stock/forms.py:204 stock/forms.py:238 stock/models.py:600 +#: stock/models.py:1764 stock/models.py:1870 stock/serializers.py:330 +#: stock/serializers.py:588 stock/templates/stock/stock_sidebar.html:21 #: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:599 -#: templates/js/translated/company.js:842 templates/js/translated/order.js:985 -#: templates/js/translated/order.js:1583 templates/js/translated/stock.js:891 -#: templates/js/translated/stock.js:1370 +#: templates/js/translated/company.js:842 templates/js/translated/order.js:984 +#: templates/js/translated/order.js:1582 templates/js/translated/stock.js:973 +#: templates/js/translated/stock.js:1452 msgid "Notes" msgstr "Notlar" @@ -877,7 +879,7 @@ msgstr "Seri numaralı stok için miktar bir olmalı" msgid "Selected stock item not found in BOM" msgstr "" -#: build/models.py:1253 stock/templates/stock/item_base.html:318 +#: build/models.py:1253 stock/templates/stock/item_base.html:346 #: templates/InvenTree/search.html:143 templates/js/translated/build.js:1599 #: templates/navbar.html:33 msgid "Build" @@ -890,11 +892,11 @@ msgstr "Yapım işi için tahsis edilen parçalar" #: build/models.py:1270 build/serializers.py:328 #: stock/templates/stock/item_base.html:8 #: stock/templates/stock/item_base.html:16 -#: stock/templates/stock/item_base.html:340 +#: stock/templates/stock/item_base.html:368 #: templates/js/translated/build.js:408 templates/js/translated/build.js:413 #: templates/js/translated/build.js:1361 templates/js/translated/build.js:1742 -#: templates/js/translated/order.js:1178 templates/js/translated/order.js:1183 -#: templates/js/translated/stock.js:2020 +#: templates/js/translated/order.js:1177 templates/js/translated/order.js:1182 +#: templates/js/translated/stock.js:2102 msgid "Stock Item" msgstr "Stok Kalemi" @@ -934,16 +936,16 @@ msgstr "" msgid "This build output is not fully allocated" msgstr "" -#: build/serializers.py:190 order/serializers.py:219 order/serializers.py:287 -#: stock/forms.py:236 stock/serializers.py:318 stock/serializers.py:685 -#: stock/templates/stock/item_base.html:286 +#: build/serializers.py:190 order/serializers.py:228 order/serializers.py:296 +#: stock/forms.py:236 stock/serializers.py:323 stock/serializers.py:690 +#: stock/templates/stock/item_base.html:314 #: templates/js/translated/barcode.js:384 #: templates/js/translated/barcode.js:557 templates/js/translated/build.js:420 #: templates/js/translated/build.js:1027 templates/js/translated/order.js:348 -#: templates/js/translated/order.js:1190 templates/js/translated/order.js:1298 -#: templates/js/translated/order.js:1304 templates/js/translated/part.js:181 -#: templates/js/translated/stock.js:510 templates/js/translated/stock.js:1251 -#: templates/js/translated/stock.js:1961 +#: templates/js/translated/order.js:1189 templates/js/translated/order.js:1297 +#: templates/js/translated/order.js:1303 templates/js/translated/part.js:177 +#: templates/js/translated/stock.js:592 templates/js/translated/stock.js:1333 +#: templates/js/translated/stock.js:2043 msgid "Location" msgstr "Konum" @@ -951,13 +953,13 @@ msgstr "Konum" msgid "Location for completed build outputs" msgstr "" -#: build/serializers.py:197 build/templates/build/build_base.html:129 +#: build/serializers.py:197 build/templates/build/build_base.html:137 #: build/templates/build/detail.html:63 order/models.py:572 -#: order/serializers.py:240 stock/templates/stock/item_base.html:409 +#: order/serializers.py:249 stock/templates/stock/item_base.html:180 #: templates/js/translated/barcode.js:140 templates/js/translated/build.js:1655 -#: templates/js/translated/order.js:431 templates/js/translated/order.js:677 -#: templates/js/translated/order.js:1096 templates/js/translated/stock.js:1226 -#: templates/js/translated/stock.js:2038 templates/js/translated/stock.js:2187 +#: templates/js/translated/order.js:431 templates/js/translated/order.js:1095 +#: templates/js/translated/stock.js:1308 templates/js/translated/stock.js:2120 +#: templates/js/translated/stock.js:2269 msgid "Status" msgstr "Durum" @@ -986,8 +988,8 @@ msgstr "" msgid "Item must be in stock" msgstr "" -#: build/serializers.py:348 order/models.py:316 order/serializers.py:233 -#: stock/models.py:381 stock/models.py:1103 stock/serializers.py:298 +#: build/serializers.py:348 order/models.py:316 order/serializers.py:242 +#: stock/models.py:371 stock/models.py:1093 stock/serializers.py:303 msgid "Quantity must be greater than zero" msgstr "" @@ -1031,7 +1033,7 @@ msgid "Edit Build" msgstr "Yapım İşini Düzenle" #: build/templates/build/build_base.html:56 -#: build/templates/build/build_base.html:207 build/views.py:56 +#: build/templates/build/build_base.html:215 build/views.py:56 msgid "Cancel Build" msgstr "Yapım İşini İptal Et" @@ -1041,93 +1043,95 @@ msgstr "" #: build/templates/build/build_base.html:64 #: build/templates/build/build_base.html:65 -#: build/templates/build/build_base.html:223 +#: build/templates/build/build_base.html:231 msgid "Complete Build" msgstr "Tamamlanmış Yapım İşi" -#: build/templates/build/build_base.html:79 +#: build/templates/build/build_base.html:82 +msgid "Build Description" +msgstr "" + +#: build/templates/build/build_base.html:91 #, python-format msgid "This Build Order is allocated to Sales Order %(link)s" msgstr "Bu yapım işi emri, %(link)s sipariş emrine tahsis edilmiştir" -#: build/templates/build/build_base.html:86 +#: build/templates/build/build_base.html:98 #, python-format msgid "This Build Order is a child of Build Order %(link)s" msgstr "Bu yapım işi emri, %(link)s yapım iş emrinin altıdır" -#: build/templates/build/build_base.html:93 +#: build/templates/build/build_base.html:105 msgid "Build Order is ready to mark as completed" msgstr "Yapım işi tamamlandı olarak işaretlenmeye hazır" -#: build/templates/build/build_base.html:98 +#: build/templates/build/build_base.html:110 msgid "Build Order cannot be completed as outstanding outputs remain" msgstr "Bekleyen çıktılar kaldığı için yapım işi emri tamamlanamıyor" -#: build/templates/build/build_base.html:103 +#: build/templates/build/build_base.html:115 msgid "Required build quantity has not yet been completed" msgstr "Gerekli yapım işi miktarı henüz tamamlanmadı" -#: build/templates/build/build_base.html:108 +#: build/templates/build/build_base.html:120 msgid "Stock has not been fully allocated to this Build Order" msgstr "Stok, yapım işi emri için tamamen tahsis edilemedi" -#: build/templates/build/build_base.html:138 +#: build/templates/build/build_base.html:146 #: build/templates/build/detail.html:132 -#: order/templates/order/order_base.html:140 -#: order/templates/order/sales_order_base.html:140 +#: order/templates/order/order_base.html:144 +#: order/templates/order/sales_order_base.html:141 #: report/templates/report/inventree_build_order_base.html:126 -#: templates/js/translated/build.js:1692 templates/js/translated/order.js:690 -#: templates/js/translated/order.js:1109 +#: templates/js/translated/build.js:1692 templates/js/translated/order.js:689 +#: templates/js/translated/order.js:1108 msgid "Target Date" msgstr "Hedeflenen tarih" -#: build/templates/build/build_base.html:143 +#: build/templates/build/build_base.html:151 #, python-format msgid "This build was due on %(target)s" msgstr "Bu yapım işinin %(target)s tarihinde süresi doluyor" -#: build/templates/build/build_base.html:143 -#: build/templates/build/build_base.html:188 -#: order/templates/order/order_base.html:81 -#: order/templates/order/order_base.html:102 -#: order/templates/order/sales_order_base.html:78 -#: order/templates/order/sales_order_base.html:107 +#: build/templates/build/build_base.html:151 +#: build/templates/build/build_base.html:196 +#: order/templates/order/order_base.html:98 +#: order/templates/order/sales_order_base.html:93 #: templates/js/translated/table_filters.js:294 #: templates/js/translated/table_filters.js:322 #: templates/js/translated/table_filters.js:339 msgid "Overdue" msgstr "Vadesi geçmiş" -#: build/templates/build/build_base.html:150 +#: build/templates/build/build_base.html:158 #: build/templates/build/detail.html:68 build/templates/build/detail.html:143 #: templates/js/translated/build.js:1641 #: templates/js/translated/table_filters.js:304 msgid "Completed" msgstr "Tamamlandı" -#: build/templates/build/build_base.html:163 +#: build/templates/build/build_base.html:171 #: build/templates/build/detail.html:95 order/models.py:857 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: order/templates/order/sales_order_ship.html:25 #: report/templates/report/inventree_build_order_base.html:136 #: report/templates/report/inventree_so_report.html:77 -#: stock/templates/stock/item_base.html:280 -#: templates/js/translated/order.js:1051 +#: stock/templates/stock/item_base.html:308 +#: templates/js/translated/order.js:1050 msgid "Sales Order" msgstr "Sipariş Emri" -#: build/templates/build/build_base.html:170 +#: build/templates/build/build_base.html:178 #: build/templates/build/detail.html:109 #: report/templates/report/inventree_build_order_base.html:153 msgid "Issued By" msgstr "Veren" -#: build/templates/build/build_base.html:215 +#: build/templates/build/build_base.html:223 msgid "Incomplete Outputs" msgstr "Tamamlanmamış Çıktılar" -#: build/templates/build/build_base.html:216 +#: build/templates/build/build_base.html:224 msgid "Build Order cannot be completed as incomplete build outputs remain" msgstr "Tamamlanmamış yapım işi çıktıları kaldığı için yapım işi emri tamamlanamıyor" @@ -1188,7 +1192,7 @@ msgid "Stock can be taken from any available location." msgstr "Stok herhangi bir konumdan alınabilir." #: build/templates/build/detail.html:50 order/models.py:811 stock/forms.py:150 -#: templates/js/translated/order.js:432 templates/js/translated/order.js:974 +#: templates/js/translated/order.js:432 templates/js/translated/order.js:973 msgid "Destination" msgstr "Hedef" @@ -1201,16 +1205,16 @@ msgid "Allocated Parts" msgstr "" #: build/templates/build/detail.html:81 -#: stock/templates/stock/item_base.html:304 -#: templates/js/translated/stock.js:1240 templates/js/translated/stock.js:2194 +#: stock/templates/stock/item_base.html:332 +#: templates/js/translated/stock.js:1322 templates/js/translated/stock.js:2276 #: templates/js/translated/table_filters.js:151 #: templates/js/translated/table_filters.js:233 msgid "Batch" msgstr "Toplu" #: build/templates/build/detail.html:127 -#: order/templates/order/order_base.html:127 -#: order/templates/order/sales_order_base.html:134 +#: order/templates/order/order_base.html:131 +#: order/templates/order/sales_order_base.html:135 #: templates/js/translated/build.js:1663 msgid "Created" msgstr "Oluşturuldu" @@ -1254,7 +1258,7 @@ msgstr "Gerekli parçaları sipariş edin" #: build/templates/build/detail.html:185 #: company/templates/company/detail.html:38 #: company/templates/company/detail.html:85 order/views.py:509 -#: part/templates/part/category.html:166 +#: part/templates/part/category.html:173 msgid "Order Parts" msgstr "Parça Siparişi" @@ -1306,8 +1310,8 @@ msgstr "Tamamlanmış Yapım İşi Çıktıları" #: order/templates/order/po_sidebar.html:9 #: order/templates/order/purchase_order_detail.html:60 #: order/templates/order/sales_order_detail.html:52 -#: order/templates/order/so_sidebar.html:9 part/templates/part/detail.html:300 -#: part/templates/part/part_sidebar.html:50 stock/templates/stock/item.html:95 +#: order/templates/order/so_sidebar.html:9 part/templates/part/detail.html:193 +#: part/templates/part/part_sidebar.html:48 stock/templates/stock/item.html:95 #: stock/templates/stock/stock_sidebar.html:19 msgid "Attachments" msgstr "Ekler" @@ -1323,7 +1327,7 @@ msgstr "Yapım İşi Notları" #: order/templates/order/purchase_order_detail.html:108 #: order/templates/order/sales_order_detail.html:72 #: order/templates/order/sales_order_detail.html:99 -#: part/templates/part/detail.html:227 stock/templates/stock/item.html:115 +#: part/templates/part/detail.html:120 stock/templates/stock/item.html:115 #: stock/templates/stock/item.html:205 msgid "Edit Notes" msgstr "Notları Düzenle" @@ -1336,7 +1340,7 @@ msgstr "" msgid "All untracked stock items have been allocated" msgstr "" -#: build/templates/build/index.html:18 part/templates/part/detail.html:407 +#: build/templates/build/index.html:18 part/templates/part/detail.html:300 msgid "New Build Order" msgstr "Yeni Yapım İşi Emri" @@ -1380,7 +1384,7 @@ msgstr "Yapım İşi Çıktısı Oluştur" msgid "Maximum output quantity is " msgstr "Maksimum çıktı miktarı " -#: build/views.py:122 stock/serializers.py:356 stock/views.py:1290 +#: build/views.py:122 stock/serializers.py:361 stock/views.py:1290 msgid "Serial numbers already exist" msgstr "Seri numaraları zaten mevcut" @@ -1675,7 +1679,7 @@ msgid "Parts are trackable by default" msgstr "Parçalar varsayılan olarak takip edilebilir" #: common/models.py:745 part/models.py:920 -#: part/templates/part/part_base.html:144 +#: part/templates/part/part_base.html:147 #: templates/js/translated/table_filters.js:42 msgid "Virtual" msgstr "Sanal" @@ -2142,7 +2146,7 @@ msgstr "" #: common/models.py:1233 company/serializers.py:264 #: company/templates/company/supplier_part.html:256 -#: templates/js/translated/part.js:1620 +#: templates/js/translated/part.js:852 templates/js/translated/part.js:1801 msgid "Price" msgstr "Fiyat" @@ -2206,7 +2210,7 @@ msgstr "" msgid "Description of the company" msgstr "" -#: company/models.py:112 company/templates/company/company_base.html:70 +#: company/models.py:112 company/templates/company/company_base.html:97 #: templates/js/translated/company.js:349 msgid "Website" msgstr "" @@ -2215,7 +2219,7 @@ msgstr "" msgid "Company website URL" msgstr "Şirket web sitesi" -#: company/models.py:117 company/templates/company/company_base.html:88 +#: company/models.py:117 company/templates/company/company_base.html:115 msgid "Address" msgstr "Adres" @@ -2231,7 +2235,7 @@ msgstr "Telefon numarası" msgid "Contact phone number" msgstr "İletişim telefon numarası" -#: company/models.py:125 company/templates/company/company_base.html:102 +#: company/models.py:125 company/templates/company/company_base.html:129 #: templates/InvenTree/settings/user.html:47 msgid "Email" msgstr "E-posta" @@ -2240,7 +2244,7 @@ msgstr "E-posta" msgid "Contact email address" msgstr "İletişim e-posta adresi" -#: company/models.py:128 company/templates/company/company_base.html:109 +#: company/models.py:128 company/templates/company/company_base.html:136 msgid "Contact" msgstr "İletişim" @@ -2281,7 +2285,7 @@ msgid "Does this company manufacture parts?" msgstr "Bu şirket üretim yapıyor mu?" #: company/models.py:152 company/serializers.py:270 -#: company/templates/company/company_base.html:76 stock/serializers.py:172 +#: company/templates/company/company_base.html:103 stock/serializers.py:177 msgid "Currency" msgstr "Para birimi" @@ -2289,8 +2293,8 @@ msgstr "Para birimi" msgid "Default currency used for this company" msgstr "Bu şirket için varsayılan para birimi" -#: company/models.py:320 company/models.py:535 stock/models.py:484 -#: stock/templates/stock/item_base.html:224 +#: company/models.py:320 company/models.py:535 stock/models.py:474 +#: stock/templates/stock/item_base.html:135 msgid "Base Part" msgstr "Temel Parça" @@ -2298,29 +2302,29 @@ msgstr "Temel Parça" msgid "Select part" msgstr "Parça seçin" -#: company/models.py:335 company/templates/company/company_base.html:116 -#: company/templates/company/manufacturer_part.html:93 -#: company/templates/company/supplier_part.html:104 -#: stock/templates/stock/item_base.html:353 +#: company/models.py:335 company/templates/company/company_base.html:73 +#: company/templates/company/manufacturer_part.html:91 +#: company/templates/company/supplier_part.html:97 +#: stock/templates/stock/item_base.html:381 #: templates/js/translated/company.js:333 #: templates/js/translated/company.js:514 -#: templates/js/translated/company.js:797 templates/js/translated/part.js:229 +#: templates/js/translated/company.js:797 templates/js/translated/part.js:232 msgid "Manufacturer" msgstr "Üretici" -#: company/models.py:336 templates/js/translated/part.js:230 +#: company/models.py:336 templates/js/translated/part.js:233 msgid "Select manufacturer" msgstr "Üretici seçin" -#: company/models.py:342 company/templates/company/manufacturer_part.html:97 -#: company/templates/company/supplier_part.html:112 +#: company/models.py:342 company/templates/company/manufacturer_part.html:96 +#: company/templates/company/supplier_part.html:105 #: templates/js/translated/company.js:530 -#: templates/js/translated/company.js:815 templates/js/translated/order.js:874 -#: templates/js/translated/part.js:240 +#: templates/js/translated/company.js:815 templates/js/translated/order.js:873 +#: templates/js/translated/part.js:243 templates/js/translated/part.js:832 msgid "MPN" msgstr "ÜPN" -#: company/models.py:343 templates/js/translated/part.js:241 +#: company/models.py:343 templates/js/translated/part.js:244 msgid "Manufacturer Part Number" msgstr "Üretici Parça Numarası" @@ -2335,7 +2339,7 @@ msgstr "" #: company/models.py:409 company/models.py:558 #: company/templates/company/manufacturer_part.html:6 #: company/templates/company/manufacturer_part.html:23 -#: stock/templates/stock/item_base.html:363 +#: stock/templates/stock/item_base.html:391 msgid "Manufacturer Part" msgstr "" @@ -2345,8 +2349,8 @@ msgstr "Parametre adı" #: company/models.py:422 #: report/templates/report/inventree_test_report_base.html:95 -#: stock/models.py:1867 templates/js/translated/company.js:644 -#: templates/js/translated/part.js:645 templates/js/translated/stock.js:878 +#: stock/models.py:1857 templates/js/translated/company.js:644 +#: templates/js/translated/part.js:652 templates/js/translated/stock.js:960 msgid "Value" msgstr "Değer" @@ -2355,9 +2359,9 @@ msgid "Parameter value" msgstr "Parametre değeri" #: company/models.py:429 part/models.py:882 part/models.py:2397 -#: part/templates/part/detail.html:59 +#: part/templates/part/part_base.html:288 #: templates/InvenTree/settings/settings.html:264 -#: templates/js/translated/company.js:650 templates/js/translated/part.js:651 +#: templates/js/translated/company.js:650 templates/js/translated/part.js:658 msgid "Units" msgstr "" @@ -2369,28 +2373,28 @@ msgstr "" msgid "Linked manufacturer part must reference the same base part" msgstr "" -#: company/models.py:545 company/templates/company/company_base.html:121 -#: company/templates/company/supplier_part.html:94 order/models.py:263 -#: order/templates/order/order_base.html:108 +#: company/models.py:545 company/templates/company/company_base.html:78 +#: company/templates/company/supplier_part.html:87 order/models.py:263 +#: order/templates/order/order_base.html:112 #: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:219 -#: part/bom.py:247 stock/templates/stock/item_base.html:370 +#: part/bom.py:247 stock/templates/stock/item_base.html:398 #: templates/js/translated/company.js:337 -#: templates/js/translated/company.js:771 templates/js/translated/order.js:660 -#: templates/js/translated/part.js:210 +#: templates/js/translated/company.js:771 templates/js/translated/order.js:667 +#: templates/js/translated/part.js:213 templates/js/translated/part.js:800 msgid "Supplier" msgstr "Tedarikçi" -#: company/models.py:546 templates/js/translated/part.js:211 +#: company/models.py:546 templates/js/translated/part.js:214 msgid "Select supplier" msgstr "Tedarikçi seçin" -#: company/models.py:551 company/templates/company/supplier_part.html:98 -#: part/bom.py:220 part/bom.py:248 templates/js/translated/order.js:861 -#: templates/js/translated/part.js:221 +#: company/models.py:551 company/templates/company/supplier_part.html:91 +#: part/bom.py:220 part/bom.py:248 templates/js/translated/order.js:860 +#: templates/js/translated/part.js:224 templates/js/translated/part.js:818 msgid "SKU" msgstr "SKU" -#: company/models.py:552 templates/js/translated/part.js:222 +#: company/models.py:552 templates/js/translated/part.js:225 msgid "Supplier stock keeping unit" msgstr "" @@ -2406,7 +2410,7 @@ msgstr "" msgid "Supplier part description" msgstr "" -#: company/models.py:576 company/templates/company/supplier_part.html:126 +#: company/models.py:576 company/templates/company/supplier_part.html:119 #: part/models.py:2588 report/templates/report/inventree_po_report.html:93 #: report/templates/report/inventree_so_report.html:93 msgid "Note" @@ -2420,9 +2424,9 @@ msgstr "temel maliyet" msgid "Minimum charge (e.g. stocking fee)" msgstr "" -#: company/models.py:582 company/templates/company/supplier_part.html:119 -#: stock/models.py:507 stock/templates/stock/item_base.html:311 -#: templates/js/translated/company.js:847 templates/js/translated/stock.js:1366 +#: company/models.py:582 company/templates/company/supplier_part.html:112 +#: stock/models.py:497 stock/templates/stock/item_base.html:339 +#: templates/js/translated/company.js:847 templates/js/translated/stock.js:1448 msgid "Packaging" msgstr "Paketleme" @@ -2457,43 +2461,56 @@ msgstr "" msgid "Create Purchase Order" msgstr "Satın Alma Emri Oluştur" -#: company/templates/company/company_base.html:27 +#: company/templates/company/company_base.html:26 +msgid "Company actions" +msgstr "" + +#: company/templates/company/company_base.html:31 msgid "Edit company information" msgstr "" #: company/templates/company/company_base.html:32 -#: company/templates/company/company_base.html:148 +#: templates/js/translated/company.js:265 +msgid "Edit Company" +msgstr "" + +#: company/templates/company/company_base.html:36 +msgid "Delete company" +msgstr "" + +#: company/templates/company/company_base.html:37 +#: company/templates/company/company_base.html:159 msgid "Delete Company" msgstr "" -#: company/templates/company/company_base.html:48 +#: company/templates/company/company_base.html:53 #: part/templates/part/part_thumb.html:12 msgid "Upload new image" msgstr "" -#: company/templates/company/company_base.html:51 +#: company/templates/company/company_base.html:56 #: part/templates/part/part_thumb.html:14 msgid "Download image from URL" msgstr "" -#: company/templates/company/company_base.html:81 -msgid "Uses default currency" -msgstr "" - -#: company/templates/company/company_base.html:95 -msgid "Phone" -msgstr "" - -#: company/templates/company/company_base.html:126 order/models.py:567 -#: order/templates/order/sales_order_base.html:114 stock/models.py:525 -#: stock/models.py:526 stock/templates/stock/item_base.html:263 -#: templates/js/translated/company.js:329 templates/js/translated/order.js:1073 -#: templates/js/translated/stock.js:2002 +#: company/templates/company/company_base.html:83 order/models.py:567 +#: order/templates/order/sales_order_base.html:115 stock/models.py:515 +#: stock/models.py:516 stock/templates/stock/item_base.html:291 +#: templates/js/translated/company.js:329 templates/js/translated/order.js:1072 +#: templates/js/translated/stock.js:2084 msgid "Customer" msgstr "Müşteri" -#: company/templates/company/company_base.html:194 -#: part/templates/part/part_base.html:342 +#: company/templates/company/company_base.html:108 +msgid "Uses default currency" +msgstr "" + +#: company/templates/company/company_base.html:122 +msgid "Phone" +msgstr "" + +#: company/templates/company/company_base.html:205 +#: part/templates/part/part_base.html:471 msgid "Upload Image" msgstr "" @@ -2509,23 +2526,23 @@ msgid "Create new supplier part" msgstr "Yeni tedarikçi parçası oluştur" #: company/templates/company/detail.html:20 -#: company/templates/company/manufacturer_part.html:112 -#: part/templates/part/detail.html:440 +#: company/templates/company/manufacturer_part.html:118 +#: part/templates/part/detail.html:333 msgid "New Supplier Part" msgstr "Yeni Tedarikçi Parçası" #: company/templates/company/detail.html:32 #: company/templates/company/detail.html:79 -#: company/templates/company/manufacturer_part.html:121 -#: company/templates/company/manufacturer_part.html:150 -#: part/templates/part/category.html:160 part/templates/part/detail.html:449 -#: part/templates/part/detail.html:477 +#: company/templates/company/manufacturer_part.html:127 +#: company/templates/company/manufacturer_part.html:156 +#: part/templates/part/category.html:167 part/templates/part/detail.html:342 +#: part/templates/part/detail.html:370 msgid "Options" msgstr "" #: company/templates/company/detail.html:37 #: company/templates/company/detail.html:84 -#: part/templates/part/category.html:166 +#: part/templates/part/category.html:173 msgid "Order parts" msgstr "" @@ -2547,7 +2564,7 @@ msgstr "" msgid "Create new manufacturer part" msgstr "" -#: company/templates/company/detail.html:67 part/templates/part/detail.html:467 +#: company/templates/company/detail.html:67 part/templates/part/detail.html:360 msgid "New Manufacturer Part" msgstr "" @@ -2561,7 +2578,7 @@ msgstr "Tedarikçi Stoku" #: order/templates/order/order_base.html:13 #: order/templates/order/purchase_orders.html:8 #: order/templates/order/purchase_orders.html:12 -#: part/templates/part/detail.html:171 part/templates/part/part_sidebar.html:35 +#: part/templates/part/detail.html:64 part/templates/part/part_sidebar.html:33 #: templates/InvenTree/index.html:252 templates/InvenTree/search.html:203 #: templates/InvenTree/settings/sidebar.html:44 templates/navbar.html:45 #: users/models.py:45 @@ -2583,7 +2600,7 @@ msgstr "Yeni Satın Alma Emri" #: order/templates/order/sales_order_base.html:13 #: order/templates/order/sales_orders.html:8 #: order/templates/order/sales_orders.html:15 -#: part/templates/part/detail.html:194 part/templates/part/part_sidebar.html:39 +#: part/templates/part/detail.html:87 part/templates/part/part_sidebar.html:37 #: templates/InvenTree/index.html:283 templates/InvenTree/search.html:223 #: templates/InvenTree/settings/sidebar.html:46 templates/navbar.html:56 #: users/models.py:46 @@ -2610,14 +2627,14 @@ msgid "Company Notes" msgstr "" #: company/templates/company/detail.html:383 -#: company/templates/company/manufacturer_part.html:209 -#: part/templates/part/detail.html:520 +#: company/templates/company/manufacturer_part.html:215 +#: part/templates/part/detail.html:413 msgid "Delete Supplier Parts?" msgstr "" #: company/templates/company/detail.html:384 -#: company/templates/company/manufacturer_part.html:210 -#: part/templates/part/detail.html:521 +#: company/templates/company/manufacturer_part.html:216 +#: part/templates/part/detail.html:414 msgid "All selected supplier parts will be deleted" msgstr "" @@ -2634,7 +2651,7 @@ msgstr "Üreticiler" #: company/templates/company/manufacturer_part.html:35 #: company/templates/company/supplier_part.html:34 #: company/templates/company/supplier_part.html:159 -#: part/templates/part/detail.html:174 part/templates/part/part_base.html:76 +#: part/templates/part/detail.html:67 part/templates/part/part_base.html:76 msgid "Order part" msgstr "Parça siparişi" @@ -2648,60 +2665,60 @@ msgstr "" msgid "Delete manufacturer part" msgstr "" -#: company/templates/company/manufacturer_part.html:70 -#: company/templates/company/supplier_part.html:71 +#: company/templates/company/manufacturer_part.html:66 +#: company/templates/company/supplier_part.html:63 msgid "Internal Part" msgstr "" -#: company/templates/company/manufacturer_part.html:108 +#: company/templates/company/manufacturer_part.html:114 #: company/templates/company/supplier_part.html:15 company/views.py:49 -#: part/templates/part/part_sidebar.html:33 part/templates/part/prices.html:163 +#: part/templates/part/part_sidebar.html:31 part/templates/part/prices.html:163 #: templates/InvenTree/search.html:194 templates/navbar.html:43 msgid "Suppliers" msgstr "" -#: company/templates/company/manufacturer_part.html:123 -#: part/templates/part/detail.html:451 +#: company/templates/company/manufacturer_part.html:129 +#: part/templates/part/detail.html:344 msgid "Delete supplier parts" msgstr "Tedarikçi parçalarını sil" -#: company/templates/company/manufacturer_part.html:123 -#: company/templates/company/manufacturer_part.html:152 -#: company/templates/company/manufacturer_part.html:248 -#: part/templates/part/detail.html:451 part/templates/part/detail.html:479 +#: company/templates/company/manufacturer_part.html:129 +#: company/templates/company/manufacturer_part.html:158 +#: company/templates/company/manufacturer_part.html:254 +#: part/templates/part/detail.html:344 part/templates/part/detail.html:372 #: templates/js/translated/company.js:425 templates/js/translated/helpers.js:31 #: users/models.py:204 msgid "Delete" msgstr "" -#: company/templates/company/manufacturer_part.html:137 +#: company/templates/company/manufacturer_part.html:143 #: company/templates/company/manufacturer_part_sidebar.html:5 #: part/templates/part/category_sidebar.html:17 -#: part/templates/part/detail.html:277 part/templates/part/part_sidebar.html:10 +#: part/templates/part/detail.html:170 part/templates/part/part_sidebar.html:8 msgid "Parameters" msgstr "" -#: company/templates/company/manufacturer_part.html:141 -#: part/templates/part/detail.html:282 +#: company/templates/company/manufacturer_part.html:147 +#: part/templates/part/detail.html:175 #: templates/InvenTree/settings/category.html:12 #: templates/InvenTree/settings/part.html:65 msgid "New Parameter" msgstr "" -#: company/templates/company/manufacturer_part.html:152 +#: company/templates/company/manufacturer_part.html:158 msgid "Delete parameters" msgstr "" -#: company/templates/company/manufacturer_part.html:185 -#: part/templates/part/detail.html:976 +#: company/templates/company/manufacturer_part.html:191 +#: part/templates/part/detail.html:867 msgid "Add Parameter" msgstr "" -#: company/templates/company/manufacturer_part.html:233 +#: company/templates/company/manufacturer_part.html:239 msgid "Selected parameters will be deleted" msgstr "" -#: company/templates/company/manufacturer_part.html:245 +#: company/templates/company/manufacturer_part.html:251 msgid "Delete Parameters" msgstr "" @@ -2722,9 +2739,9 @@ msgid "Assigned Stock Items" msgstr "" #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 stock/models.py:492 -#: stock/templates/stock/item_base.html:375 -#: templates/js/translated/company.js:787 templates/js/translated/stock.js:1323 +#: company/templates/company/supplier_part.html:24 stock/models.py:482 +#: stock/templates/stock/item_base.html:403 +#: templates/js/translated/company.js:787 templates/js/translated/stock.js:1405 msgid "Supplier Part" msgstr "Tedarikçi Parçası" @@ -2744,13 +2761,13 @@ msgid "Supplier Part Stock" msgstr "Tedarikçi Parça Stoku" #: company/templates/company/supplier_part.html:141 -#: part/templates/part/detail.html:127 stock/templates/stock/location.html:147 +#: part/templates/part/detail.html:20 stock/templates/stock/location.html:162 msgid "Create new stock item" msgstr "" #: company/templates/company/supplier_part.html:142 -#: part/templates/part/detail.html:128 stock/templates/stock/location.html:148 -#: templates/js/translated/stock.js:354 +#: part/templates/part/detail.html:21 stock/templates/stock/location.html:163 +#: templates/js/translated/stock.js:355 msgid "New Stock Item" msgstr "" @@ -2760,7 +2777,7 @@ msgid "Supplier Part Orders" msgstr "Tedarikçi Parçası Emirleri" #: company/templates/company/supplier_part.html:160 -#: part/templates/part/detail.html:175 +#: part/templates/part/detail.html:68 msgid "Order Part" msgstr "" @@ -2796,15 +2813,15 @@ msgid "Delete price break" msgstr "" #: company/templates/company/supplier_part_navbar.html:15 -#: part/templates/part/part_sidebar.html:16 +#: part/templates/part/part_sidebar.html:14 #: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:14 #: stock/templates/stock/stock_app_base.html:10 #: templates/InvenTree/search.html:156 #: templates/InvenTree/settings/sidebar.html:40 -#: templates/js/translated/bom.js:216 templates/js/translated/part.js:427 -#: templates/js/translated/part.js:562 templates/js/translated/part.js:878 -#: templates/js/translated/part.js:1039 templates/js/translated/stock.js:509 -#: templates/js/translated/stock.js:1162 templates/navbar.html:26 +#: templates/js/translated/bom.js:216 templates/js/translated/part.js:434 +#: templates/js/translated/part.js:569 templates/js/translated/part.js:1059 +#: templates/js/translated/part.js:1220 templates/js/translated/stock.js:591 +#: templates/js/translated/stock.js:1244 templates/navbar.html:26 msgid "Stock" msgstr "Stok" @@ -2818,16 +2835,16 @@ msgid "Supplier Part Pricing" msgstr "Tedarikçi Parçası Fiyatlandırması" #: company/templates/company/supplier_part_navbar.html:29 -#: part/templates/part/part_sidebar.html:30 +#: part/templates/part/part_sidebar.html:28 msgid "Pricing" msgstr "Fiyatlandırma" #: company/templates/company/supplier_part_sidebar.html:5 -#: stock/templates/stock/location.html:118 -#: stock/templates/stock/location.html:132 -#: stock/templates/stock/location.html:144 +#: stock/templates/stock/location.html:133 +#: stock/templates/stock/location.html:147 +#: stock/templates/stock/location.html:159 #: stock/templates/stock/location_sidebar.html:7 -#: templates/InvenTree/search.html:158 templates/js/translated/stock.js:1901 +#: templates/InvenTree/search.html:158 templates/js/translated/stock.js:1983 #: templates/stats.html:93 templates/stats.html:102 users/models.py:43 msgid "Stock Items" msgstr "Stok Kalemleri" @@ -2947,7 +2964,7 @@ msgstr "" msgid "Place order" msgstr "Sipariş ver" -#: order/forms.py:37 order/templates/order/order_base.html:59 +#: order/forms.py:37 order/templates/order/order_base.html:60 msgid "Mark order as complete" msgstr "Siparişi tamamlandı olarak işaretle" @@ -3000,8 +3017,8 @@ msgstr "" msgid "Company from which the items are being ordered" msgstr "" -#: order/models.py:267 order/templates/order/order_base.html:114 -#: templates/js/translated/order.js:669 +#: order/models.py:267 order/templates/order/order_base.html:118 +#: templates/js/translated/order.js:676 msgid "Supplier Reference" msgstr "" @@ -3061,7 +3078,7 @@ msgstr "" msgid "Target date for order completion. Order will be overdue after this date." msgstr "" -#: order/models.py:582 templates/js/translated/order.js:1114 +#: order/models.py:582 templates/js/translated/order.js:1113 msgid "Shipment Date" msgstr "" @@ -3086,16 +3103,16 @@ msgid "Line item notes" msgstr "" #: order/models.py:768 order/models.py:856 -#: templates/js/translated/order.js:1166 +#: templates/js/translated/order.js:1165 msgid "Order" msgstr "" #: order/models.py:769 order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_po_report.html:77 -#: stock/templates/stock/item_base.html:325 -#: templates/js/translated/order.js:638 templates/js/translated/stock.js:1300 -#: templates/js/translated/stock.js:1983 +#: stock/templates/stock/item_base.html:353 +#: templates/js/translated/order.js:638 templates/js/translated/part.js:775 +#: templates/js/translated/stock.js:1382 templates/js/translated/stock.js:2065 msgid "Purchase Order" msgstr "" @@ -3103,9 +3120,10 @@ msgstr "" msgid "Supplier part" msgstr "" -#: order/models.py:797 order/templates/order/order_base.html:147 -#: order/templates/order/sales_order_base.html:154 -#: templates/js/translated/order.js:429 templates/js/translated/order.js:954 +#: order/models.py:797 order/templates/order/order_base.html:151 +#: order/templates/order/sales_order_base.html:155 +#: templates/js/translated/order.js:429 templates/js/translated/order.js:953 +#: templates/js/translated/part.js:847 templates/js/translated/part.js:873 msgid "Received" msgstr "" @@ -3113,9 +3131,9 @@ msgstr "" msgid "Number of items received" msgstr "" -#: order/models.py:805 part/templates/part/prices.html:176 stock/models.py:619 -#: stock/serializers.py:163 stock/templates/stock/item_base.html:332 -#: templates/js/translated/stock.js:1354 +#: order/models.py:805 part/templates/part/prices.html:176 stock/models.py:609 +#: stock/serializers.py:168 stock/templates/stock/item_base.html:360 +#: templates/js/translated/stock.js:1436 msgid "Purchase Price" msgstr "" @@ -3176,47 +3194,47 @@ msgstr "" msgid "Enter stock allocation quantity" msgstr "Stok tahsis miktarını girin" -#: order/serializers.py:169 +#: order/serializers.py:175 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:204 +#: order/serializers.py:213 msgid "Line Item" msgstr "" -#: order/serializers.py:210 +#: order/serializers.py:219 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:220 order/serializers.py:288 +#: order/serializers.py:229 order/serializers.py:297 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:244 +#: order/serializers.py:253 msgid "Barcode Hash" msgstr "" -#: order/serializers.py:245 +#: order/serializers.py:254 msgid "Unique identifier field" msgstr "" -#: order/serializers.py:262 +#: order/serializers.py:271 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:300 +#: order/serializers.py:309 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:317 +#: order/serializers.py:326 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:328 +#: order/serializers.py:337 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:569 +#: order/serializers.py:578 msgid "Sale price currency" msgstr "" @@ -3248,22 +3266,36 @@ msgstr "" msgid "Receive items" msgstr "" -#: order/templates/order/order_base.html:93 -#: order/templates/order/sales_order_base.html:98 +#: order/templates/order/order_base.html:58 +#: order/templates/order/purchase_order_detail.html:31 +msgid "Receive Items" +msgstr "" + +#: order/templates/order/order_base.html:62 order/views.py:185 +msgid "Complete Order" +msgstr "" + +#: order/templates/order/order_base.html:84 +#: order/templates/order/sales_order_base.html:79 msgid "Order Reference" msgstr "" -#: order/templates/order/order_base.html:98 -#: order/templates/order/sales_order_base.html:103 +#: order/templates/order/order_base.html:89 +#: order/templates/order/sales_order_base.html:84 +msgid "Order Description" +msgstr "" + +#: order/templates/order/order_base.html:94 +#: order/templates/order/sales_order_base.html:89 msgid "Order Status" msgstr "" -#: order/templates/order/order_base.html:133 +#: order/templates/order/order_base.html:137 #: report/templates/report/inventree_build_order_base.html:122 msgid "Issued" msgstr "" -#: order/templates/order/order_base.html:203 +#: order/templates/order/order_base.html:207 msgid "Edit Purchase Order" msgstr "" @@ -3421,7 +3453,7 @@ msgid "Select existing purchase orders, or create new orders." msgstr "" #: order/templates/order/order_wizard/select_pos.html:31 -#: templates/js/translated/order.js:695 templates/js/translated/order.js:1119 +#: templates/js/translated/order.js:694 templates/js/translated/order.js:1118 msgid "Items" msgstr "Ürünler" @@ -3465,10 +3497,6 @@ msgstr "" msgid "Receive selected items" msgstr "" -#: order/templates/order/purchase_order_detail.html:31 -msgid "Receive Items" -msgstr "" - #: order/templates/order/purchase_order_detail.html:50 msgid "Received Items" msgstr "" @@ -3496,16 +3524,16 @@ msgstr "" msgid "Ship Order" msgstr "" -#: order/templates/order/sales_order_base.html:86 +#: order/templates/order/sales_order_base.html:102 msgid "This Sales Order has not been fully allocated" msgstr "" -#: order/templates/order/sales_order_base.html:121 -#: templates/js/translated/order.js:1086 +#: order/templates/order/sales_order_base.html:122 +#: templates/js/translated/order.js:1085 msgid "Customer Reference" msgstr "" -#: order/templates/order/sales_order_base.html:194 +#: order/templates/order/sales_order_base.html:195 msgid "Edit Sales Order" msgstr "" @@ -3576,10 +3604,6 @@ msgstr "" msgid "Purchase order issued" msgstr "" -#: order/views.py:185 -msgid "Complete Order" -msgstr "" - #: order/views.py:201 msgid "Confirm order completion" msgstr "" @@ -3672,11 +3696,11 @@ msgid "This field is required" msgstr "" #: part/bom.py:125 part/models.py:81 part/models.py:816 -#: part/templates/part/category.html:90 part/templates/part/detail.html:104 +#: part/templates/part/category.html:104 part/templates/part/part_base.html:338 msgid "Default Location" msgstr "Varsayılan Konum" -#: part/bom.py:126 part/templates/part/part_base.html:167 +#: part/bom.py:126 part/templates/part/part_base.html:185 msgid "Available Stock" msgstr "" @@ -3793,19 +3817,19 @@ msgstr "" msgid "Part Category" msgstr "" -#: part/models.py:96 part/templates/part/category.html:117 +#: part/models.py:96 part/templates/part/category.html:124 #: templates/InvenTree/search.html:101 templates/stats.html:84 #: users/models.py:40 msgid "Part Categories" msgstr "Parça Kategorileri" #: part/models.py:358 part/templates/part/cat_link.html:3 -#: part/templates/part/category.html:13 part/templates/part/category.html:122 -#: part/templates/part/category.html:142 +#: part/templates/part/category.html:13 part/templates/part/category.html:129 +#: part/templates/part/category.html:149 #: part/templates/part/category_sidebar.html:9 #: templates/InvenTree/index.html:85 templates/InvenTree/search.html:88 #: templates/InvenTree/settings/sidebar.html:36 -#: templates/js/translated/part.js:1416 templates/navbar.html:19 +#: templates/js/translated/part.js:1597 templates/navbar.html:19 #: templates/stats.html:80 templates/stats.html:89 users/models.py:41 msgid "Parts" msgstr "Parçalar" @@ -3859,8 +3883,8 @@ msgstr "Çeşidi" msgid "Part description" msgstr "Parça açıklaması" -#: part/models.py:770 part/templates/part/category.html:97 -#: part/templates/part/detail.html:73 +#: part/models.py:770 part/templates/part/category.html:82 +#: part/templates/part/part_base.html:302 msgid "Keywords" msgstr "Anahtar kelimeler" @@ -3869,9 +3893,10 @@ msgid "Part keywords to improve visibility in search results" msgstr "" #: part/models.py:778 part/models.py:2223 part/models.py:2472 -#: part/templates/part/detail.html:36 part/templates/part/set_category.html:15 +#: part/templates/part/part_base.html:265 +#: part/templates/part/set_category.html:15 #: templates/InvenTree/settings/settings.html:163 -#: templates/js/translated/part.js:1021 +#: templates/js/translated/part.js:1202 msgid "Category" msgstr "" @@ -3879,9 +3904,9 @@ msgstr "" msgid "Part category" msgstr "" -#: part/models.py:784 part/templates/part/detail.html:45 -#: templates/js/translated/part.js:550 templates/js/translated/part.js:974 -#: templates/js/translated/stock.js:1134 +#: part/models.py:784 part/templates/part/part_base.html:274 +#: templates/js/translated/part.js:557 templates/js/translated/part.js:1155 +#: templates/js/translated/stock.js:1216 msgid "IPN" msgstr "DPN" @@ -3893,8 +3918,8 @@ msgstr "" msgid "Part revision or version number" msgstr "Parça revizyon veya versiyon numarası" -#: part/models.py:792 part/templates/part/detail.html:52 report/models.py:200 -#: templates/js/translated/part.js:554 +#: part/models.py:792 part/templates/part/part_base.html:281 +#: report/models.py:200 templates/js/translated/part.js:561 msgid "Revision" msgstr "Revizyon" @@ -3902,7 +3927,7 @@ msgstr "Revizyon" msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:861 part/templates/part/detail.html:113 +#: part/models.py:861 part/templates/part/part_base.html:347 msgid "Default Supplier" msgstr "Varsayılan Tedarikçi" @@ -3918,7 +3943,7 @@ msgstr "" msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:875 part/templates/part/part_base.html:178 +#: part/models.py:875 part/templates/part/part_base.html:196 msgid "Minimum Stock" msgstr "Minimum Stok" @@ -4001,8 +4026,8 @@ msgstr "Test şablonları sadece takip edilebilir paçalar için oluşturulabili msgid "Test with this name already exists for this part" msgstr "" -#: part/models.py:2310 templates/js/translated/part.js:1467 -#: templates/js/translated/stock.js:858 +#: part/models.py:2310 templates/js/translated/part.js:1648 +#: templates/js/translated/stock.js:940 msgid "Test Name" msgstr "Test Adı" @@ -4018,7 +4043,7 @@ msgstr "Test Açıklaması" msgid "Enter description for this test" msgstr "" -#: part/models.py:2322 templates/js/translated/part.js:1476 +#: part/models.py:2322 templates/js/translated/part.js:1657 #: templates/js/translated/table_filters.js:276 msgid "Required" msgstr "Gerekli" @@ -4027,7 +4052,7 @@ msgstr "Gerekli" msgid "Is this test required to pass?" msgstr "Testi geçmesi için bu gerekli mi?" -#: part/models.py:2328 templates/js/translated/part.js:1484 +#: part/models.py:2328 templates/js/translated/part.js:1665 msgid "Requires Value" msgstr "" @@ -4035,7 +4060,7 @@ msgstr "" msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:2334 templates/js/translated/part.js:1491 +#: part/models.py:2334 templates/js/translated/part.js:1672 msgid "Requires Attachment" msgstr "" @@ -4150,7 +4175,7 @@ msgstr "Çeşide İzin Ver" msgid "Stock items for variant parts can be used for this BOM item" msgstr "Çeşit parçaların stok kalemleri bu malzeme listesinde kullanılabilir" -#: part/models.py:2686 stock/models.py:371 +#: part/models.py:2686 stock/models.py:361 msgid "Quantity must be integer value for trackable parts" msgstr "" @@ -4213,7 +4238,7 @@ msgstr "" msgid "The BOM for %(part)s has not been validated." msgstr "" -#: part/templates/part/bom.html:30 part/templates/part/detail.html:357 +#: part/templates/part/bom.html:30 part/templates/part/detail.html:250 msgid "BOM actions" msgstr "" @@ -4298,68 +4323,64 @@ msgstr "" msgid "New Category" msgstr "" -#: part/templates/part/category.html:67 -msgid "Top level part category" -msgstr "" - -#: part/templates/part/category.html:79 +#: part/templates/part/category.html:76 part/templates/part/category.html:89 msgid "Category Path" msgstr "" -#: part/templates/part/category.html:84 -msgid "Category Description" +#: part/templates/part/category.html:90 +msgid "Top level part category" msgstr "" -#: part/templates/part/category.html:103 part/templates/part/category.html:194 +#: part/templates/part/category.html:110 part/templates/part/category.html:201 #: part/templates/part/category_sidebar.html:7 msgid "Subcategories" msgstr "Alt kategoriler" -#: part/templates/part/category.html:108 +#: part/templates/part/category.html:115 msgid "Parts (Including subcategories)" msgstr "Parçalar (Alt kategoriler dahil)" -#: part/templates/part/category.html:145 +#: part/templates/part/category.html:152 msgid "Export Part Data" msgstr "" -#: part/templates/part/category.html:146 part/templates/part/category.html:170 +#: part/templates/part/category.html:153 part/templates/part/category.html:177 msgid "Export" msgstr "" -#: part/templates/part/category.html:149 +#: part/templates/part/category.html:156 msgid "Create new part" msgstr "" -#: part/templates/part/category.html:150 templates/js/translated/bom.js:40 +#: part/templates/part/category.html:157 templates/js/translated/bom.js:40 msgid "New Part" msgstr "" -#: part/templates/part/category.html:164 +#: part/templates/part/category.html:171 msgid "Set category" msgstr "Kategori ayarla" -#: part/templates/part/category.html:164 +#: part/templates/part/category.html:171 msgid "Set Category" msgstr "Kategori Ayarla" -#: part/templates/part/category.html:168 +#: part/templates/part/category.html:175 msgid "Print Labels" msgstr "" -#: part/templates/part/category.html:170 +#: part/templates/part/category.html:177 msgid "Export Data" msgstr "" -#: part/templates/part/category.html:184 +#: part/templates/part/category.html:191 msgid "Part Parameters" msgstr "" -#: part/templates/part/category.html:261 +#: part/templates/part/category.html:268 msgid "Create Part Category" msgstr "" -#: part/templates/part/category.html:288 +#: part/templates/part/category.html:295 msgid "Create Part" msgstr "" @@ -4402,7 +4423,7 @@ msgstr "" msgid "Import Parts" msgstr "" -#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:366 +#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:373 msgid "Duplicate Part" msgstr "" @@ -4426,167 +4447,155 @@ msgstr "" msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)" msgstr "" -#: part/templates/part/detail.html:16 -msgid "Part Details" -msgstr "" - -#: part/templates/part/detail.html:66 -msgid "Minimum stock level" -msgstr "" - -#: part/templates/part/detail.html:97 -msgid "Latest Serial Number" -msgstr "Son Seri Numarası" - -#: part/templates/part/detail.html:124 +#: part/templates/part/detail.html:17 msgid "Part Stock" msgstr "Parça Stoku" -#: part/templates/part/detail.html:136 +#: part/templates/part/detail.html:29 #, python-format msgid "Showing stock for all variants of %(full_name)s" msgstr "" -#: part/templates/part/detail.html:146 +#: part/templates/part/detail.html:39 msgid "Part Test Templates" msgstr "Parça Test Şablonları" -#: part/templates/part/detail.html:151 +#: part/templates/part/detail.html:44 msgid "Add Test Template" msgstr "Test Şablonu Ekle" -#: part/templates/part/detail.html:208 +#: part/templates/part/detail.html:101 msgid "Sales Order Allocations" msgstr "" -#: part/templates/part/detail.html:249 +#: part/templates/part/detail.html:142 msgid "Part Variants" msgstr "Parça Çeşitleri" -#: part/templates/part/detail.html:253 +#: part/templates/part/detail.html:146 msgid "Create new variant" msgstr "Yeni çeşit oluştur" -#: part/templates/part/detail.html:254 +#: part/templates/part/detail.html:147 msgid "New Variant" msgstr "Yeni Çeşit" -#: part/templates/part/detail.html:281 +#: part/templates/part/detail.html:174 msgid "Add new parameter" msgstr "" -#: part/templates/part/detail.html:315 part/templates/part/part_sidebar.html:47 +#: part/templates/part/detail.html:208 part/templates/part/part_sidebar.html:45 msgid "Related Parts" msgstr "" -#: part/templates/part/detail.html:319 part/templates/part/detail.html:320 +#: part/templates/part/detail.html:212 part/templates/part/detail.html:213 msgid "Add Related" msgstr "" -#: part/templates/part/detail.html:340 part/templates/part/part_sidebar.html:19 +#: part/templates/part/detail.html:233 part/templates/part/part_sidebar.html:17 msgid "Bill of Materials" msgstr "" -#: part/templates/part/detail.html:345 +#: part/templates/part/detail.html:238 msgid "Export actions" msgstr "" -#: part/templates/part/detail.html:349 +#: part/templates/part/detail.html:242 msgid "Export BOM" msgstr "" -#: part/templates/part/detail.html:351 +#: part/templates/part/detail.html:244 msgid "Print BOM Report" msgstr "" -#: part/templates/part/detail.html:361 +#: part/templates/part/detail.html:254 msgid "Upload BOM" msgstr "" -#: part/templates/part/detail.html:363 templates/js/translated/part.js:267 +#: part/templates/part/detail.html:256 templates/js/translated/part.js:270 msgid "Copy BOM" msgstr "" -#: part/templates/part/detail.html:365 part/views.py:755 +#: part/templates/part/detail.html:258 part/views.py:755 msgid "Validate BOM" msgstr "" -#: part/templates/part/detail.html:370 +#: part/templates/part/detail.html:263 msgid "New BOM Item" msgstr "" -#: part/templates/part/detail.html:371 +#: part/templates/part/detail.html:264 msgid "Add BOM Item" msgstr "" -#: part/templates/part/detail.html:384 +#: part/templates/part/detail.html:277 msgid "Assemblies" msgstr "" -#: part/templates/part/detail.html:401 +#: part/templates/part/detail.html:294 msgid "Part Builds" msgstr "" -#: part/templates/part/detail.html:426 +#: part/templates/part/detail.html:319 msgid "Build Order Allocations" msgstr "" -#: part/templates/part/detail.html:436 +#: part/templates/part/detail.html:329 msgid "Part Suppliers" msgstr "Parça Tedarikçileri" -#: part/templates/part/detail.html:463 +#: part/templates/part/detail.html:356 msgid "Part Manufacturers" msgstr "" -#: part/templates/part/detail.html:479 +#: part/templates/part/detail.html:372 msgid "Delete manufacturer parts" msgstr "" -#: part/templates/part/detail.html:660 +#: part/templates/part/detail.html:553 msgid "Delete selected BOM items?" msgstr "" -#: part/templates/part/detail.html:661 +#: part/templates/part/detail.html:554 msgid "All selected BOM items will be deleted" msgstr "" -#: part/templates/part/detail.html:712 +#: part/templates/part/detail.html:605 msgid "Create BOM Item" msgstr "" -#: part/templates/part/detail.html:764 +#: part/templates/part/detail.html:657 msgid "Related Part" msgstr "" -#: part/templates/part/detail.html:772 +#: part/templates/part/detail.html:665 msgid "Add Related Part" msgstr "" -#: part/templates/part/detail.html:869 +#: part/templates/part/detail.html:760 msgid "Add Test Result Template" msgstr "" -#: part/templates/part/detail.html:926 +#: part/templates/part/detail.html:817 msgid "Edit Part Notes" msgstr "" -#: part/templates/part/detail.html:1039 +#: part/templates/part/detail.html:930 #, python-format msgid "Purchase Unit Price - %(currency)s" msgstr "" -#: part/templates/part/detail.html:1051 +#: part/templates/part/detail.html:942 #, python-format msgid "Unit Price-Cost Difference - %(currency)s" msgstr "" -#: part/templates/part/detail.html:1063 +#: part/templates/part/detail.html:954 #, python-format msgid "Supplier Unit Cost - %(currency)s" msgstr "" -#: part/templates/part/detail.html:1152 +#: part/templates/part/detail.html:1043 #, python-format msgid "Unit Price - %(currency)s" msgstr "" @@ -4668,86 +4677,108 @@ msgstr "" msgid "Delete part" msgstr "" -#: part/templates/part/part_base.html:109 +#: part/templates/part/part_base.html:112 msgid "Part is a template part (variants can be made from this part)" msgstr "Bu parça bir şablon parçadır (Bu parçanın çeşitleri yapılabilir)" -#: part/templates/part/part_base.html:113 +#: part/templates/part/part_base.html:116 msgid "Part can be assembled from other parts" msgstr "" -#: part/templates/part/part_base.html:117 +#: part/templates/part/part_base.html:120 msgid "Part can be used in assemblies" msgstr "" -#: part/templates/part/part_base.html:121 +#: part/templates/part/part_base.html:124 msgid "Part stock is tracked by serial number" msgstr "Parça stoku seri numarası ile takip edilebilir" -#: part/templates/part/part_base.html:125 +#: part/templates/part/part_base.html:128 msgid "Part can be purchased from external suppliers" msgstr "Bu parça harici tedarikçilerden satın alınabilir" -#: part/templates/part/part_base.html:129 +#: part/templates/part/part_base.html:132 msgid "Part can be sold to customers" msgstr "" -#: part/templates/part/part_base.html:135 -#: part/templates/part/part_base.html:143 +#: part/templates/part/part_base.html:138 +#: part/templates/part/part_base.html:146 msgid "Part is virtual (not a physical part)" msgstr "" -#: part/templates/part/part_base.html:136 +#: part/templates/part/part_base.html:139 #: templates/js/translated/company.js:505 #: templates/js/translated/company.js:762 #: templates/js/translated/model_renderers.js:175 -#: templates/js/translated/part.js:465 templates/js/translated/part.js:542 +#: templates/js/translated/part.js:472 templates/js/translated/part.js:549 msgid "Inactive" msgstr "Pasif" -#: part/templates/part/part_base.html:155 +#: part/templates/part/part_base.html:156 +#: part/templates/part/part_base.html:579 +msgid "Show Part Details" +msgstr "" + +#: part/templates/part/part_base.html:173 #, python-format msgid "This part is a variant of %(link)s" msgstr "Bu parça %(link)s parçasının bir çeşididir" -#: part/templates/part/part_base.html:172 templates/js/translated/order.js:1546 +#: part/templates/part/part_base.html:190 templates/js/translated/order.js:1545 #: templates/js/translated/table_filters.js:188 msgid "In Stock" msgstr "" -#: part/templates/part/part_base.html:185 templates/js/translated/part.js:1054 +#: part/templates/part/part_base.html:203 templates/js/translated/part.js:1235 msgid "On Order" msgstr "" -#: part/templates/part/part_base.html:192 templates/InvenTree/index.html:178 +#: part/templates/part/part_base.html:210 templates/InvenTree/index.html:178 msgid "Required for Build Orders" msgstr "Yapım İşi Emirleri için Gerekli" -#: part/templates/part/part_base.html:199 +#: part/templates/part/part_base.html:217 msgid "Required for Sales Orders" msgstr "Satış Emirleri için Gerekli" -#: part/templates/part/part_base.html:206 +#: part/templates/part/part_base.html:224 msgid "Allocated to Orders" msgstr "" -#: part/templates/part/part_base.html:221 templates/js/translated/bom.js:566 +#: part/templates/part/part_base.html:239 templates/js/translated/bom.js:566 msgid "Can Build" msgstr "" -#: part/templates/part/part_base.html:227 templates/js/translated/part.js:885 -#: templates/js/translated/part.js:1058 +#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1066 +#: templates/js/translated/part.js:1239 msgid "Building" msgstr "" -#: part/templates/part/part_base.html:320 part/templates/part/prices.html:144 +#: part/templates/part/part_base.html:295 +msgid "Minimum stock level" +msgstr "" + +#: part/templates/part/part_base.html:324 +msgid "Latest Serial Number" +msgstr "Son Seri Numarası" + +#: part/templates/part/part_base.html:328 +#: stock/templates/stock/item_base.html:159 +msgid "Search for serial number" +msgstr "" + +#: part/templates/part/part_base.html:449 part/templates/part/prices.html:144 msgid "Calculate" msgstr "Hesapla" -#: part/templates/part/part_base.html:363 +#: part/templates/part/part_base.html:492 msgid "No matching images found" msgstr "" +#: part/templates/part/part_base.html:573 +msgid "Hide Part Details" +msgstr "" + #: part/templates/part/part_pricing.html:22 part/templates/part/prices.html:21 msgid "Supplier Pricing" msgstr "" @@ -4805,20 +4836,15 @@ msgstr "" msgid "No pricing information is available for this part." msgstr "" -#: part/templates/part/part_sidebar.html:8 -#: templates/js/translated/stock.js:1949 -msgid "Details" -msgstr "Detaylar" - -#: part/templates/part/part_sidebar.html:13 +#: part/templates/part/part_sidebar.html:11 msgid "Variants" msgstr "" -#: part/templates/part/part_sidebar.html:27 +#: part/templates/part/part_sidebar.html:25 msgid "Used In" msgstr "" -#: part/templates/part/part_sidebar.html:43 +#: part/templates/part/part_sidebar.html:41 msgid "Test Templates" msgstr "" @@ -4934,8 +4960,8 @@ msgid "Set category for the following parts" msgstr "Aşağıdaki parçalara kategori ayarla" #: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:476 -#: templates/js/translated/part.js:429 templates/js/translated/part.js:875 -#: templates/js/translated/part.js:1062 +#: templates/js/translated/part.js:436 templates/js/translated/part.js:1056 +#: templates/js/translated/part.js:1243 msgid "No Stock" msgstr "Stok Yok" @@ -5037,7 +5063,7 @@ msgstr "Parça Parametre Şablonu Düzenle" msgid "Delete Part Parameter Template" msgstr "Parça Parametre Şablonu Sil" -#: part/views.py:1489 templates/js/translated/part.js:310 +#: part/views.py:1489 templates/js/translated/part.js:313 msgid "Edit Part Category" msgstr "" @@ -5171,11 +5197,12 @@ msgid "Stock Item Test Report" msgstr "" #: report/templates/report/inventree_test_report_base.html:79 -#: stock/models.py:530 stock/templates/stock/item_base.html:238 +#: stock/models.py:520 stock/templates/stock/item_base.html:149 #: templates/js/translated/build.js:233 templates/js/translated/build.js:637 #: templates/js/translated/build.js:1013 #: templates/js/translated/model_renderers.js:95 -#: templates/js/translated/order.js:1288 templates/js/translated/order.js:1377 +#: templates/js/translated/order.js:1287 templates/js/translated/order.js:1376 +#: templates/js/translated/stock.js:410 msgid "Serial Number" msgstr "Seri Numara" @@ -5184,17 +5211,17 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:93 -#: stock/models.py:1855 +#: stock/models.py:1845 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:94 -#: stock/models.py:1861 +#: stock/models.py:1851 msgid "Result" msgstr "" #: report/templates/report/inventree_test_report_base.html:97 -#: templates/js/translated/order.js:685 templates/js/translated/stock.js:1917 +#: templates/js/translated/order.js:684 templates/js/translated/stock.js:1999 msgid "Date" msgstr "" @@ -5212,7 +5239,7 @@ msgid "Installed Items" msgstr "" #: report/templates/report/inventree_test_report_base.html:137 -#: templates/js/translated/stock.js:2177 +#: templates/js/translated/stock.js:2259 msgid "Serial" msgstr "Seri No" @@ -5220,9 +5247,9 @@ msgstr "Seri No" msgid "Quantity is required" msgstr "" -#: stock/forms.py:91 stock/forms.py:265 stock/models.py:587 -#: stock/templates/stock/item_base.html:382 -#: templates/js/translated/stock.js:1276 +#: stock/forms.py:91 stock/forms.py:265 stock/models.py:577 +#: stock/templates/stock/item_base.html:186 +#: templates/js/translated/stock.js:1358 msgid "Expiry Date" msgstr "" @@ -5270,241 +5297,241 @@ msgstr "" msgid "Confirm removal of installed stock items" msgstr "Kurulu stok kalemlerinin kaldırılmasını onayla" -#: stock/models.py:60 stock/models.py:624 -#: stock/templates/stock/item_base.html:422 +#: stock/models.py:60 stock/models.py:614 +#: stock/templates/stock/item_base.html:417 msgid "Owner" msgstr "" -#: stock/models.py:61 stock/models.py:625 +#: stock/models.py:61 stock/models.py:615 msgid "Select Owner" msgstr "" -#: stock/models.py:352 +#: stock/models.py:342 msgid "StockItem with this serial number already exists" msgstr "Bu seri numarasına sahip stok kalemi zaten var" -#: stock/models.py:388 +#: stock/models.py:378 #, python-brace-format msgid "Part type ('{pf}') must be {pe}" msgstr "" -#: stock/models.py:398 stock/models.py:407 +#: stock/models.py:388 stock/models.py:397 msgid "Quantity must be 1 for item with a serial number" msgstr "Seri numarası olan ögenin miktarı bir olmalı" -#: stock/models.py:399 +#: stock/models.py:389 msgid "Serial number cannot be set if quantity greater than 1" msgstr "Miktar birden büyük ise seri numarası ayarlanamaz" -#: stock/models.py:421 +#: stock/models.py:411 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:427 +#: stock/models.py:417 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:434 +#: stock/models.py:424 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:476 +#: stock/models.py:466 msgid "Parent Stock Item" msgstr "Üst Stok Kalemi" -#: stock/models.py:485 +#: stock/models.py:475 msgid "Base part" msgstr "" -#: stock/models.py:493 +#: stock/models.py:483 msgid "Select a matching supplier part for this stock item" msgstr "Bu stok kalemi için tedarikçi parçası seçin" -#: stock/models.py:498 stock/templates/stock/location.html:12 +#: stock/models.py:488 stock/templates/stock/location.html:12 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" msgstr "Stok Konumu" -#: stock/models.py:501 +#: stock/models.py:491 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:508 +#: stock/models.py:498 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:513 stock/templates/stock/item_base.html:271 +#: stock/models.py:503 stock/templates/stock/item_base.html:299 msgid "Installed In" msgstr "" -#: stock/models.py:516 +#: stock/models.py:506 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:532 +#: stock/models.py:522 msgid "Serial number for this item" msgstr "Bu öge için seri numarası" -#: stock/models.py:546 +#: stock/models.py:536 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:550 +#: stock/models.py:540 msgid "Stock Quantity" msgstr "" -#: stock/models.py:559 +#: stock/models.py:549 msgid "Source Build" msgstr "" -#: stock/models.py:561 +#: stock/models.py:551 msgid "Build for this stock item" msgstr "" -#: stock/models.py:572 +#: stock/models.py:562 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:575 +#: stock/models.py:565 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:581 +#: stock/models.py:571 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:588 +#: stock/models.py:578 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:601 +#: stock/models.py:591 msgid "Delete on deplete" msgstr "" -#: stock/models.py:601 +#: stock/models.py:591 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:611 stock/templates/stock/item.html:111 +#: stock/models.py:601 stock/templates/stock/item.html:111 msgid "Stock Item Notes" msgstr "" -#: stock/models.py:620 +#: stock/models.py:610 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:630 +#: stock/models.py:620 msgid "Scheduled for deletion" msgstr "" -#: stock/models.py:631 +#: stock/models.py:621 msgid "This StockItem will be deleted by the background worker" msgstr "" -#: stock/models.py:1094 +#: stock/models.py:1084 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1100 +#: stock/models.py:1090 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1106 +#: stock/models.py:1096 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({n})" msgstr "" -#: stock/models.py:1109 +#: stock/models.py:1099 msgid "Serial numbers must be a list of integers" msgstr "Seri numaraları tam sayı listesi olmalı" -#: stock/models.py:1112 +#: stock/models.py:1102 msgid "Quantity does not match serial numbers" msgstr "Miktar seri numaları ile eşleşmiyor" -#: stock/models.py:1119 +#: stock/models.py:1109 #, python-brace-format msgid "Serial numbers already exist: {exists}" msgstr "Seri numaraları zaten mevcut: {exists}" -#: stock/models.py:1277 +#: stock/models.py:1267 msgid "StockItem cannot be moved as it is not in stock" msgstr "Stok kalemi stokta olmadığı için taşınamaz" -#: stock/models.py:1775 +#: stock/models.py:1765 msgid "Entry notes" msgstr "" -#: stock/models.py:1832 +#: stock/models.py:1822 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:1838 +#: stock/models.py:1828 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:1856 +#: stock/models.py:1846 msgid "Test name" msgstr "" -#: stock/models.py:1862 templates/js/translated/table_filters.js:266 +#: stock/models.py:1852 templates/js/translated/table_filters.js:266 msgid "Test result" msgstr "" -#: stock/models.py:1868 +#: stock/models.py:1858 msgid "Test output value" msgstr "" -#: stock/models.py:1875 +#: stock/models.py:1865 msgid "Test result attachment" msgstr "" -#: stock/models.py:1881 +#: stock/models.py:1871 msgid "Test notes" msgstr "" -#: stock/serializers.py:166 +#: stock/serializers.py:171 msgid "Purchase price of this stock item" msgstr "" -#: stock/serializers.py:173 +#: stock/serializers.py:178 msgid "Purchase currency of this stock item" msgstr "" -#: stock/serializers.py:287 +#: stock/serializers.py:292 msgid "Enter number of stock items to serialize" msgstr "" -#: stock/serializers.py:302 +#: stock/serializers.py:307 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "" -#: stock/serializers.py:308 +#: stock/serializers.py:313 msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:319 stock/serializers.py:686 +#: stock/serializers.py:324 stock/serializers.py:691 msgid "Destination stock location" msgstr "" -#: stock/serializers.py:326 +#: stock/serializers.py:331 msgid "Optional note field" msgstr "" -#: stock/serializers.py:339 +#: stock/serializers.py:344 msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:556 +#: stock/serializers.py:561 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:584 +#: stock/serializers.py:589 msgid "Stock transaction notes" msgstr "" -#: stock/serializers.py:594 +#: stock/serializers.py:599 msgid "A list of stock items must be provided" msgstr "" @@ -5629,125 +5656,131 @@ msgstr "" msgid "Install" msgstr "" -#: stock/templates/stock/item_base.html:106 +#: stock/templates/stock/item_base.html:108 msgid "Convert to variant" msgstr "Çeşide çevir" -#: stock/templates/stock/item_base.html:109 +#: stock/templates/stock/item_base.html:111 msgid "Duplicate stock item" msgstr "" -#: stock/templates/stock/item_base.html:111 +#: stock/templates/stock/item_base.html:113 msgid "Edit stock item" msgstr "" -#: stock/templates/stock/item_base.html:114 +#: stock/templates/stock/item_base.html:116 msgid "Delete stock item" msgstr "" -#: stock/templates/stock/item_base.html:136 -#: stock/templates/stock/item_base.html:386 -#: templates/js/translated/table_filters.js:247 -msgid "Expired" -msgstr "" - -#: stock/templates/stock/item_base.html:146 -#: stock/templates/stock/item_base.html:388 -#: templates/js/translated/table_filters.js:253 -msgid "Stale" -msgstr "" - -#: stock/templates/stock/item_base.html:161 -msgid "You are not in the list of owners of this item. This stock item cannot be edited." -msgstr "" - -#: stock/templates/stock/item_base.html:168 -msgid "This stock item is in production and cannot be edited." -msgstr "" - -#: stock/templates/stock/item_base.html:169 -msgid "Edit the stock item from the build view." -msgstr "" - -#: stock/templates/stock/item_base.html:182 -msgid "This stock item has not passed all required tests" -msgstr "Stok kalemi tüm gerekli testleri geçmedi" - -#: stock/templates/stock/item_base.html:190 -#, python-format -msgid "This stock item is allocated to Sales Order %(link)s (Quantity: %(qty)s)" -msgstr "" - -#: stock/templates/stock/item_base.html:198 -#, python-format -msgid "This stock item is allocated to Build %(link)s (Quantity: %(qty)s)" -msgstr "" - -#: stock/templates/stock/item_base.html:204 -msgid "This stock item is serialized - it has a unique serial number and the quantity cannot be adjusted." -msgstr "Bu stok kalemi seri numaları - Benzersiz bir seri numarasına sahip ve miktarı ayarlanamaz." - -#: stock/templates/stock/item_base.html:208 -msgid "This stock item cannot be deleted as it has child items" -msgstr "" - -#: stock/templates/stock/item_base.html:212 -msgid "This stock item will be automatically deleted when all stock is depleted." -msgstr "" - -#: stock/templates/stock/item_base.html:241 +#: stock/templates/stock/item_base.html:154 msgid "previous page" msgstr "" -#: stock/templates/stock/item_base.html:247 +#: stock/templates/stock/item_base.html:154 +msgid "Navigate to previous serial number" +msgstr "" + +#: stock/templates/stock/item_base.html:163 msgid "next page" msgstr "" -#: stock/templates/stock/item_base.html:290 -#: templates/js/translated/build.js:1035 -msgid "No location set" -msgstr "Konum ayarlanmadı" - -#: stock/templates/stock/item_base.html:297 -msgid "Barcode Identifier" +#: stock/templates/stock/item_base.html:163 +msgid "Navigate to next serial number" msgstr "" -#: stock/templates/stock/item_base.html:339 -msgid "Parent Item" -msgstr "" - -#: stock/templates/stock/item_base.html:357 -msgid "No manufacturer set" -msgstr "" - -#: stock/templates/stock/item_base.html:386 +#: stock/templates/stock/item_base.html:190 #, python-format msgid "This StockItem expired on %(item.expiry_date)s" msgstr "Bu stok kaleminin süresi %(item.expiry_date)s tarihinde sona erdi" -#: stock/templates/stock/item_base.html:388 +#: stock/templates/stock/item_base.html:190 +#: templates/js/translated/table_filters.js:247 +msgid "Expired" +msgstr "" + +#: stock/templates/stock/item_base.html:192 #, python-format msgid "This StockItem expires on %(item.expiry_date)s" msgstr "Bu stok kaleminin süresi %(item.expiry_date)s tarihinde sona erecek" -#: stock/templates/stock/item_base.html:395 -#: templates/js/translated/stock.js:1289 +#: stock/templates/stock/item_base.html:192 +#: templates/js/translated/table_filters.js:253 +msgid "Stale" +msgstr "" + +#: stock/templates/stock/item_base.html:199 +#: templates/js/translated/stock.js:1371 msgid "Last Updated" msgstr "" -#: stock/templates/stock/item_base.html:400 +#: stock/templates/stock/item_base.html:204 msgid "Last Stocktake" msgstr "" -#: stock/templates/stock/item_base.html:404 +#: stock/templates/stock/item_base.html:208 msgid "No stocktake performed" msgstr "" -#: stock/templates/stock/item_base.html:415 +#: stock/templates/stock/item_base.html:226 +msgid "You are not in the list of owners of this item. This stock item cannot be edited." +msgstr "" + +#: stock/templates/stock/item_base.html:233 +msgid "This stock item is in production and cannot be edited." +msgstr "" + +#: stock/templates/stock/item_base.html:234 +msgid "Edit the stock item from the build view." +msgstr "" + +#: stock/templates/stock/item_base.html:247 +msgid "This stock item has not passed all required tests" +msgstr "Stok kalemi tüm gerekli testleri geçmedi" + +#: stock/templates/stock/item_base.html:255 +#, python-format +msgid "This stock item is allocated to Sales Order %(link)s (Quantity: %(qty)s)" +msgstr "" + +#: stock/templates/stock/item_base.html:263 +#, python-format +msgid "This stock item is allocated to Build %(link)s (Quantity: %(qty)s)" +msgstr "" + +#: stock/templates/stock/item_base.html:269 +msgid "This stock item is serialized - it has a unique serial number and the quantity cannot be adjusted." +msgstr "Bu stok kalemi seri numaları - Benzersiz bir seri numarasına sahip ve miktarı ayarlanamaz." + +#: stock/templates/stock/item_base.html:273 +msgid "This stock item cannot be deleted as it has child items" +msgstr "" + +#: stock/templates/stock/item_base.html:277 +msgid "This stock item will be automatically deleted when all stock is depleted." +msgstr "" + +#: stock/templates/stock/item_base.html:318 +#: templates/js/translated/build.js:1035 +msgid "No location set" +msgstr "Konum ayarlanmadı" + +#: stock/templates/stock/item_base.html:325 +msgid "Barcode Identifier" +msgstr "" + +#: stock/templates/stock/item_base.html:367 +msgid "Parent Item" +msgstr "" + +#: stock/templates/stock/item_base.html:385 +msgid "No manufacturer set" +msgstr "" + +#: stock/templates/stock/item_base.html:410 msgid "Tests" msgstr "" -#: stock/templates/stock/item_base.html:505 +#: stock/templates/stock/item_base.html:500 msgid "Edit Stock Status" msgstr "" @@ -5825,30 +5858,35 @@ msgstr "Yeni stok konumu oluştur" msgid "New Location" msgstr "Yeni Konum" -#: stock/templates/stock/location.html:86 +#: stock/templates/stock/location.html:95 +#: stock/templates/stock/location.html:101 +msgid "Location Path" +msgstr "" + +#: stock/templates/stock/location.html:102 msgid "Top level stock location" msgstr "" -#: stock/templates/stock/location.html:95 +#: stock/templates/stock/location.html:115 msgid "You are not in the list of owners of this location. This stock location cannot be edited." msgstr "Bu konumun sahipleri listesinde değilsiniz. Bu stok konumu düzenlenemez." -#: stock/templates/stock/location.html:113 -#: stock/templates/stock/location.html:160 +#: stock/templates/stock/location.html:128 +#: stock/templates/stock/location.html:175 #: stock/templates/stock/location_sidebar.html:5 msgid "Sublocations" msgstr "Alt konumlar" -#: stock/templates/stock/location.html:127 templates/InvenTree/search.html:170 +#: stock/templates/stock/location.html:142 templates/InvenTree/search.html:170 #: templates/stats.html:97 users/models.py:42 msgid "Stock Locations" msgstr "Stok Konumları" -#: stock/templates/stock/location.html:167 templates/stock_table.html:30 +#: stock/templates/stock/location.html:182 templates/stock_table.html:30 msgid "Printing Actions" msgstr "Yazdırma İşlemleri" -#: stock/templates/stock/location.html:171 templates/stock_table.html:34 +#: stock/templates/stock/location.html:186 templates/stock_table.html:34 msgid "Print labels" msgstr "Etiketleri yazdır" @@ -5942,7 +5980,7 @@ msgstr "" msgid "Uninstall Stock Items" msgstr "" -#: stock/views.py:760 templates/js/translated/stock.js:648 +#: stock/views.py:760 templates/js/translated/stock.js:730 msgid "Confirm stock adjustment" msgstr "Stok ayarlamasını onayla" @@ -5950,7 +5988,7 @@ msgstr "Stok ayarlamasını onayla" msgid "Uninstalled stock items" msgstr "" -#: stock/views.py:793 templates/js/translated/stock.js:318 +#: stock/views.py:793 templates/js/translated/stock.js:319 msgid "Edit Stock Item" msgstr "" @@ -5962,7 +6000,7 @@ msgstr "Yeni Stok konumu oluştur" msgid "Create new Stock Item" msgstr "" -#: stock/views.py:1186 templates/js/translated/stock.js:298 +#: stock/views.py:1186 templates/js/translated/stock.js:299 msgid "Duplicate Stock Item" msgstr "" @@ -6868,7 +6906,7 @@ msgstr "" msgid "Unlink" msgstr "" -#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:600 +#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:682 msgid "Remove stock item" msgstr "" @@ -6963,7 +7001,7 @@ msgid "View BOM" msgstr "" #: templates/js/translated/bom.js:608 templates/js/translated/build.js:1183 -#: templates/js/translated/order.js:1320 +#: templates/js/translated/order.js:1319 msgid "Actions" msgstr "İşlemler" @@ -7055,7 +7093,7 @@ msgstr "" msgid "No build order allocations found" msgstr "" -#: templates/js/translated/build.js:424 templates/js/translated/order.js:1194 +#: templates/js/translated/build.js:424 templates/js/translated/order.js:1193 msgid "Location not specified" msgstr "" @@ -7064,12 +7102,12 @@ msgid "No active build outputs found" msgstr "" #: templates/js/translated/build.js:1052 templates/js/translated/build.js:1760 -#: templates/js/translated/order.js:1327 +#: templates/js/translated/order.js:1326 msgid "Edit stock allocation" msgstr "Stok tahsisini düzenle" #: templates/js/translated/build.js:1054 templates/js/translated/build.js:1761 -#: templates/js/translated/order.js:1328 +#: templates/js/translated/order.js:1327 msgid "Delete stock allocation" msgstr "Stok tahsisini sil" @@ -7090,11 +7128,11 @@ msgid "Quantity Per" msgstr "" #: templates/js/translated/build.js:1134 templates/js/translated/build.js:1360 -#: templates/js/translated/build.js:1756 templates/js/translated/order.js:1557 +#: templates/js/translated/build.js:1756 templates/js/translated/order.js:1556 msgid "Allocated" msgstr "" -#: templates/js/translated/build.js:1190 templates/js/translated/order.js:1611 +#: templates/js/translated/build.js:1190 templates/js/translated/order.js:1610 msgid "Build stock" msgstr "" @@ -7102,7 +7140,7 @@ msgstr "" msgid "Order stock" msgstr "" -#: templates/js/translated/build.js:1197 templates/js/translated/order.js:1604 +#: templates/js/translated/build.js:1197 templates/js/translated/order.js:1603 msgid "Allocate stock" msgstr "" @@ -7143,9 +7181,9 @@ msgstr "" msgid "No builds matching query" msgstr "" -#: templates/js/translated/build.js:1593 templates/js/translated/part.js:966 -#: templates/js/translated/part.js:1377 templates/js/translated/stock.js:1094 -#: templates/js/translated/stock.js:1871 +#: templates/js/translated/build.js:1593 templates/js/translated/part.js:1147 +#: templates/js/translated/part.js:1558 templates/js/translated/stock.js:1176 +#: templates/js/translated/stock.js:1953 msgid "Select" msgstr "" @@ -7153,7 +7191,7 @@ msgstr "" msgid "Build order is overdue" msgstr "" -#: templates/js/translated/build.js:1674 templates/js/translated/stock.js:2090 +#: templates/js/translated/build.js:1674 templates/js/translated/stock.js:2172 msgid "No user information" msgstr "" @@ -7197,10 +7235,6 @@ msgstr "" msgid "Delete Supplier Part" msgstr "" -#: templates/js/translated/company.js:265 -msgid "Edit Company" -msgstr "" - #: templates/js/translated/company.js:286 msgid "Add new Company" msgstr "" @@ -7230,34 +7264,34 @@ msgid "No manufacturer parts found" msgstr "" #: templates/js/translated/company.js:497 -#: templates/js/translated/company.js:754 templates/js/translated/part.js:449 -#: templates/js/translated/part.js:534 +#: templates/js/translated/company.js:754 templates/js/translated/part.js:456 +#: templates/js/translated/part.js:541 msgid "Template part" msgstr "Şablon Parça" #: templates/js/translated/company.js:501 -#: templates/js/translated/company.js:758 templates/js/translated/part.js:453 -#: templates/js/translated/part.js:538 +#: templates/js/translated/company.js:758 templates/js/translated/part.js:460 +#: templates/js/translated/part.js:545 msgid "Assembled part" msgstr "" -#: templates/js/translated/company.js:628 templates/js/translated/part.js:626 +#: templates/js/translated/company.js:628 templates/js/translated/part.js:633 msgid "No parameters found" msgstr "" -#: templates/js/translated/company.js:665 templates/js/translated/part.js:668 +#: templates/js/translated/company.js:665 templates/js/translated/part.js:675 msgid "Edit parameter" msgstr "" -#: templates/js/translated/company.js:666 templates/js/translated/part.js:669 +#: templates/js/translated/company.js:666 templates/js/translated/part.js:676 msgid "Delete parameter" msgstr "" -#: templates/js/translated/company.js:685 templates/js/translated/part.js:686 +#: templates/js/translated/company.js:685 templates/js/translated/part.js:693 msgid "Edit Parameter" msgstr "" -#: templates/js/translated/company.js:696 templates/js/translated/part.js:698 +#: templates/js/translated/company.js:696 templates/js/translated/part.js:705 msgid "Delete Parameter" msgstr "" @@ -7346,7 +7380,7 @@ msgid "NO" msgstr "" #: templates/js/translated/label.js:29 templates/js/translated/report.js:118 -#: templates/js/translated/stock.js:624 +#: templates/js/translated/stock.js:706 msgid "Select Stock Items" msgstr "" @@ -7502,11 +7536,11 @@ msgstr "" msgid "Export Order" msgstr "" -#: templates/js/translated/order.js:211 templates/js/translated/stock.js:423 +#: templates/js/translated/order.js:211 templates/js/translated/stock.js:505 msgid "Format" msgstr "" -#: templates/js/translated/order.js:212 templates/js/translated/stock.js:424 +#: templates/js/translated/order.js:212 templates/js/translated/stock.js:506 msgid "Select file format" msgstr "" @@ -7522,7 +7556,7 @@ msgstr "" msgid "Quantity to receive" msgstr "" -#: templates/js/translated/order.js:360 templates/js/translated/stock.js:1673 +#: templates/js/translated/order.js:360 templates/js/translated/stock.js:1755 msgid "Stock Status" msgstr "" @@ -7546,321 +7580,321 @@ msgstr "" msgid "Receive Purchase Order Items" msgstr "" -#: templates/js/translated/order.js:627 +#: templates/js/translated/order.js:627 templates/js/translated/part.js:746 msgid "No purchase orders found" msgstr "" -#: templates/js/translated/order.js:652 templates/js/translated/order.js:1063 +#: templates/js/translated/order.js:659 templates/js/translated/order.js:1062 msgid "Order is overdue" msgstr "" -#: templates/js/translated/order.js:772 templates/js/translated/order.js:1646 +#: templates/js/translated/order.js:771 templates/js/translated/order.js:1645 msgid "Edit Line Item" msgstr "" -#: templates/js/translated/order.js:784 templates/js/translated/order.js:1657 +#: templates/js/translated/order.js:783 templates/js/translated/order.js:1656 msgid "Delete Line Item" msgstr "" -#: templates/js/translated/order.js:823 +#: templates/js/translated/order.js:822 msgid "No line items found" msgstr "" -#: templates/js/translated/order.js:850 templates/js/translated/order.js:1467 +#: templates/js/translated/order.js:849 templates/js/translated/order.js:1466 msgid "Total" msgstr "" -#: templates/js/translated/order.js:904 templates/js/translated/order.js:1492 -#: templates/js/translated/part.js:1594 templates/js/translated/part.js:1805 +#: templates/js/translated/order.js:903 templates/js/translated/order.js:1491 +#: templates/js/translated/part.js:1775 templates/js/translated/part.js:1986 msgid "Unit Price" msgstr "" -#: templates/js/translated/order.js:919 templates/js/translated/order.js:1508 +#: templates/js/translated/order.js:918 templates/js/translated/order.js:1507 msgid "Total Price" msgstr "" -#: templates/js/translated/order.js:997 templates/js/translated/order.js:1617 +#: templates/js/translated/order.js:996 templates/js/translated/order.js:1616 msgid "Edit line item" msgstr "" -#: templates/js/translated/order.js:998 +#: templates/js/translated/order.js:997 msgid "Delete line item" msgstr "" -#: templates/js/translated/order.js:1002 +#: templates/js/translated/order.js:1001 templates/js/translated/part.js:878 msgid "Receive line item" msgstr "" -#: templates/js/translated/order.js:1039 +#: templates/js/translated/order.js:1038 msgid "No sales orders found" msgstr "" -#: templates/js/translated/order.js:1077 +#: templates/js/translated/order.js:1076 msgid "Invalid Customer" msgstr "" -#: templates/js/translated/order.js:1155 +#: templates/js/translated/order.js:1154 msgid "No sales order allocations found" msgstr "" -#: templates/js/translated/order.js:1248 +#: templates/js/translated/order.js:1247 msgid "Edit Stock Allocation" msgstr "" -#: templates/js/translated/order.js:1265 +#: templates/js/translated/order.js:1264 msgid "Confirm Delete Operation" msgstr "Silme İşlemini Onayla" -#: templates/js/translated/order.js:1266 +#: templates/js/translated/order.js:1265 msgid "Delete Stock Allocation" msgstr "" -#: templates/js/translated/order.js:1308 +#: templates/js/translated/order.js:1307 msgid "Stock location not specified" msgstr "" -#: templates/js/translated/order.js:1557 +#: templates/js/translated/order.js:1556 msgid "Fulfilled" msgstr "" -#: templates/js/translated/order.js:1601 +#: templates/js/translated/order.js:1600 msgid "Allocate serial numbers" msgstr "Seri numaralarını tahsis et" -#: templates/js/translated/order.js:1607 +#: templates/js/translated/order.js:1606 msgid "Purchase stock" msgstr "" -#: templates/js/translated/order.js:1614 templates/js/translated/order.js:1793 +#: templates/js/translated/order.js:1613 templates/js/translated/order.js:1792 msgid "Calculate price" msgstr "" -#: templates/js/translated/order.js:1618 +#: templates/js/translated/order.js:1617 msgid "Delete line item " msgstr "" -#: templates/js/translated/order.js:1741 +#: templates/js/translated/order.js:1740 msgid "Allocate Stock Item" msgstr "" -#: templates/js/translated/order.js:1801 +#: templates/js/translated/order.js:1800 msgid "Update Unit Price" msgstr "" -#: templates/js/translated/order.js:1815 +#: templates/js/translated/order.js:1814 msgid "No matching line items" msgstr "" -#: templates/js/translated/part.js:51 +#: templates/js/translated/part.js:52 msgid "Part Attributes" msgstr "" -#: templates/js/translated/part.js:55 +#: templates/js/translated/part.js:56 msgid "Part Creation Options" msgstr "" -#: templates/js/translated/part.js:59 +#: templates/js/translated/part.js:60 msgid "Part Duplication Options" msgstr "" -#: templates/js/translated/part.js:63 +#: templates/js/translated/part.js:64 msgid "Supplier Options" msgstr "" -#: templates/js/translated/part.js:77 +#: templates/js/translated/part.js:78 msgid "Add Part Category" msgstr "" -#: templates/js/translated/part.js:166 +#: templates/js/translated/part.js:162 msgid "Create Initial Stock" msgstr "" -#: templates/js/translated/part.js:167 +#: templates/js/translated/part.js:163 msgid "Create an initial stock item for this part" msgstr "" -#: templates/js/translated/part.js:174 +#: templates/js/translated/part.js:170 msgid "Initial Stock Quantity" msgstr "" -#: templates/js/translated/part.js:175 +#: templates/js/translated/part.js:171 msgid "Specify initial stock quantity for this part" msgstr "" -#: templates/js/translated/part.js:182 +#: templates/js/translated/part.js:178 msgid "Select destination stock location" msgstr "" -#: templates/js/translated/part.js:193 +#: templates/js/translated/part.js:196 msgid "Copy Category Parameters" msgstr "" -#: templates/js/translated/part.js:194 +#: templates/js/translated/part.js:197 msgid "Copy parameter templates from selected part category" msgstr "" -#: templates/js/translated/part.js:202 +#: templates/js/translated/part.js:205 msgid "Add Supplier Data" msgstr "" -#: templates/js/translated/part.js:203 +#: templates/js/translated/part.js:206 msgid "Create initial supplier data for this part" msgstr "" -#: templates/js/translated/part.js:259 +#: templates/js/translated/part.js:262 msgid "Copy Image" msgstr "" -#: templates/js/translated/part.js:260 +#: templates/js/translated/part.js:263 msgid "Copy image from original part" msgstr "" -#: templates/js/translated/part.js:268 +#: templates/js/translated/part.js:271 msgid "Copy bill of materials from original part" msgstr "" -#: templates/js/translated/part.js:275 +#: templates/js/translated/part.js:278 msgid "Copy Parameters" msgstr "" -#: templates/js/translated/part.js:276 +#: templates/js/translated/part.js:279 msgid "Copy parameter data from original part" msgstr "" -#: templates/js/translated/part.js:289 +#: templates/js/translated/part.js:292 msgid "Parent part category" msgstr "" -#: templates/js/translated/part.js:333 +#: templates/js/translated/part.js:336 msgid "Edit Part" msgstr "" -#: templates/js/translated/part.js:335 +#: templates/js/translated/part.js:338 msgid "Part edited" msgstr "" -#: templates/js/translated/part.js:403 +#: templates/js/translated/part.js:410 msgid "You are subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:405 +#: templates/js/translated/part.js:412 msgid "You have subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:410 +#: templates/js/translated/part.js:417 msgid "Subscribe to notifications for this item" msgstr "" -#: templates/js/translated/part.js:412 +#: templates/js/translated/part.js:419 msgid "You have unsubscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:441 templates/js/translated/part.js:526 +#: templates/js/translated/part.js:448 templates/js/translated/part.js:533 msgid "Trackable part" msgstr "" -#: templates/js/translated/part.js:445 templates/js/translated/part.js:530 +#: templates/js/translated/part.js:452 templates/js/translated/part.js:537 msgid "Virtual part" msgstr "" -#: templates/js/translated/part.js:457 +#: templates/js/translated/part.js:464 msgid "Subscribed part" msgstr "" -#: templates/js/translated/part.js:461 +#: templates/js/translated/part.js:468 msgid "Salable part" msgstr "" -#: templates/js/translated/part.js:576 +#: templates/js/translated/part.js:583 msgid "No variants found" msgstr "Çeşit bulunamadı" -#: templates/js/translated/part.js:765 +#: templates/js/translated/part.js:946 msgid "Delete part relationship" msgstr "" -#: templates/js/translated/part.js:789 +#: templates/js/translated/part.js:970 msgid "Delete Part Relationship" msgstr "" -#: templates/js/translated/part.js:856 templates/js/translated/part.js:1116 +#: templates/js/translated/part.js:1037 templates/js/translated/part.js:1297 msgid "No parts found" msgstr "" -#: templates/js/translated/part.js:1026 +#: templates/js/translated/part.js:1207 msgid "No category" msgstr "" -#: templates/js/translated/part.js:1049 +#: templates/js/translated/part.js:1230 #: templates/js/translated/table_filters.js:381 msgid "Low stock" msgstr "" -#: templates/js/translated/part.js:1140 templates/js/translated/part.js:1312 -#: templates/js/translated/stock.js:1832 +#: templates/js/translated/part.js:1321 templates/js/translated/part.js:1493 +#: templates/js/translated/stock.js:1914 msgid "Display as list" msgstr "" -#: templates/js/translated/part.js:1156 +#: templates/js/translated/part.js:1337 msgid "Display as grid" msgstr "" -#: templates/js/translated/part.js:1331 templates/js/translated/stock.js:1851 +#: templates/js/translated/part.js:1512 templates/js/translated/stock.js:1933 msgid "Display as tree" msgstr "" -#: templates/js/translated/part.js:1395 +#: templates/js/translated/part.js:1576 msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:1409 templates/js/translated/stock.js:1895 +#: templates/js/translated/part.js:1590 templates/js/translated/stock.js:1977 msgid "Path" msgstr "" -#: templates/js/translated/part.js:1453 +#: templates/js/translated/part.js:1634 msgid "No test templates matching query" msgstr "Sorgu ile eşleşen test şablonu bulunamadı" -#: templates/js/translated/part.js:1504 templates/js/translated/stock.js:816 +#: templates/js/translated/part.js:1685 templates/js/translated/stock.js:898 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:1505 templates/js/translated/stock.js:817 +#: templates/js/translated/part.js:1686 templates/js/translated/stock.js:899 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:1511 +#: templates/js/translated/part.js:1692 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:1533 +#: templates/js/translated/part.js:1714 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:1547 +#: templates/js/translated/part.js:1728 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:1572 +#: templates/js/translated/part.js:1753 #, python-brace-format msgid "No ${human_name} information found" msgstr "" -#: templates/js/translated/part.js:1627 +#: templates/js/translated/part.js:1808 #, python-brace-format msgid "Edit ${human_name}" msgstr "" -#: templates/js/translated/part.js:1628 +#: templates/js/translated/part.js:1809 #, python-brace-format msgid "Delete ${human_name}" msgstr "" -#: templates/js/translated/part.js:1729 +#: templates/js/translated/part.js:1910 msgid "Single Price" msgstr "" -#: templates/js/translated/part.js:1748 +#: templates/js/translated/part.js:1929 msgid "Single Price Difference" msgstr "" @@ -7930,276 +7964,300 @@ msgstr "" msgid "Sales Order(s) must be selected before printing report" msgstr "" -#: templates/js/translated/stock.js:70 +#: templates/js/translated/stock.js:71 msgid "Serialize Stock Item" msgstr "" -#: templates/js/translated/stock.js:88 templates/js/translated/stock.js:167 +#: templates/js/translated/stock.js:89 templates/js/translated/stock.js:168 msgid "Next available serial number" msgstr "" -#: templates/js/translated/stock.js:90 templates/js/translated/stock.js:169 +#: templates/js/translated/stock.js:91 templates/js/translated/stock.js:170 msgid "Latest serial number" msgstr "" -#: templates/js/translated/stock.js:104 +#: templates/js/translated/stock.js:105 msgid "Parent stock location" msgstr "" -#: templates/js/translated/stock.js:140 +#: templates/js/translated/stock.js:141 msgid "New Stock Location" msgstr "" -#: templates/js/translated/stock.js:180 +#: templates/js/translated/stock.js:181 msgid "This part cannot be serialized" msgstr "" -#: templates/js/translated/stock.js:219 +#: templates/js/translated/stock.js:220 msgid "Enter initial quantity for this stock item" msgstr "" -#: templates/js/translated/stock.js:225 +#: templates/js/translated/stock.js:226 msgid "Enter serial numbers for new stock (or leave blank)" msgstr "" -#: templates/js/translated/stock.js:368 +#: templates/js/translated/stock.js:369 msgid "Created new stock item" msgstr "" -#: templates/js/translated/stock.js:381 +#: templates/js/translated/stock.js:382 msgid "Created multiple stock items" msgstr "" -#: templates/js/translated/stock.js:420 +#: templates/js/translated/stock.js:407 +msgid "Find Serial Number" +msgstr "" + +#: templates/js/translated/stock.js:411 templates/js/translated/stock.js:412 +msgid "Enter serial number" +msgstr "" + +#: templates/js/translated/stock.js:428 +msgid "Enter a serial number" +msgstr "" + +#: templates/js/translated/stock.js:448 +msgid "No matching serial number" +msgstr "" + +#: templates/js/translated/stock.js:457 +msgid "More than one matching result found" +msgstr "" + +#: templates/js/translated/stock.js:502 msgid "Export Stock" msgstr "" -#: templates/js/translated/stock.js:431 +#: templates/js/translated/stock.js:513 msgid "Include Sublocations" msgstr "" -#: templates/js/translated/stock.js:432 +#: templates/js/translated/stock.js:514 msgid "Include stock items in sublocations" msgstr "" -#: templates/js/translated/stock.js:474 +#: templates/js/translated/stock.js:556 msgid "Transfer Stock" msgstr "" -#: templates/js/translated/stock.js:475 +#: templates/js/translated/stock.js:557 msgid "Move" msgstr "" -#: templates/js/translated/stock.js:481 +#: templates/js/translated/stock.js:563 msgid "Count Stock" msgstr "" -#: templates/js/translated/stock.js:482 +#: templates/js/translated/stock.js:564 msgid "Count" msgstr "" -#: templates/js/translated/stock.js:486 +#: templates/js/translated/stock.js:568 msgid "Remove Stock" msgstr "" -#: templates/js/translated/stock.js:487 +#: templates/js/translated/stock.js:569 msgid "Take" msgstr "" -#: templates/js/translated/stock.js:491 +#: templates/js/translated/stock.js:573 msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:492 users/models.py:200 +#: templates/js/translated/stock.js:574 users/models.py:200 msgid "Add" msgstr "" -#: templates/js/translated/stock.js:496 templates/stock_table.html:56 +#: templates/js/translated/stock.js:578 templates/stock_table.html:56 msgid "Delete Stock" msgstr "" -#: templates/js/translated/stock.js:585 +#: templates/js/translated/stock.js:667 msgid "Quantity cannot be adjusted for serialized stock" msgstr "" -#: templates/js/translated/stock.js:585 +#: templates/js/translated/stock.js:667 msgid "Specify stock quantity" msgstr "" -#: templates/js/translated/stock.js:625 +#: templates/js/translated/stock.js:707 msgid "You must select at least one available stock item" msgstr "" -#: templates/js/translated/stock.js:783 +#: templates/js/translated/stock.js:865 msgid "PASS" msgstr "" -#: templates/js/translated/stock.js:785 +#: templates/js/translated/stock.js:867 msgid "FAIL" msgstr "" -#: templates/js/translated/stock.js:790 +#: templates/js/translated/stock.js:872 msgid "NO RESULT" msgstr "" -#: templates/js/translated/stock.js:812 +#: templates/js/translated/stock.js:894 msgid "Add test result" msgstr "" -#: templates/js/translated/stock.js:838 +#: templates/js/translated/stock.js:920 msgid "No test results found" msgstr "" -#: templates/js/translated/stock.js:895 +#: templates/js/translated/stock.js:977 msgid "Test Date" msgstr "" -#: templates/js/translated/stock.js:1002 +#: templates/js/translated/stock.js:1084 msgid "In production" msgstr "" -#: templates/js/translated/stock.js:1006 +#: templates/js/translated/stock.js:1088 msgid "Installed in Stock Item" msgstr "" -#: templates/js/translated/stock.js:1010 +#: templates/js/translated/stock.js:1092 msgid "Shipped to customer" msgstr "" -#: templates/js/translated/stock.js:1014 +#: templates/js/translated/stock.js:1096 msgid "Assigned to Sales Order" msgstr "" -#: templates/js/translated/stock.js:1020 +#: templates/js/translated/stock.js:1102 msgid "No stock location set" msgstr "Stok konumu ayarlanmadı" -#: templates/js/translated/stock.js:1178 +#: templates/js/translated/stock.js:1260 msgid "Stock item is in production" msgstr "" -#: templates/js/translated/stock.js:1183 +#: templates/js/translated/stock.js:1265 msgid "Stock item assigned to sales order" msgstr "" -#: templates/js/translated/stock.js:1186 +#: templates/js/translated/stock.js:1268 msgid "Stock item assigned to customer" msgstr "" -#: templates/js/translated/stock.js:1190 +#: templates/js/translated/stock.js:1272 msgid "Stock item has expired" msgstr "" -#: templates/js/translated/stock.js:1192 +#: templates/js/translated/stock.js:1274 msgid "Stock item will expire soon" msgstr "" -#: templates/js/translated/stock.js:1196 +#: templates/js/translated/stock.js:1278 msgid "Stock item has been allocated" msgstr "" -#: templates/js/translated/stock.js:1200 +#: templates/js/translated/stock.js:1282 msgid "Stock item has been installed in another item" msgstr "" -#: templates/js/translated/stock.js:1207 +#: templates/js/translated/stock.js:1289 msgid "Stock item has been rejected" msgstr "" -#: templates/js/translated/stock.js:1209 +#: templates/js/translated/stock.js:1291 msgid "Stock item is lost" msgstr "" -#: templates/js/translated/stock.js:1211 +#: templates/js/translated/stock.js:1293 msgid "Stock item is destroyed" msgstr "" -#: templates/js/translated/stock.js:1215 +#: templates/js/translated/stock.js:1297 #: templates/js/translated/table_filters.js:183 msgid "Depleted" msgstr "" -#: templates/js/translated/stock.js:1265 +#: templates/js/translated/stock.js:1347 msgid "Stocktake" msgstr "" -#: templates/js/translated/stock.js:1338 +#: templates/js/translated/stock.js:1420 msgid "Supplier part not specified" msgstr "" -#: templates/js/translated/stock.js:1376 +#: templates/js/translated/stock.js:1458 msgid "No stock items matching query" msgstr "" -#: templates/js/translated/stock.js:1397 templates/js/translated/stock.js:1445 +#: templates/js/translated/stock.js:1479 templates/js/translated/stock.js:1527 msgid "items" msgstr "" -#: templates/js/translated/stock.js:1485 +#: templates/js/translated/stock.js:1567 msgid "batches" msgstr "" -#: templates/js/translated/stock.js:1512 +#: templates/js/translated/stock.js:1594 msgid "locations" msgstr "konumlar" -#: templates/js/translated/stock.js:1514 +#: templates/js/translated/stock.js:1596 msgid "Undefined location" msgstr "Tanımsız konum" -#: templates/js/translated/stock.js:1688 +#: templates/js/translated/stock.js:1770 msgid "Set Stock Status" msgstr "" -#: templates/js/translated/stock.js:1702 +#: templates/js/translated/stock.js:1784 msgid "Select Status Code" msgstr "" -#: templates/js/translated/stock.js:1703 +#: templates/js/translated/stock.js:1785 msgid "Status code must be selected" msgstr "" -#: templates/js/translated/stock.js:1927 +#: templates/js/translated/stock.js:2009 msgid "Invalid date" msgstr "" -#: templates/js/translated/stock.js:1974 +#: templates/js/translated/stock.js:2031 +msgid "Details" +msgstr "Detaylar" + +#: templates/js/translated/stock.js:2056 msgid "Location no longer exists" msgstr "Konum artık yok" -#: templates/js/translated/stock.js:1993 +#: templates/js/translated/stock.js:2075 msgid "Purchase order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2012 +#: templates/js/translated/stock.js:2094 msgid "Customer no longer exists" msgstr "" -#: templates/js/translated/stock.js:2030 +#: templates/js/translated/stock.js:2112 msgid "Stock item no longer exists" msgstr "" -#: templates/js/translated/stock.js:2053 +#: templates/js/translated/stock.js:2135 msgid "Added" msgstr "" -#: templates/js/translated/stock.js:2061 +#: templates/js/translated/stock.js:2143 msgid "Removed" msgstr "" -#: templates/js/translated/stock.js:2102 +#: templates/js/translated/stock.js:2184 msgid "Edit tracking entry" msgstr "" -#: templates/js/translated/stock.js:2103 +#: templates/js/translated/stock.js:2185 msgid "Delete tracking entry" msgstr "" -#: templates/js/translated/stock.js:2154 +#: templates/js/translated/stock.js:2236 msgid "No installed items" msgstr "" -#: templates/js/translated/stock.js:2205 +#: templates/js/translated/stock.js:2287 msgid "Uninstall Stock Item" msgstr "" diff --git a/InvenTree/locale/vi/LC_MESSAGES/django.po b/InvenTree/locale/vi/LC_MESSAGES/django.po index ac32301153..8f72d43f63 100644 --- a/InvenTree/locale/vi/LC_MESSAGES/django.po +++ b/InvenTree/locale/vi/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-11-30 21:49+0000\n" -"PO-Revision-Date: 2021-11-30 21:51\n" +"POT-Creation-Date: 2021-12-03 10:37+0000\n" +"PO-Revision-Date: 2021-12-03 11:25\n" "Last-Translator: \n" "Language-Team: Vietnamese\n" "Language: vi_VN\n" @@ -114,129 +114,130 @@ msgstr "" msgid "Number of unique serial number ({s}) must match quantity ({q})" msgstr "" -#: InvenTree/models.py:114 +#: InvenTree/models.py:120 msgid "Missing file" msgstr "" -#: InvenTree/models.py:115 +#: InvenTree/models.py:121 msgid "Missing external link" msgstr "" -#: InvenTree/models.py:126 stock/models.py:1874 +#: InvenTree/models.py:132 stock/models.py:1864 #: templates/js/translated/attachment.js:117 msgid "Attachment" msgstr "" -#: InvenTree/models.py:127 +#: InvenTree/models.py:133 msgid "Select file to attach" msgstr "" -#: InvenTree/models.py:133 company/models.py:131 company/models.py:348 +#: InvenTree/models.py:139 company/models.py:131 company/models.py:348 #: company/models.py:564 order/models.py:163 part/models.py:797 #: report/templates/report/inventree_build_order_base.html:165 #: templates/js/translated/company.js:537 -#: templates/js/translated/company.js:826 templates/js/translated/part.js:1077 +#: templates/js/translated/company.js:826 templates/js/translated/part.js:1258 msgid "Link" msgstr "" -#: InvenTree/models.py:134 build/models.py:330 part/models.py:798 -#: stock/models.py:540 +#: InvenTree/models.py:140 build/models.py:330 part/models.py:798 +#: stock/models.py:530 msgid "Link to external URL" msgstr "" -#: InvenTree/models.py:137 templates/js/translated/attachment.js:161 +#: InvenTree/models.py:143 templates/js/translated/attachment.js:161 msgid "Comment" msgstr "Bình luận" -#: InvenTree/models.py:137 +#: InvenTree/models.py:143 msgid "File comment" msgstr "" -#: InvenTree/models.py:143 InvenTree/models.py:144 common/models.py:1185 +#: InvenTree/models.py:149 InvenTree/models.py:150 common/models.py:1185 #: common/models.py:1186 part/models.py:2205 part/models.py:2225 #: report/templates/report/inventree_test_report_base.html:96 -#: templates/js/translated/stock.js:2084 +#: templates/js/translated/stock.js:2166 msgid "User" msgstr "Người dùng" -#: InvenTree/models.py:147 +#: InvenTree/models.py:153 msgid "upload date" msgstr "Ngày tải lên" -#: InvenTree/models.py:170 +#: InvenTree/models.py:176 msgid "Filename must not be empty" msgstr "Tên tập tin không được để trống" -#: InvenTree/models.py:193 +#: InvenTree/models.py:199 msgid "Invalid attachment directory" msgstr "" -#: InvenTree/models.py:203 +#: InvenTree/models.py:209 #, python-brace-format msgid "Filename contains illegal character '{c}'" msgstr "" -#: InvenTree/models.py:206 +#: InvenTree/models.py:212 msgid "Filename missing extension" msgstr "" -#: InvenTree/models.py:213 +#: InvenTree/models.py:219 msgid "Attachment with this filename already exists" msgstr "" -#: InvenTree/models.py:220 +#: InvenTree/models.py:226 msgid "Error renaming file" msgstr "" -#: InvenTree/models.py:255 +#: InvenTree/models.py:261 msgid "Invalid choice" msgstr "" -#: InvenTree/models.py:271 InvenTree/models.py:272 company/models.py:415 +#: InvenTree/models.py:277 InvenTree/models.py:278 company/models.py:415 #: label/models.py:112 part/models.py:741 part/models.py:2389 -#: part/templates/part/detail.html:25 report/models.py:181 -#: templates/InvenTree/settings/settings.html:259 -#: templates/js/translated/company.js:638 templates/js/translated/part.js:499 -#: templates/js/translated/part.js:636 templates/js/translated/part.js:1384 -#: templates/js/translated/stock.js:1877 +#: report/models.py:181 templates/InvenTree/settings/settings.html:259 +#: templates/js/translated/company.js:638 templates/js/translated/part.js:506 +#: templates/js/translated/part.js:643 templates/js/translated/part.js:1565 +#: templates/js/translated/stock.js:1959 msgid "Name" msgstr "" -#: InvenTree/models.py:278 build/models.py:207 +#: InvenTree/models.py:284 build/models.py:207 #: build/templates/build/detail.html:25 company/models.py:354 -#: company/models.py:570 company/templates/company/manufacturer_part.html:80 -#: company/templates/company/supplier_part.html:81 label/models.py:119 -#: order/models.py:161 part/models.py:764 part/templates/part/detail.html:30 +#: company/models.py:570 company/templates/company/company_base.html:68 +#: company/templates/company/manufacturer_part.html:76 +#: company/templates/company/supplier_part.html:73 label/models.py:119 +#: order/models.py:161 part/models.py:764 part/templates/part/category.html:70 +#: part/templates/part/part_base.html:163 #: part/templates/part/set_category.html:14 report/models.py:194 #: report/models.py:553 report/models.py:592 #: report/templates/report/inventree_build_order_base.html:118 -#: stock/templates/stock/location.html:108 templates/js/translated/bom.js:215 +#: stock/templates/stock/location.html:89 templates/js/translated/bom.js:215 #: templates/js/translated/bom.js:428 templates/js/translated/build.js:1621 #: templates/js/translated/company.js:345 #: templates/js/translated/company.js:548 -#: templates/js/translated/company.js:837 templates/js/translated/order.js:673 -#: templates/js/translated/order.js:855 templates/js/translated/order.js:1091 -#: templates/js/translated/part.js:558 templates/js/translated/part.js:752 -#: templates/js/translated/part.js:837 templates/js/translated/part.js:1007 -#: templates/js/translated/part.js:1403 templates/js/translated/part.js:1472 -#: templates/js/translated/stock.js:1151 templates/js/translated/stock.js:1889 -#: templates/js/translated/stock.js:1934 +#: templates/js/translated/company.js:837 templates/js/translated/order.js:680 +#: templates/js/translated/order.js:854 templates/js/translated/order.js:1090 +#: templates/js/translated/part.js:565 templates/js/translated/part.js:933 +#: templates/js/translated/part.js:1018 templates/js/translated/part.js:1188 +#: templates/js/translated/part.js:1584 templates/js/translated/part.js:1653 +#: templates/js/translated/stock.js:1233 templates/js/translated/stock.js:1971 +#: templates/js/translated/stock.js:2016 msgid "Description" msgstr "Mô tả" -#: InvenTree/models.py:279 +#: InvenTree/models.py:285 msgid "Description (optional)" msgstr "Mô tả (tùy chọn)" -#: InvenTree/models.py:287 +#: InvenTree/models.py:293 msgid "parent" msgstr "" -#: InvenTree/serializers.py:62 part/models.py:2674 +#: InvenTree/serializers.py:65 part/models.py:2674 msgid "Must be a valid number" msgstr "" -#: InvenTree/serializers.py:285 +#: InvenTree/serializers.py:299 msgid "Filename" msgstr "Tên tập tin" @@ -361,7 +362,7 @@ msgid "Returned" msgstr "" #: InvenTree/status_codes.py:143 -#: order/templates/order/sales_order_base.html:147 +#: order/templates/order/sales_order_base.html:148 msgid "Shipped" msgstr "" @@ -566,7 +567,7 @@ msgid "Barcode associated with StockItem" msgstr "" #: build/forms.py:36 build/models.py:1283 -#: build/templates/build/build_base.html:124 +#: build/templates/build/build_base.html:132 #: build/templates/build/detail.html:35 common/models.py:1225 #: company/forms.py:42 company/templates/company/supplier_part.html:251 #: order/forms.py:102 order/models.py:729 order/models.py:991 @@ -574,26 +575,27 @@ msgstr "" #: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:223 #: part/forms.py:239 part/forms.py:255 part/models.py:2576 #: part/templates/part/bom_upload/match_parts.html:31 -#: part/templates/part/detail.html:1076 part/templates/part/detail.html:1162 +#: part/templates/part/detail.html:967 part/templates/part/detail.html:1053 #: part/templates/part/part_pricing.html:16 #: report/templates/report/inventree_build_order_base.html:114 #: report/templates/report/inventree_po_report.html:91 #: report/templates/report/inventree_so_report.html:91 #: report/templates/report/inventree_test_report_base.html:81 #: report/templates/report/inventree_test_report_base.html:139 -#: stock/forms.py:156 stock/serializers.py:286 -#: stock/templates/stock/item_base.html:256 +#: stock/forms.py:156 stock/serializers.py:291 +#: stock/templates/stock/item_base.html:174 #: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:443 #: templates/js/translated/build.js:235 templates/js/translated/build.js:435 #: templates/js/translated/build.js:629 templates/js/translated/build.js:639 #: templates/js/translated/build.js:1015 templates/js/translated/build.js:1362 #: templates/js/translated/model_renderers.js:99 -#: templates/js/translated/order.js:892 templates/js/translated/order.js:1205 -#: templates/js/translated/order.js:1283 templates/js/translated/order.js:1290 -#: templates/js/translated/order.js:1379 templates/js/translated/order.js:1479 -#: templates/js/translated/part.js:1615 templates/js/translated/part.js:1738 -#: templates/js/translated/part.js:1816 templates/js/translated/stock.js:377 -#: templates/js/translated/stock.js:2069 templates/js/translated/stock.js:2171 +#: templates/js/translated/order.js:891 templates/js/translated/order.js:1204 +#: templates/js/translated/order.js:1282 templates/js/translated/order.js:1289 +#: templates/js/translated/order.js:1378 templates/js/translated/order.js:1478 +#: templates/js/translated/part.js:843 templates/js/translated/part.js:1796 +#: templates/js/translated/part.js:1919 templates/js/translated/part.js:1997 +#: templates/js/translated/stock.js:378 templates/js/translated/stock.js:2151 +#: templates/js/translated/stock.js:2253 msgid "Quantity" msgstr "" @@ -602,8 +604,8 @@ msgid "Enter quantity for build output" msgstr "" #: build/forms.py:41 order/forms.py:96 stock/forms.py:95 -#: stock/serializers.py:307 templates/js/translated/stock.js:224 -#: templates/js/translated/stock.js:378 +#: stock/serializers.py:312 templates/js/translated/stock.js:225 +#: templates/js/translated/stock.js:379 msgid "Serial Numbers" msgstr "" @@ -646,7 +648,7 @@ msgstr "Tạo đơn hàng" #: build/templates/build/index.html:8 build/templates/build/index.html:12 #: order/templates/order/sales_order_detail.html:42 #: order/templates/order/so_sidebar.html:7 -#: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:221 +#: part/templates/part/part_sidebar.html:20 templates/InvenTree/index.html:221 #: templates/InvenTree/search.html:145 #: templates/InvenTree/settings/sidebar.html:42 users/models.py:44 msgid "Build Orders" @@ -662,7 +664,7 @@ msgstr "" #: report/templates/report/inventree_po_report.html:92 #: report/templates/report/inventree_so_report.html:92 #: templates/js/translated/bom.js:435 templates/js/translated/build.js:1119 -#: templates/js/translated/order.js:886 templates/js/translated/order.js:1473 +#: templates/js/translated/order.js:885 templates/js/translated/order.js:1472 msgid "Reference" msgstr "" @@ -670,7 +672,7 @@ msgstr "" msgid "Brief description of the build" msgstr "" -#: build/models.py:219 build/templates/build/build_base.html:156 +#: build/models.py:219 build/templates/build/build_base.html:164 #: build/templates/build/detail.html:88 msgid "Parent Build" msgstr "" @@ -679,7 +681,7 @@ msgstr "" msgid "BuildOrder to which this build is allocated" msgstr "" -#: build/models.py:225 build/templates/build/build_base.html:119 +#: build/models.py:225 build/templates/build/build_base.html:77 #: build/templates/build/detail.html:30 company/models.py:705 #: order/models.py:789 order/models.py:860 #: order/templates/order/order_wizard/select_parts.html:32 part/models.py:357 @@ -700,10 +702,10 @@ msgstr "" #: templates/js/translated/build.js:988 templates/js/translated/build.js:1359 #: templates/js/translated/build.js:1626 templates/js/translated/company.js:489 #: templates/js/translated/company.js:746 templates/js/translated/order.js:426 -#: templates/js/translated/order.js:840 templates/js/translated/order.js:1457 -#: templates/js/translated/part.js:737 templates/js/translated/part.js:818 -#: templates/js/translated/part.js:985 templates/js/translated/stock.js:508 -#: templates/js/translated/stock.js:1108 templates/js/translated/stock.js:2159 +#: templates/js/translated/order.js:839 templates/js/translated/order.js:1456 +#: templates/js/translated/part.js:918 templates/js/translated/part.js:999 +#: templates/js/translated/part.js:1166 templates/js/translated/stock.js:590 +#: templates/js/translated/stock.js:1190 templates/js/translated/stock.js:2241 msgid "Part" msgstr "Nguyên liệu" @@ -751,7 +753,7 @@ msgstr "" msgid "Number of stock items which have been completed" msgstr "" -#: build/models.py:277 part/templates/part/part_base.html:216 +#: build/models.py:277 part/templates/part/part_base.html:234 msgid "Build Status" msgstr "" @@ -759,7 +761,7 @@ msgstr "" msgid "Build status code" msgstr "" -#: build/models.py:285 stock/models.py:544 +#: build/models.py:285 stock/models.py:534 msgid "Batch Code" msgstr "" @@ -768,7 +770,7 @@ msgid "Batch code for this build output" msgstr "" #: build/models.py:292 order/models.py:165 part/models.py:936 -#: part/templates/part/detail.html:86 templates/js/translated/order.js:1104 +#: part/templates/part/part_base.html:313 templates/js/translated/order.js:1103 msgid "Creation Date" msgstr "" @@ -797,12 +799,12 @@ msgstr "" msgid "User who issued this build order" msgstr "" -#: build/models.py:323 build/templates/build/build_base.html:177 +#: build/models.py:323 build/templates/build/build_base.html:185 #: build/templates/build/detail.html:116 order/models.py:179 -#: order/templates/order/order_base.html:154 -#: order/templates/order/sales_order_base.html:161 part/models.py:940 +#: order/templates/order/order_base.html:158 +#: order/templates/order/sales_order_base.html:162 part/models.py:940 #: report/templates/report/inventree_build_order_base.html:159 -#: templates/js/translated/build.js:1680 templates/js/translated/order.js:700 +#: templates/js/translated/build.js:1680 templates/js/translated/order.js:699 msgid "Responsible" msgstr "" @@ -811,10 +813,10 @@ msgid "User responsible for this build order" msgstr "" #: build/models.py:329 build/templates/build/detail.html:102 -#: company/templates/company/manufacturer_part.html:87 -#: company/templates/company/supplier_part.html:88 -#: part/templates/part/detail.html:80 stock/models.py:538 -#: stock/templates/stock/item_base.html:346 +#: company/templates/company/manufacturer_part.html:102 +#: company/templates/company/supplier_part.html:126 +#: part/templates/part/part_base.html:354 stock/models.py:528 +#: stock/templates/stock/item_base.html:374 msgid "External Link" msgstr "" @@ -824,15 +826,15 @@ msgstr "" #: order/models.py:183 order/models.py:738 #: order/templates/order/po_sidebar.html:11 #: order/templates/order/so_sidebar.html:11 part/models.py:925 -#: part/templates/part/detail.html:223 part/templates/part/part_sidebar.html:52 +#: part/templates/part/detail.html:116 part/templates/part/part_sidebar.html:50 #: report/templates/report/inventree_build_order_base.html:173 -#: stock/forms.py:154 stock/forms.py:204 stock/forms.py:238 stock/models.py:610 -#: stock/models.py:1774 stock/models.py:1880 stock/serializers.py:325 -#: stock/serializers.py:583 stock/templates/stock/stock_sidebar.html:21 +#: stock/forms.py:154 stock/forms.py:204 stock/forms.py:238 stock/models.py:600 +#: stock/models.py:1764 stock/models.py:1870 stock/serializers.py:330 +#: stock/serializers.py:588 stock/templates/stock/stock_sidebar.html:21 #: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:599 -#: templates/js/translated/company.js:842 templates/js/translated/order.js:985 -#: templates/js/translated/order.js:1583 templates/js/translated/stock.js:891 -#: templates/js/translated/stock.js:1370 +#: templates/js/translated/company.js:842 templates/js/translated/order.js:984 +#: templates/js/translated/order.js:1582 templates/js/translated/stock.js:973 +#: templates/js/translated/stock.js:1452 msgid "Notes" msgstr "" @@ -877,7 +879,7 @@ msgstr "" msgid "Selected stock item not found in BOM" msgstr "" -#: build/models.py:1253 stock/templates/stock/item_base.html:318 +#: build/models.py:1253 stock/templates/stock/item_base.html:346 #: templates/InvenTree/search.html:143 templates/js/translated/build.js:1599 #: templates/navbar.html:33 msgid "Build" @@ -890,11 +892,11 @@ msgstr "" #: build/models.py:1270 build/serializers.py:328 #: stock/templates/stock/item_base.html:8 #: stock/templates/stock/item_base.html:16 -#: stock/templates/stock/item_base.html:340 +#: stock/templates/stock/item_base.html:368 #: templates/js/translated/build.js:408 templates/js/translated/build.js:413 #: templates/js/translated/build.js:1361 templates/js/translated/build.js:1742 -#: templates/js/translated/order.js:1178 templates/js/translated/order.js:1183 -#: templates/js/translated/stock.js:2020 +#: templates/js/translated/order.js:1177 templates/js/translated/order.js:1182 +#: templates/js/translated/stock.js:2102 msgid "Stock Item" msgstr "" @@ -934,16 +936,16 @@ msgstr "" msgid "This build output is not fully allocated" msgstr "" -#: build/serializers.py:190 order/serializers.py:219 order/serializers.py:287 -#: stock/forms.py:236 stock/serializers.py:318 stock/serializers.py:685 -#: stock/templates/stock/item_base.html:286 +#: build/serializers.py:190 order/serializers.py:228 order/serializers.py:296 +#: stock/forms.py:236 stock/serializers.py:323 stock/serializers.py:690 +#: stock/templates/stock/item_base.html:314 #: templates/js/translated/barcode.js:384 #: templates/js/translated/barcode.js:557 templates/js/translated/build.js:420 #: templates/js/translated/build.js:1027 templates/js/translated/order.js:348 -#: templates/js/translated/order.js:1190 templates/js/translated/order.js:1298 -#: templates/js/translated/order.js:1304 templates/js/translated/part.js:181 -#: templates/js/translated/stock.js:510 templates/js/translated/stock.js:1251 -#: templates/js/translated/stock.js:1961 +#: templates/js/translated/order.js:1189 templates/js/translated/order.js:1297 +#: templates/js/translated/order.js:1303 templates/js/translated/part.js:177 +#: templates/js/translated/stock.js:592 templates/js/translated/stock.js:1333 +#: templates/js/translated/stock.js:2043 msgid "Location" msgstr "" @@ -951,13 +953,13 @@ msgstr "" msgid "Location for completed build outputs" msgstr "" -#: build/serializers.py:197 build/templates/build/build_base.html:129 +#: build/serializers.py:197 build/templates/build/build_base.html:137 #: build/templates/build/detail.html:63 order/models.py:572 -#: order/serializers.py:240 stock/templates/stock/item_base.html:409 +#: order/serializers.py:249 stock/templates/stock/item_base.html:180 #: templates/js/translated/barcode.js:140 templates/js/translated/build.js:1655 -#: templates/js/translated/order.js:431 templates/js/translated/order.js:677 -#: templates/js/translated/order.js:1096 templates/js/translated/stock.js:1226 -#: templates/js/translated/stock.js:2038 templates/js/translated/stock.js:2187 +#: templates/js/translated/order.js:431 templates/js/translated/order.js:1095 +#: templates/js/translated/stock.js:1308 templates/js/translated/stock.js:2120 +#: templates/js/translated/stock.js:2269 msgid "Status" msgstr "Trạng thái" @@ -986,8 +988,8 @@ msgstr "" msgid "Item must be in stock" msgstr "" -#: build/serializers.py:348 order/models.py:316 order/serializers.py:233 -#: stock/models.py:381 stock/models.py:1103 stock/serializers.py:298 +#: build/serializers.py:348 order/models.py:316 order/serializers.py:242 +#: stock/models.py:371 stock/models.py:1093 stock/serializers.py:303 msgid "Quantity must be greater than zero" msgstr "" @@ -1031,7 +1033,7 @@ msgid "Edit Build" msgstr "" #: build/templates/build/build_base.html:56 -#: build/templates/build/build_base.html:207 build/views.py:56 +#: build/templates/build/build_base.html:215 build/views.py:56 msgid "Cancel Build" msgstr "" @@ -1041,93 +1043,95 @@ msgstr "" #: build/templates/build/build_base.html:64 #: build/templates/build/build_base.html:65 -#: build/templates/build/build_base.html:223 +#: build/templates/build/build_base.html:231 msgid "Complete Build" msgstr "" -#: build/templates/build/build_base.html:79 +#: build/templates/build/build_base.html:82 +msgid "Build Description" +msgstr "" + +#: build/templates/build/build_base.html:91 #, python-format msgid "This Build Order is allocated to Sales Order %(link)s" msgstr "" -#: build/templates/build/build_base.html:86 +#: build/templates/build/build_base.html:98 #, python-format msgid "This Build Order is a child of Build Order %(link)s" msgstr "" -#: build/templates/build/build_base.html:93 +#: build/templates/build/build_base.html:105 msgid "Build Order is ready to mark as completed" msgstr "" -#: build/templates/build/build_base.html:98 +#: build/templates/build/build_base.html:110 msgid "Build Order cannot be completed as outstanding outputs remain" msgstr "" -#: build/templates/build/build_base.html:103 +#: build/templates/build/build_base.html:115 msgid "Required build quantity has not yet been completed" msgstr "" -#: build/templates/build/build_base.html:108 +#: build/templates/build/build_base.html:120 msgid "Stock has not been fully allocated to this Build Order" msgstr "" -#: build/templates/build/build_base.html:138 +#: build/templates/build/build_base.html:146 #: build/templates/build/detail.html:132 -#: order/templates/order/order_base.html:140 -#: order/templates/order/sales_order_base.html:140 +#: order/templates/order/order_base.html:144 +#: order/templates/order/sales_order_base.html:141 #: report/templates/report/inventree_build_order_base.html:126 -#: templates/js/translated/build.js:1692 templates/js/translated/order.js:690 -#: templates/js/translated/order.js:1109 +#: templates/js/translated/build.js:1692 templates/js/translated/order.js:689 +#: templates/js/translated/order.js:1108 msgid "Target Date" msgstr "" -#: build/templates/build/build_base.html:143 +#: build/templates/build/build_base.html:151 #, python-format msgid "This build was due on %(target)s" msgstr "" -#: build/templates/build/build_base.html:143 -#: build/templates/build/build_base.html:188 -#: order/templates/order/order_base.html:81 -#: order/templates/order/order_base.html:102 -#: order/templates/order/sales_order_base.html:78 -#: order/templates/order/sales_order_base.html:107 +#: build/templates/build/build_base.html:151 +#: build/templates/build/build_base.html:196 +#: order/templates/order/order_base.html:98 +#: order/templates/order/sales_order_base.html:93 #: templates/js/translated/table_filters.js:294 #: templates/js/translated/table_filters.js:322 #: templates/js/translated/table_filters.js:339 msgid "Overdue" msgstr "" -#: build/templates/build/build_base.html:150 +#: build/templates/build/build_base.html:158 #: build/templates/build/detail.html:68 build/templates/build/detail.html:143 #: templates/js/translated/build.js:1641 #: templates/js/translated/table_filters.js:304 msgid "Completed" msgstr "Đã hoàn thành" -#: build/templates/build/build_base.html:163 +#: build/templates/build/build_base.html:171 #: build/templates/build/detail.html:95 order/models.py:857 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: order/templates/order/sales_order_ship.html:25 #: report/templates/report/inventree_build_order_base.html:136 #: report/templates/report/inventree_so_report.html:77 -#: stock/templates/stock/item_base.html:280 -#: templates/js/translated/order.js:1051 +#: stock/templates/stock/item_base.html:308 +#: templates/js/translated/order.js:1050 msgid "Sales Order" msgstr "" -#: build/templates/build/build_base.html:170 +#: build/templates/build/build_base.html:178 #: build/templates/build/detail.html:109 #: report/templates/report/inventree_build_order_base.html:153 msgid "Issued By" msgstr "" -#: build/templates/build/build_base.html:215 +#: build/templates/build/build_base.html:223 msgid "Incomplete Outputs" msgstr "" -#: build/templates/build/build_base.html:216 +#: build/templates/build/build_base.html:224 msgid "Build Order cannot be completed as incomplete build outputs remain" msgstr "" @@ -1188,7 +1192,7 @@ msgid "Stock can be taken from any available location." msgstr "" #: build/templates/build/detail.html:50 order/models.py:811 stock/forms.py:150 -#: templates/js/translated/order.js:432 templates/js/translated/order.js:974 +#: templates/js/translated/order.js:432 templates/js/translated/order.js:973 msgid "Destination" msgstr "" @@ -1201,16 +1205,16 @@ msgid "Allocated Parts" msgstr "" #: build/templates/build/detail.html:81 -#: stock/templates/stock/item_base.html:304 -#: templates/js/translated/stock.js:1240 templates/js/translated/stock.js:2194 +#: stock/templates/stock/item_base.html:332 +#: templates/js/translated/stock.js:1322 templates/js/translated/stock.js:2276 #: templates/js/translated/table_filters.js:151 #: templates/js/translated/table_filters.js:233 msgid "Batch" msgstr "" #: build/templates/build/detail.html:127 -#: order/templates/order/order_base.html:127 -#: order/templates/order/sales_order_base.html:134 +#: order/templates/order/order_base.html:131 +#: order/templates/order/sales_order_base.html:135 #: templates/js/translated/build.js:1663 msgid "Created" msgstr "" @@ -1254,7 +1258,7 @@ msgstr "" #: build/templates/build/detail.html:185 #: company/templates/company/detail.html:38 #: company/templates/company/detail.html:85 order/views.py:509 -#: part/templates/part/category.html:166 +#: part/templates/part/category.html:173 msgid "Order Parts" msgstr "" @@ -1306,8 +1310,8 @@ msgstr "" #: order/templates/order/po_sidebar.html:9 #: order/templates/order/purchase_order_detail.html:60 #: order/templates/order/sales_order_detail.html:52 -#: order/templates/order/so_sidebar.html:9 part/templates/part/detail.html:300 -#: part/templates/part/part_sidebar.html:50 stock/templates/stock/item.html:95 +#: order/templates/order/so_sidebar.html:9 part/templates/part/detail.html:193 +#: part/templates/part/part_sidebar.html:48 stock/templates/stock/item.html:95 #: stock/templates/stock/stock_sidebar.html:19 msgid "Attachments" msgstr "" @@ -1323,7 +1327,7 @@ msgstr "" #: order/templates/order/purchase_order_detail.html:108 #: order/templates/order/sales_order_detail.html:72 #: order/templates/order/sales_order_detail.html:99 -#: part/templates/part/detail.html:227 stock/templates/stock/item.html:115 +#: part/templates/part/detail.html:120 stock/templates/stock/item.html:115 #: stock/templates/stock/item.html:205 msgid "Edit Notes" msgstr "" @@ -1336,7 +1340,7 @@ msgstr "" msgid "All untracked stock items have been allocated" msgstr "" -#: build/templates/build/index.html:18 part/templates/part/detail.html:407 +#: build/templates/build/index.html:18 part/templates/part/detail.html:300 msgid "New Build Order" msgstr "" @@ -1380,7 +1384,7 @@ msgstr "" msgid "Maximum output quantity is " msgstr "" -#: build/views.py:122 stock/serializers.py:356 stock/views.py:1290 +#: build/views.py:122 stock/serializers.py:361 stock/views.py:1290 msgid "Serial numbers already exist" msgstr "" @@ -1675,7 +1679,7 @@ msgid "Parts are trackable by default" msgstr "" #: common/models.py:745 part/models.py:920 -#: part/templates/part/part_base.html:144 +#: part/templates/part/part_base.html:147 #: templates/js/translated/table_filters.js:42 msgid "Virtual" msgstr "" @@ -2142,7 +2146,7 @@ msgstr "" #: common/models.py:1233 company/serializers.py:264 #: company/templates/company/supplier_part.html:256 -#: templates/js/translated/part.js:1620 +#: templates/js/translated/part.js:852 templates/js/translated/part.js:1801 msgid "Price" msgstr "" @@ -2206,7 +2210,7 @@ msgstr "" msgid "Description of the company" msgstr "" -#: company/models.py:112 company/templates/company/company_base.html:70 +#: company/models.py:112 company/templates/company/company_base.html:97 #: templates/js/translated/company.js:349 msgid "Website" msgstr "" @@ -2215,7 +2219,7 @@ msgstr "" msgid "Company website URL" msgstr "" -#: company/models.py:117 company/templates/company/company_base.html:88 +#: company/models.py:117 company/templates/company/company_base.html:115 msgid "Address" msgstr "" @@ -2231,7 +2235,7 @@ msgstr "" msgid "Contact phone number" msgstr "" -#: company/models.py:125 company/templates/company/company_base.html:102 +#: company/models.py:125 company/templates/company/company_base.html:129 #: templates/InvenTree/settings/user.html:47 msgid "Email" msgstr "" @@ -2240,7 +2244,7 @@ msgstr "" msgid "Contact email address" msgstr "" -#: company/models.py:128 company/templates/company/company_base.html:109 +#: company/models.py:128 company/templates/company/company_base.html:136 msgid "Contact" msgstr "" @@ -2281,7 +2285,7 @@ msgid "Does this company manufacture parts?" msgstr "" #: company/models.py:152 company/serializers.py:270 -#: company/templates/company/company_base.html:76 stock/serializers.py:172 +#: company/templates/company/company_base.html:103 stock/serializers.py:177 msgid "Currency" msgstr "" @@ -2289,8 +2293,8 @@ msgstr "" msgid "Default currency used for this company" msgstr "" -#: company/models.py:320 company/models.py:535 stock/models.py:484 -#: stock/templates/stock/item_base.html:224 +#: company/models.py:320 company/models.py:535 stock/models.py:474 +#: stock/templates/stock/item_base.html:135 msgid "Base Part" msgstr "" @@ -2298,29 +2302,29 @@ msgstr "" msgid "Select part" msgstr "" -#: company/models.py:335 company/templates/company/company_base.html:116 -#: company/templates/company/manufacturer_part.html:93 -#: company/templates/company/supplier_part.html:104 -#: stock/templates/stock/item_base.html:353 +#: company/models.py:335 company/templates/company/company_base.html:73 +#: company/templates/company/manufacturer_part.html:91 +#: company/templates/company/supplier_part.html:97 +#: stock/templates/stock/item_base.html:381 #: templates/js/translated/company.js:333 #: templates/js/translated/company.js:514 -#: templates/js/translated/company.js:797 templates/js/translated/part.js:229 +#: templates/js/translated/company.js:797 templates/js/translated/part.js:232 msgid "Manufacturer" msgstr "Nhà sản xuất" -#: company/models.py:336 templates/js/translated/part.js:230 +#: company/models.py:336 templates/js/translated/part.js:233 msgid "Select manufacturer" msgstr "" -#: company/models.py:342 company/templates/company/manufacturer_part.html:97 -#: company/templates/company/supplier_part.html:112 +#: company/models.py:342 company/templates/company/manufacturer_part.html:96 +#: company/templates/company/supplier_part.html:105 #: templates/js/translated/company.js:530 -#: templates/js/translated/company.js:815 templates/js/translated/order.js:874 -#: templates/js/translated/part.js:240 +#: templates/js/translated/company.js:815 templates/js/translated/order.js:873 +#: templates/js/translated/part.js:243 templates/js/translated/part.js:832 msgid "MPN" msgstr "" -#: company/models.py:343 templates/js/translated/part.js:241 +#: company/models.py:343 templates/js/translated/part.js:244 msgid "Manufacturer Part Number" msgstr "" @@ -2335,7 +2339,7 @@ msgstr "" #: company/models.py:409 company/models.py:558 #: company/templates/company/manufacturer_part.html:6 #: company/templates/company/manufacturer_part.html:23 -#: stock/templates/stock/item_base.html:363 +#: stock/templates/stock/item_base.html:391 msgid "Manufacturer Part" msgstr "" @@ -2345,8 +2349,8 @@ msgstr "" #: company/models.py:422 #: report/templates/report/inventree_test_report_base.html:95 -#: stock/models.py:1867 templates/js/translated/company.js:644 -#: templates/js/translated/part.js:645 templates/js/translated/stock.js:878 +#: stock/models.py:1857 templates/js/translated/company.js:644 +#: templates/js/translated/part.js:652 templates/js/translated/stock.js:960 msgid "Value" msgstr "" @@ -2355,9 +2359,9 @@ msgid "Parameter value" msgstr "" #: company/models.py:429 part/models.py:882 part/models.py:2397 -#: part/templates/part/detail.html:59 +#: part/templates/part/part_base.html:288 #: templates/InvenTree/settings/settings.html:264 -#: templates/js/translated/company.js:650 templates/js/translated/part.js:651 +#: templates/js/translated/company.js:650 templates/js/translated/part.js:658 msgid "Units" msgstr "" @@ -2369,28 +2373,28 @@ msgstr "" msgid "Linked manufacturer part must reference the same base part" msgstr "" -#: company/models.py:545 company/templates/company/company_base.html:121 -#: company/templates/company/supplier_part.html:94 order/models.py:263 -#: order/templates/order/order_base.html:108 +#: company/models.py:545 company/templates/company/company_base.html:78 +#: company/templates/company/supplier_part.html:87 order/models.py:263 +#: order/templates/order/order_base.html:112 #: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:219 -#: part/bom.py:247 stock/templates/stock/item_base.html:370 +#: part/bom.py:247 stock/templates/stock/item_base.html:398 #: templates/js/translated/company.js:337 -#: templates/js/translated/company.js:771 templates/js/translated/order.js:660 -#: templates/js/translated/part.js:210 +#: templates/js/translated/company.js:771 templates/js/translated/order.js:667 +#: templates/js/translated/part.js:213 templates/js/translated/part.js:800 msgid "Supplier" msgstr "Nhà cung cấp" -#: company/models.py:546 templates/js/translated/part.js:211 +#: company/models.py:546 templates/js/translated/part.js:214 msgid "Select supplier" msgstr "" -#: company/models.py:551 company/templates/company/supplier_part.html:98 -#: part/bom.py:220 part/bom.py:248 templates/js/translated/order.js:861 -#: templates/js/translated/part.js:221 +#: company/models.py:551 company/templates/company/supplier_part.html:91 +#: part/bom.py:220 part/bom.py:248 templates/js/translated/order.js:860 +#: templates/js/translated/part.js:224 templates/js/translated/part.js:818 msgid "SKU" msgstr "" -#: company/models.py:552 templates/js/translated/part.js:222 +#: company/models.py:552 templates/js/translated/part.js:225 msgid "Supplier stock keeping unit" msgstr "" @@ -2406,7 +2410,7 @@ msgstr "" msgid "Supplier part description" msgstr "" -#: company/models.py:576 company/templates/company/supplier_part.html:126 +#: company/models.py:576 company/templates/company/supplier_part.html:119 #: part/models.py:2588 report/templates/report/inventree_po_report.html:93 #: report/templates/report/inventree_so_report.html:93 msgid "Note" @@ -2420,9 +2424,9 @@ msgstr "" msgid "Minimum charge (e.g. stocking fee)" msgstr "" -#: company/models.py:582 company/templates/company/supplier_part.html:119 -#: stock/models.py:507 stock/templates/stock/item_base.html:311 -#: templates/js/translated/company.js:847 templates/js/translated/stock.js:1366 +#: company/models.py:582 company/templates/company/supplier_part.html:112 +#: stock/models.py:497 stock/templates/stock/item_base.html:339 +#: templates/js/translated/company.js:847 templates/js/translated/stock.js:1448 msgid "Packaging" msgstr "" @@ -2457,43 +2461,56 @@ msgstr "" msgid "Create Purchase Order" msgstr "" -#: company/templates/company/company_base.html:27 +#: company/templates/company/company_base.html:26 +msgid "Company actions" +msgstr "" + +#: company/templates/company/company_base.html:31 msgid "Edit company information" msgstr "" #: company/templates/company/company_base.html:32 -#: company/templates/company/company_base.html:148 +#: templates/js/translated/company.js:265 +msgid "Edit Company" +msgstr "" + +#: company/templates/company/company_base.html:36 +msgid "Delete company" +msgstr "" + +#: company/templates/company/company_base.html:37 +#: company/templates/company/company_base.html:159 msgid "Delete Company" msgstr "" -#: company/templates/company/company_base.html:48 +#: company/templates/company/company_base.html:53 #: part/templates/part/part_thumb.html:12 msgid "Upload new image" msgstr "" -#: company/templates/company/company_base.html:51 +#: company/templates/company/company_base.html:56 #: part/templates/part/part_thumb.html:14 msgid "Download image from URL" msgstr "" -#: company/templates/company/company_base.html:81 -msgid "Uses default currency" -msgstr "" - -#: company/templates/company/company_base.html:95 -msgid "Phone" -msgstr "" - -#: company/templates/company/company_base.html:126 order/models.py:567 -#: order/templates/order/sales_order_base.html:114 stock/models.py:525 -#: stock/models.py:526 stock/templates/stock/item_base.html:263 -#: templates/js/translated/company.js:329 templates/js/translated/order.js:1073 -#: templates/js/translated/stock.js:2002 +#: company/templates/company/company_base.html:83 order/models.py:567 +#: order/templates/order/sales_order_base.html:115 stock/models.py:515 +#: stock/models.py:516 stock/templates/stock/item_base.html:291 +#: templates/js/translated/company.js:329 templates/js/translated/order.js:1072 +#: templates/js/translated/stock.js:2084 msgid "Customer" msgstr "" -#: company/templates/company/company_base.html:194 -#: part/templates/part/part_base.html:342 +#: company/templates/company/company_base.html:108 +msgid "Uses default currency" +msgstr "" + +#: company/templates/company/company_base.html:122 +msgid "Phone" +msgstr "" + +#: company/templates/company/company_base.html:205 +#: part/templates/part/part_base.html:471 msgid "Upload Image" msgstr "" @@ -2509,23 +2526,23 @@ msgid "Create new supplier part" msgstr "" #: company/templates/company/detail.html:20 -#: company/templates/company/manufacturer_part.html:112 -#: part/templates/part/detail.html:440 +#: company/templates/company/manufacturer_part.html:118 +#: part/templates/part/detail.html:333 msgid "New Supplier Part" msgstr "" #: company/templates/company/detail.html:32 #: company/templates/company/detail.html:79 -#: company/templates/company/manufacturer_part.html:121 -#: company/templates/company/manufacturer_part.html:150 -#: part/templates/part/category.html:160 part/templates/part/detail.html:449 -#: part/templates/part/detail.html:477 +#: company/templates/company/manufacturer_part.html:127 +#: company/templates/company/manufacturer_part.html:156 +#: part/templates/part/category.html:167 part/templates/part/detail.html:342 +#: part/templates/part/detail.html:370 msgid "Options" msgstr "" #: company/templates/company/detail.html:37 #: company/templates/company/detail.html:84 -#: part/templates/part/category.html:166 +#: part/templates/part/category.html:173 msgid "Order parts" msgstr "" @@ -2547,7 +2564,7 @@ msgstr "" msgid "Create new manufacturer part" msgstr "" -#: company/templates/company/detail.html:67 part/templates/part/detail.html:467 +#: company/templates/company/detail.html:67 part/templates/part/detail.html:360 msgid "New Manufacturer Part" msgstr "" @@ -2561,7 +2578,7 @@ msgstr "" #: order/templates/order/order_base.html:13 #: order/templates/order/purchase_orders.html:8 #: order/templates/order/purchase_orders.html:12 -#: part/templates/part/detail.html:171 part/templates/part/part_sidebar.html:35 +#: part/templates/part/detail.html:64 part/templates/part/part_sidebar.html:33 #: templates/InvenTree/index.html:252 templates/InvenTree/search.html:203 #: templates/InvenTree/settings/sidebar.html:44 templates/navbar.html:45 #: users/models.py:45 @@ -2583,7 +2600,7 @@ msgstr "" #: order/templates/order/sales_order_base.html:13 #: order/templates/order/sales_orders.html:8 #: order/templates/order/sales_orders.html:15 -#: part/templates/part/detail.html:194 part/templates/part/part_sidebar.html:39 +#: part/templates/part/detail.html:87 part/templates/part/part_sidebar.html:37 #: templates/InvenTree/index.html:283 templates/InvenTree/search.html:223 #: templates/InvenTree/settings/sidebar.html:46 templates/navbar.html:56 #: users/models.py:46 @@ -2610,14 +2627,14 @@ msgid "Company Notes" msgstr "" #: company/templates/company/detail.html:383 -#: company/templates/company/manufacturer_part.html:209 -#: part/templates/part/detail.html:520 +#: company/templates/company/manufacturer_part.html:215 +#: part/templates/part/detail.html:413 msgid "Delete Supplier Parts?" msgstr "" #: company/templates/company/detail.html:384 -#: company/templates/company/manufacturer_part.html:210 -#: part/templates/part/detail.html:521 +#: company/templates/company/manufacturer_part.html:216 +#: part/templates/part/detail.html:414 msgid "All selected supplier parts will be deleted" msgstr "" @@ -2634,7 +2651,7 @@ msgstr "" #: company/templates/company/manufacturer_part.html:35 #: company/templates/company/supplier_part.html:34 #: company/templates/company/supplier_part.html:159 -#: part/templates/part/detail.html:174 part/templates/part/part_base.html:76 +#: part/templates/part/detail.html:67 part/templates/part/part_base.html:76 msgid "Order part" msgstr "" @@ -2648,60 +2665,60 @@ msgstr "" msgid "Delete manufacturer part" msgstr "" -#: company/templates/company/manufacturer_part.html:70 -#: company/templates/company/supplier_part.html:71 +#: company/templates/company/manufacturer_part.html:66 +#: company/templates/company/supplier_part.html:63 msgid "Internal Part" msgstr "" -#: company/templates/company/manufacturer_part.html:108 +#: company/templates/company/manufacturer_part.html:114 #: company/templates/company/supplier_part.html:15 company/views.py:49 -#: part/templates/part/part_sidebar.html:33 part/templates/part/prices.html:163 +#: part/templates/part/part_sidebar.html:31 part/templates/part/prices.html:163 #: templates/InvenTree/search.html:194 templates/navbar.html:43 msgid "Suppliers" msgstr "" -#: company/templates/company/manufacturer_part.html:123 -#: part/templates/part/detail.html:451 +#: company/templates/company/manufacturer_part.html:129 +#: part/templates/part/detail.html:344 msgid "Delete supplier parts" msgstr "" -#: company/templates/company/manufacturer_part.html:123 -#: company/templates/company/manufacturer_part.html:152 -#: company/templates/company/manufacturer_part.html:248 -#: part/templates/part/detail.html:451 part/templates/part/detail.html:479 +#: company/templates/company/manufacturer_part.html:129 +#: company/templates/company/manufacturer_part.html:158 +#: company/templates/company/manufacturer_part.html:254 +#: part/templates/part/detail.html:344 part/templates/part/detail.html:372 #: templates/js/translated/company.js:425 templates/js/translated/helpers.js:31 #: users/models.py:204 msgid "Delete" msgstr "" -#: company/templates/company/manufacturer_part.html:137 +#: company/templates/company/manufacturer_part.html:143 #: company/templates/company/manufacturer_part_sidebar.html:5 #: part/templates/part/category_sidebar.html:17 -#: part/templates/part/detail.html:277 part/templates/part/part_sidebar.html:10 +#: part/templates/part/detail.html:170 part/templates/part/part_sidebar.html:8 msgid "Parameters" msgstr "" -#: company/templates/company/manufacturer_part.html:141 -#: part/templates/part/detail.html:282 +#: company/templates/company/manufacturer_part.html:147 +#: part/templates/part/detail.html:175 #: templates/InvenTree/settings/category.html:12 #: templates/InvenTree/settings/part.html:65 msgid "New Parameter" msgstr "" -#: company/templates/company/manufacturer_part.html:152 +#: company/templates/company/manufacturer_part.html:158 msgid "Delete parameters" msgstr "" -#: company/templates/company/manufacturer_part.html:185 -#: part/templates/part/detail.html:976 +#: company/templates/company/manufacturer_part.html:191 +#: part/templates/part/detail.html:867 msgid "Add Parameter" msgstr "" -#: company/templates/company/manufacturer_part.html:233 +#: company/templates/company/manufacturer_part.html:239 msgid "Selected parameters will be deleted" msgstr "" -#: company/templates/company/manufacturer_part.html:245 +#: company/templates/company/manufacturer_part.html:251 msgid "Delete Parameters" msgstr "" @@ -2722,9 +2739,9 @@ msgid "Assigned Stock Items" msgstr "" #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 stock/models.py:492 -#: stock/templates/stock/item_base.html:375 -#: templates/js/translated/company.js:787 templates/js/translated/stock.js:1323 +#: company/templates/company/supplier_part.html:24 stock/models.py:482 +#: stock/templates/stock/item_base.html:403 +#: templates/js/translated/company.js:787 templates/js/translated/stock.js:1405 msgid "Supplier Part" msgstr "" @@ -2744,13 +2761,13 @@ msgid "Supplier Part Stock" msgstr "" #: company/templates/company/supplier_part.html:141 -#: part/templates/part/detail.html:127 stock/templates/stock/location.html:147 +#: part/templates/part/detail.html:20 stock/templates/stock/location.html:162 msgid "Create new stock item" msgstr "" #: company/templates/company/supplier_part.html:142 -#: part/templates/part/detail.html:128 stock/templates/stock/location.html:148 -#: templates/js/translated/stock.js:354 +#: part/templates/part/detail.html:21 stock/templates/stock/location.html:163 +#: templates/js/translated/stock.js:355 msgid "New Stock Item" msgstr "" @@ -2760,7 +2777,7 @@ msgid "Supplier Part Orders" msgstr "" #: company/templates/company/supplier_part.html:160 -#: part/templates/part/detail.html:175 +#: part/templates/part/detail.html:68 msgid "Order Part" msgstr "" @@ -2796,15 +2813,15 @@ msgid "Delete price break" msgstr "" #: company/templates/company/supplier_part_navbar.html:15 -#: part/templates/part/part_sidebar.html:16 +#: part/templates/part/part_sidebar.html:14 #: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:14 #: stock/templates/stock/stock_app_base.html:10 #: templates/InvenTree/search.html:156 #: templates/InvenTree/settings/sidebar.html:40 -#: templates/js/translated/bom.js:216 templates/js/translated/part.js:427 -#: templates/js/translated/part.js:562 templates/js/translated/part.js:878 -#: templates/js/translated/part.js:1039 templates/js/translated/stock.js:509 -#: templates/js/translated/stock.js:1162 templates/navbar.html:26 +#: templates/js/translated/bom.js:216 templates/js/translated/part.js:434 +#: templates/js/translated/part.js:569 templates/js/translated/part.js:1059 +#: templates/js/translated/part.js:1220 templates/js/translated/stock.js:591 +#: templates/js/translated/stock.js:1244 templates/navbar.html:26 msgid "Stock" msgstr "Kiện hàng" @@ -2818,16 +2835,16 @@ msgid "Supplier Part Pricing" msgstr "" #: company/templates/company/supplier_part_navbar.html:29 -#: part/templates/part/part_sidebar.html:30 +#: part/templates/part/part_sidebar.html:28 msgid "Pricing" msgstr "" #: company/templates/company/supplier_part_sidebar.html:5 -#: stock/templates/stock/location.html:118 -#: stock/templates/stock/location.html:132 -#: stock/templates/stock/location.html:144 +#: stock/templates/stock/location.html:133 +#: stock/templates/stock/location.html:147 +#: stock/templates/stock/location.html:159 #: stock/templates/stock/location_sidebar.html:7 -#: templates/InvenTree/search.html:158 templates/js/translated/stock.js:1901 +#: templates/InvenTree/search.html:158 templates/js/translated/stock.js:1983 #: templates/stats.html:93 templates/stats.html:102 users/models.py:43 msgid "Stock Items" msgstr "" @@ -2947,7 +2964,7 @@ msgstr "" msgid "Place order" msgstr "" -#: order/forms.py:37 order/templates/order/order_base.html:59 +#: order/forms.py:37 order/templates/order/order_base.html:60 msgid "Mark order as complete" msgstr "" @@ -3000,8 +3017,8 @@ msgstr "" msgid "Company from which the items are being ordered" msgstr "" -#: order/models.py:267 order/templates/order/order_base.html:114 -#: templates/js/translated/order.js:669 +#: order/models.py:267 order/templates/order/order_base.html:118 +#: templates/js/translated/order.js:676 msgid "Supplier Reference" msgstr "" @@ -3061,7 +3078,7 @@ msgstr "" msgid "Target date for order completion. Order will be overdue after this date." msgstr "" -#: order/models.py:582 templates/js/translated/order.js:1114 +#: order/models.py:582 templates/js/translated/order.js:1113 msgid "Shipment Date" msgstr "" @@ -3086,16 +3103,16 @@ msgid "Line item notes" msgstr "" #: order/models.py:768 order/models.py:856 -#: templates/js/translated/order.js:1166 +#: templates/js/translated/order.js:1165 msgid "Order" msgstr "" #: order/models.py:769 order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_po_report.html:77 -#: stock/templates/stock/item_base.html:325 -#: templates/js/translated/order.js:638 templates/js/translated/stock.js:1300 -#: templates/js/translated/stock.js:1983 +#: stock/templates/stock/item_base.html:353 +#: templates/js/translated/order.js:638 templates/js/translated/part.js:775 +#: templates/js/translated/stock.js:1382 templates/js/translated/stock.js:2065 msgid "Purchase Order" msgstr "Đơn hàng" @@ -3103,9 +3120,10 @@ msgstr "Đơn hàng" msgid "Supplier part" msgstr "" -#: order/models.py:797 order/templates/order/order_base.html:147 -#: order/templates/order/sales_order_base.html:154 -#: templates/js/translated/order.js:429 templates/js/translated/order.js:954 +#: order/models.py:797 order/templates/order/order_base.html:151 +#: order/templates/order/sales_order_base.html:155 +#: templates/js/translated/order.js:429 templates/js/translated/order.js:953 +#: templates/js/translated/part.js:847 templates/js/translated/part.js:873 msgid "Received" msgstr "" @@ -3113,9 +3131,9 @@ msgstr "" msgid "Number of items received" msgstr "" -#: order/models.py:805 part/templates/part/prices.html:176 stock/models.py:619 -#: stock/serializers.py:163 stock/templates/stock/item_base.html:332 -#: templates/js/translated/stock.js:1354 +#: order/models.py:805 part/templates/part/prices.html:176 stock/models.py:609 +#: stock/serializers.py:168 stock/templates/stock/item_base.html:360 +#: templates/js/translated/stock.js:1436 msgid "Purchase Price" msgstr "Giá mua" @@ -3176,47 +3194,47 @@ msgstr "" msgid "Enter stock allocation quantity" msgstr "" -#: order/serializers.py:169 +#: order/serializers.py:175 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:204 +#: order/serializers.py:213 msgid "Line Item" msgstr "" -#: order/serializers.py:210 +#: order/serializers.py:219 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:220 order/serializers.py:288 +#: order/serializers.py:229 order/serializers.py:297 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:244 +#: order/serializers.py:253 msgid "Barcode Hash" msgstr "" -#: order/serializers.py:245 +#: order/serializers.py:254 msgid "Unique identifier field" msgstr "" -#: order/serializers.py:262 +#: order/serializers.py:271 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:300 +#: order/serializers.py:309 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:317 +#: order/serializers.py:326 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:328 +#: order/serializers.py:337 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:569 +#: order/serializers.py:578 msgid "Sale price currency" msgstr "" @@ -3248,22 +3266,36 @@ msgstr "" msgid "Receive items" msgstr "" -#: order/templates/order/order_base.html:93 -#: order/templates/order/sales_order_base.html:98 +#: order/templates/order/order_base.html:58 +#: order/templates/order/purchase_order_detail.html:31 +msgid "Receive Items" +msgstr "" + +#: order/templates/order/order_base.html:62 order/views.py:185 +msgid "Complete Order" +msgstr "" + +#: order/templates/order/order_base.html:84 +#: order/templates/order/sales_order_base.html:79 msgid "Order Reference" msgstr "" -#: order/templates/order/order_base.html:98 -#: order/templates/order/sales_order_base.html:103 +#: order/templates/order/order_base.html:89 +#: order/templates/order/sales_order_base.html:84 +msgid "Order Description" +msgstr "" + +#: order/templates/order/order_base.html:94 +#: order/templates/order/sales_order_base.html:89 msgid "Order Status" msgstr "" -#: order/templates/order/order_base.html:133 +#: order/templates/order/order_base.html:137 #: report/templates/report/inventree_build_order_base.html:122 msgid "Issued" msgstr "" -#: order/templates/order/order_base.html:203 +#: order/templates/order/order_base.html:207 msgid "Edit Purchase Order" msgstr "" @@ -3421,7 +3453,7 @@ msgid "Select existing purchase orders, or create new orders." msgstr "" #: order/templates/order/order_wizard/select_pos.html:31 -#: templates/js/translated/order.js:695 templates/js/translated/order.js:1119 +#: templates/js/translated/order.js:694 templates/js/translated/order.js:1118 msgid "Items" msgstr "" @@ -3465,10 +3497,6 @@ msgstr "" msgid "Receive selected items" msgstr "" -#: order/templates/order/purchase_order_detail.html:31 -msgid "Receive Items" -msgstr "" - #: order/templates/order/purchase_order_detail.html:50 msgid "Received Items" msgstr "" @@ -3496,16 +3524,16 @@ msgstr "" msgid "Ship Order" msgstr "" -#: order/templates/order/sales_order_base.html:86 +#: order/templates/order/sales_order_base.html:102 msgid "This Sales Order has not been fully allocated" msgstr "" -#: order/templates/order/sales_order_base.html:121 -#: templates/js/translated/order.js:1086 +#: order/templates/order/sales_order_base.html:122 +#: templates/js/translated/order.js:1085 msgid "Customer Reference" msgstr "" -#: order/templates/order/sales_order_base.html:194 +#: order/templates/order/sales_order_base.html:195 msgid "Edit Sales Order" msgstr "" @@ -3576,10 +3604,6 @@ msgstr "" msgid "Purchase order issued" msgstr "" -#: order/views.py:185 -msgid "Complete Order" -msgstr "" - #: order/views.py:201 msgid "Confirm order completion" msgstr "" @@ -3672,11 +3696,11 @@ msgid "This field is required" msgstr "" #: part/bom.py:125 part/models.py:81 part/models.py:816 -#: part/templates/part/category.html:90 part/templates/part/detail.html:104 +#: part/templates/part/category.html:104 part/templates/part/part_base.html:338 msgid "Default Location" msgstr "" -#: part/bom.py:126 part/templates/part/part_base.html:167 +#: part/bom.py:126 part/templates/part/part_base.html:185 msgid "Available Stock" msgstr "" @@ -3793,19 +3817,19 @@ msgstr "" msgid "Part Category" msgstr "" -#: part/models.py:96 part/templates/part/category.html:117 +#: part/models.py:96 part/templates/part/category.html:124 #: templates/InvenTree/search.html:101 templates/stats.html:84 #: users/models.py:40 msgid "Part Categories" msgstr "" #: part/models.py:358 part/templates/part/cat_link.html:3 -#: part/templates/part/category.html:13 part/templates/part/category.html:122 -#: part/templates/part/category.html:142 +#: part/templates/part/category.html:13 part/templates/part/category.html:129 +#: part/templates/part/category.html:149 #: part/templates/part/category_sidebar.html:9 #: templates/InvenTree/index.html:85 templates/InvenTree/search.html:88 #: templates/InvenTree/settings/sidebar.html:36 -#: templates/js/translated/part.js:1416 templates/navbar.html:19 +#: templates/js/translated/part.js:1597 templates/navbar.html:19 #: templates/stats.html:80 templates/stats.html:89 users/models.py:41 msgid "Parts" msgstr "Nguyên liệu" @@ -3859,8 +3883,8 @@ msgstr "" msgid "Part description" msgstr "" -#: part/models.py:770 part/templates/part/category.html:97 -#: part/templates/part/detail.html:73 +#: part/models.py:770 part/templates/part/category.html:82 +#: part/templates/part/part_base.html:302 msgid "Keywords" msgstr "" @@ -3869,9 +3893,10 @@ msgid "Part keywords to improve visibility in search results" msgstr "" #: part/models.py:778 part/models.py:2223 part/models.py:2472 -#: part/templates/part/detail.html:36 part/templates/part/set_category.html:15 +#: part/templates/part/part_base.html:265 +#: part/templates/part/set_category.html:15 #: templates/InvenTree/settings/settings.html:163 -#: templates/js/translated/part.js:1021 +#: templates/js/translated/part.js:1202 msgid "Category" msgstr "" @@ -3879,9 +3904,9 @@ msgstr "" msgid "Part category" msgstr "" -#: part/models.py:784 part/templates/part/detail.html:45 -#: templates/js/translated/part.js:550 templates/js/translated/part.js:974 -#: templates/js/translated/stock.js:1134 +#: part/models.py:784 part/templates/part/part_base.html:274 +#: templates/js/translated/part.js:557 templates/js/translated/part.js:1155 +#: templates/js/translated/stock.js:1216 msgid "IPN" msgstr "" @@ -3893,8 +3918,8 @@ msgstr "" msgid "Part revision or version number" msgstr "" -#: part/models.py:792 part/templates/part/detail.html:52 report/models.py:200 -#: templates/js/translated/part.js:554 +#: part/models.py:792 part/templates/part/part_base.html:281 +#: report/models.py:200 templates/js/translated/part.js:561 msgid "Revision" msgstr "" @@ -3902,7 +3927,7 @@ msgstr "" msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:861 part/templates/part/detail.html:113 +#: part/models.py:861 part/templates/part/part_base.html:347 msgid "Default Supplier" msgstr "" @@ -3918,7 +3943,7 @@ msgstr "" msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:875 part/templates/part/part_base.html:178 +#: part/models.py:875 part/templates/part/part_base.html:196 msgid "Minimum Stock" msgstr "" @@ -4001,8 +4026,8 @@ msgstr "" msgid "Test with this name already exists for this part" msgstr "" -#: part/models.py:2310 templates/js/translated/part.js:1467 -#: templates/js/translated/stock.js:858 +#: part/models.py:2310 templates/js/translated/part.js:1648 +#: templates/js/translated/stock.js:940 msgid "Test Name" msgstr "" @@ -4018,7 +4043,7 @@ msgstr "" msgid "Enter description for this test" msgstr "" -#: part/models.py:2322 templates/js/translated/part.js:1476 +#: part/models.py:2322 templates/js/translated/part.js:1657 #: templates/js/translated/table_filters.js:276 msgid "Required" msgstr "" @@ -4027,7 +4052,7 @@ msgstr "" msgid "Is this test required to pass?" msgstr "" -#: part/models.py:2328 templates/js/translated/part.js:1484 +#: part/models.py:2328 templates/js/translated/part.js:1665 msgid "Requires Value" msgstr "" @@ -4035,7 +4060,7 @@ msgstr "" msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:2334 templates/js/translated/part.js:1491 +#: part/models.py:2334 templates/js/translated/part.js:1672 msgid "Requires Attachment" msgstr "" @@ -4150,7 +4175,7 @@ msgstr "" msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:2686 stock/models.py:371 +#: part/models.py:2686 stock/models.py:361 msgid "Quantity must be integer value for trackable parts" msgstr "" @@ -4213,7 +4238,7 @@ msgstr "" msgid "The BOM for %(part)s has not been validated." msgstr "" -#: part/templates/part/bom.html:30 part/templates/part/detail.html:357 +#: part/templates/part/bom.html:30 part/templates/part/detail.html:250 msgid "BOM actions" msgstr "" @@ -4298,68 +4323,64 @@ msgstr "" msgid "New Category" msgstr "" -#: part/templates/part/category.html:67 -msgid "Top level part category" -msgstr "" - -#: part/templates/part/category.html:79 +#: part/templates/part/category.html:76 part/templates/part/category.html:89 msgid "Category Path" msgstr "" -#: part/templates/part/category.html:84 -msgid "Category Description" +#: part/templates/part/category.html:90 +msgid "Top level part category" msgstr "" -#: part/templates/part/category.html:103 part/templates/part/category.html:194 +#: part/templates/part/category.html:110 part/templates/part/category.html:201 #: part/templates/part/category_sidebar.html:7 msgid "Subcategories" msgstr "" -#: part/templates/part/category.html:108 +#: part/templates/part/category.html:115 msgid "Parts (Including subcategories)" msgstr "" -#: part/templates/part/category.html:145 +#: part/templates/part/category.html:152 msgid "Export Part Data" msgstr "" -#: part/templates/part/category.html:146 part/templates/part/category.html:170 +#: part/templates/part/category.html:153 part/templates/part/category.html:177 msgid "Export" msgstr "" -#: part/templates/part/category.html:149 +#: part/templates/part/category.html:156 msgid "Create new part" msgstr "" -#: part/templates/part/category.html:150 templates/js/translated/bom.js:40 +#: part/templates/part/category.html:157 templates/js/translated/bom.js:40 msgid "New Part" msgstr "" -#: part/templates/part/category.html:164 +#: part/templates/part/category.html:171 msgid "Set category" msgstr "" -#: part/templates/part/category.html:164 +#: part/templates/part/category.html:171 msgid "Set Category" msgstr "" -#: part/templates/part/category.html:168 +#: part/templates/part/category.html:175 msgid "Print Labels" msgstr "" -#: part/templates/part/category.html:170 +#: part/templates/part/category.html:177 msgid "Export Data" msgstr "" -#: part/templates/part/category.html:184 +#: part/templates/part/category.html:191 msgid "Part Parameters" msgstr "" -#: part/templates/part/category.html:261 +#: part/templates/part/category.html:268 msgid "Create Part Category" msgstr "" -#: part/templates/part/category.html:288 +#: part/templates/part/category.html:295 msgid "Create Part" msgstr "" @@ -4402,7 +4423,7 @@ msgstr "" msgid "Import Parts" msgstr "" -#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:366 +#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:373 msgid "Duplicate Part" msgstr "" @@ -4426,167 +4447,155 @@ msgstr "" msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)" msgstr "" -#: part/templates/part/detail.html:16 -msgid "Part Details" -msgstr "" - -#: part/templates/part/detail.html:66 -msgid "Minimum stock level" -msgstr "" - -#: part/templates/part/detail.html:97 -msgid "Latest Serial Number" -msgstr "Số seri mới nhất" - -#: part/templates/part/detail.html:124 +#: part/templates/part/detail.html:17 msgid "Part Stock" msgstr "" -#: part/templates/part/detail.html:136 +#: part/templates/part/detail.html:29 #, python-format msgid "Showing stock for all variants of %(full_name)s" msgstr "" -#: part/templates/part/detail.html:146 +#: part/templates/part/detail.html:39 msgid "Part Test Templates" msgstr "" -#: part/templates/part/detail.html:151 +#: part/templates/part/detail.html:44 msgid "Add Test Template" msgstr "" -#: part/templates/part/detail.html:208 +#: part/templates/part/detail.html:101 msgid "Sales Order Allocations" msgstr "" -#: part/templates/part/detail.html:249 +#: part/templates/part/detail.html:142 msgid "Part Variants" msgstr "" -#: part/templates/part/detail.html:253 +#: part/templates/part/detail.html:146 msgid "Create new variant" msgstr "" -#: part/templates/part/detail.html:254 +#: part/templates/part/detail.html:147 msgid "New Variant" msgstr "" -#: part/templates/part/detail.html:281 +#: part/templates/part/detail.html:174 msgid "Add new parameter" msgstr "" -#: part/templates/part/detail.html:315 part/templates/part/part_sidebar.html:47 +#: part/templates/part/detail.html:208 part/templates/part/part_sidebar.html:45 msgid "Related Parts" msgstr "" -#: part/templates/part/detail.html:319 part/templates/part/detail.html:320 +#: part/templates/part/detail.html:212 part/templates/part/detail.html:213 msgid "Add Related" msgstr "" -#: part/templates/part/detail.html:340 part/templates/part/part_sidebar.html:19 +#: part/templates/part/detail.html:233 part/templates/part/part_sidebar.html:17 msgid "Bill of Materials" msgstr "" -#: part/templates/part/detail.html:345 +#: part/templates/part/detail.html:238 msgid "Export actions" msgstr "" -#: part/templates/part/detail.html:349 +#: part/templates/part/detail.html:242 msgid "Export BOM" msgstr "" -#: part/templates/part/detail.html:351 +#: part/templates/part/detail.html:244 msgid "Print BOM Report" msgstr "" -#: part/templates/part/detail.html:361 +#: part/templates/part/detail.html:254 msgid "Upload BOM" msgstr "" -#: part/templates/part/detail.html:363 templates/js/translated/part.js:267 +#: part/templates/part/detail.html:256 templates/js/translated/part.js:270 msgid "Copy BOM" msgstr "" -#: part/templates/part/detail.html:365 part/views.py:755 +#: part/templates/part/detail.html:258 part/views.py:755 msgid "Validate BOM" msgstr "" -#: part/templates/part/detail.html:370 +#: part/templates/part/detail.html:263 msgid "New BOM Item" msgstr "" -#: part/templates/part/detail.html:371 +#: part/templates/part/detail.html:264 msgid "Add BOM Item" msgstr "" -#: part/templates/part/detail.html:384 +#: part/templates/part/detail.html:277 msgid "Assemblies" msgstr "" -#: part/templates/part/detail.html:401 +#: part/templates/part/detail.html:294 msgid "Part Builds" msgstr "" -#: part/templates/part/detail.html:426 +#: part/templates/part/detail.html:319 msgid "Build Order Allocations" msgstr "" -#: part/templates/part/detail.html:436 +#: part/templates/part/detail.html:329 msgid "Part Suppliers" msgstr "" -#: part/templates/part/detail.html:463 +#: part/templates/part/detail.html:356 msgid "Part Manufacturers" msgstr "" -#: part/templates/part/detail.html:479 +#: part/templates/part/detail.html:372 msgid "Delete manufacturer parts" msgstr "" -#: part/templates/part/detail.html:660 +#: part/templates/part/detail.html:553 msgid "Delete selected BOM items?" msgstr "" -#: part/templates/part/detail.html:661 +#: part/templates/part/detail.html:554 msgid "All selected BOM items will be deleted" msgstr "" -#: part/templates/part/detail.html:712 +#: part/templates/part/detail.html:605 msgid "Create BOM Item" msgstr "" -#: part/templates/part/detail.html:764 +#: part/templates/part/detail.html:657 msgid "Related Part" msgstr "" -#: part/templates/part/detail.html:772 +#: part/templates/part/detail.html:665 msgid "Add Related Part" msgstr "" -#: part/templates/part/detail.html:869 +#: part/templates/part/detail.html:760 msgid "Add Test Result Template" msgstr "" -#: part/templates/part/detail.html:926 +#: part/templates/part/detail.html:817 msgid "Edit Part Notes" msgstr "" -#: part/templates/part/detail.html:1039 +#: part/templates/part/detail.html:930 #, python-format msgid "Purchase Unit Price - %(currency)s" msgstr "" -#: part/templates/part/detail.html:1051 +#: part/templates/part/detail.html:942 #, python-format msgid "Unit Price-Cost Difference - %(currency)s" msgstr "" -#: part/templates/part/detail.html:1063 +#: part/templates/part/detail.html:954 #, python-format msgid "Supplier Unit Cost - %(currency)s" msgstr "" -#: part/templates/part/detail.html:1152 +#: part/templates/part/detail.html:1043 #, python-format msgid "Unit Price - %(currency)s" msgstr "" @@ -4668,86 +4677,108 @@ msgstr "" msgid "Delete part" msgstr "" -#: part/templates/part/part_base.html:109 +#: part/templates/part/part_base.html:112 msgid "Part is a template part (variants can be made from this part)" msgstr "" -#: part/templates/part/part_base.html:113 +#: part/templates/part/part_base.html:116 msgid "Part can be assembled from other parts" msgstr "" -#: part/templates/part/part_base.html:117 +#: part/templates/part/part_base.html:120 msgid "Part can be used in assemblies" msgstr "" -#: part/templates/part/part_base.html:121 +#: part/templates/part/part_base.html:124 msgid "Part stock is tracked by serial number" msgstr "" -#: part/templates/part/part_base.html:125 +#: part/templates/part/part_base.html:128 msgid "Part can be purchased from external suppliers" msgstr "" -#: part/templates/part/part_base.html:129 +#: part/templates/part/part_base.html:132 msgid "Part can be sold to customers" msgstr "" -#: part/templates/part/part_base.html:135 -#: part/templates/part/part_base.html:143 +#: part/templates/part/part_base.html:138 +#: part/templates/part/part_base.html:146 msgid "Part is virtual (not a physical part)" msgstr "" -#: part/templates/part/part_base.html:136 +#: part/templates/part/part_base.html:139 #: templates/js/translated/company.js:505 #: templates/js/translated/company.js:762 #: templates/js/translated/model_renderers.js:175 -#: templates/js/translated/part.js:465 templates/js/translated/part.js:542 +#: templates/js/translated/part.js:472 templates/js/translated/part.js:549 msgid "Inactive" msgstr "" -#: part/templates/part/part_base.html:155 +#: part/templates/part/part_base.html:156 +#: part/templates/part/part_base.html:579 +msgid "Show Part Details" +msgstr "" + +#: part/templates/part/part_base.html:173 #, python-format msgid "This part is a variant of %(link)s" msgstr "" -#: part/templates/part/part_base.html:172 templates/js/translated/order.js:1546 +#: part/templates/part/part_base.html:190 templates/js/translated/order.js:1545 #: templates/js/translated/table_filters.js:188 msgid "In Stock" msgstr "" -#: part/templates/part/part_base.html:185 templates/js/translated/part.js:1054 +#: part/templates/part/part_base.html:203 templates/js/translated/part.js:1235 msgid "On Order" msgstr "" -#: part/templates/part/part_base.html:192 templates/InvenTree/index.html:178 +#: part/templates/part/part_base.html:210 templates/InvenTree/index.html:178 msgid "Required for Build Orders" msgstr "" -#: part/templates/part/part_base.html:199 +#: part/templates/part/part_base.html:217 msgid "Required for Sales Orders" msgstr "" -#: part/templates/part/part_base.html:206 +#: part/templates/part/part_base.html:224 msgid "Allocated to Orders" msgstr "" -#: part/templates/part/part_base.html:221 templates/js/translated/bom.js:566 +#: part/templates/part/part_base.html:239 templates/js/translated/bom.js:566 msgid "Can Build" msgstr "" -#: part/templates/part/part_base.html:227 templates/js/translated/part.js:885 -#: templates/js/translated/part.js:1058 +#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1066 +#: templates/js/translated/part.js:1239 msgid "Building" msgstr "" -#: part/templates/part/part_base.html:320 part/templates/part/prices.html:144 +#: part/templates/part/part_base.html:295 +msgid "Minimum stock level" +msgstr "" + +#: part/templates/part/part_base.html:324 +msgid "Latest Serial Number" +msgstr "Số seri mới nhất" + +#: part/templates/part/part_base.html:328 +#: stock/templates/stock/item_base.html:159 +msgid "Search for serial number" +msgstr "" + +#: part/templates/part/part_base.html:449 part/templates/part/prices.html:144 msgid "Calculate" msgstr "" -#: part/templates/part/part_base.html:363 +#: part/templates/part/part_base.html:492 msgid "No matching images found" msgstr "" +#: part/templates/part/part_base.html:573 +msgid "Hide Part Details" +msgstr "" + #: part/templates/part/part_pricing.html:22 part/templates/part/prices.html:21 msgid "Supplier Pricing" msgstr "" @@ -4805,20 +4836,15 @@ msgstr "" msgid "No pricing information is available for this part." msgstr "" -#: part/templates/part/part_sidebar.html:8 -#: templates/js/translated/stock.js:1949 -msgid "Details" -msgstr "" - -#: part/templates/part/part_sidebar.html:13 +#: part/templates/part/part_sidebar.html:11 msgid "Variants" msgstr "" -#: part/templates/part/part_sidebar.html:27 +#: part/templates/part/part_sidebar.html:25 msgid "Used In" msgstr "" -#: part/templates/part/part_sidebar.html:43 +#: part/templates/part/part_sidebar.html:41 msgid "Test Templates" msgstr "" @@ -4934,8 +4960,8 @@ msgid "Set category for the following parts" msgstr "" #: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:476 -#: templates/js/translated/part.js:429 templates/js/translated/part.js:875 -#: templates/js/translated/part.js:1062 +#: templates/js/translated/part.js:436 templates/js/translated/part.js:1056 +#: templates/js/translated/part.js:1243 msgid "No Stock" msgstr "" @@ -5037,7 +5063,7 @@ msgstr "" msgid "Delete Part Parameter Template" msgstr "" -#: part/views.py:1489 templates/js/translated/part.js:310 +#: part/views.py:1489 templates/js/translated/part.js:313 msgid "Edit Part Category" msgstr "" @@ -5171,11 +5197,12 @@ msgid "Stock Item Test Report" msgstr "" #: report/templates/report/inventree_test_report_base.html:79 -#: stock/models.py:530 stock/templates/stock/item_base.html:238 +#: stock/models.py:520 stock/templates/stock/item_base.html:149 #: templates/js/translated/build.js:233 templates/js/translated/build.js:637 #: templates/js/translated/build.js:1013 #: templates/js/translated/model_renderers.js:95 -#: templates/js/translated/order.js:1288 templates/js/translated/order.js:1377 +#: templates/js/translated/order.js:1287 templates/js/translated/order.js:1376 +#: templates/js/translated/stock.js:410 msgid "Serial Number" msgstr "" @@ -5184,17 +5211,17 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:93 -#: stock/models.py:1855 +#: stock/models.py:1845 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:94 -#: stock/models.py:1861 +#: stock/models.py:1851 msgid "Result" msgstr "" #: report/templates/report/inventree_test_report_base.html:97 -#: templates/js/translated/order.js:685 templates/js/translated/stock.js:1917 +#: templates/js/translated/order.js:684 templates/js/translated/stock.js:1999 msgid "Date" msgstr "" @@ -5212,7 +5239,7 @@ msgid "Installed Items" msgstr "" #: report/templates/report/inventree_test_report_base.html:137 -#: templates/js/translated/stock.js:2177 +#: templates/js/translated/stock.js:2259 msgid "Serial" msgstr "" @@ -5220,9 +5247,9 @@ msgstr "" msgid "Quantity is required" msgstr "" -#: stock/forms.py:91 stock/forms.py:265 stock/models.py:587 -#: stock/templates/stock/item_base.html:382 -#: templates/js/translated/stock.js:1276 +#: stock/forms.py:91 stock/forms.py:265 stock/models.py:577 +#: stock/templates/stock/item_base.html:186 +#: templates/js/translated/stock.js:1358 msgid "Expiry Date" msgstr "" @@ -5270,241 +5297,241 @@ msgstr "" msgid "Confirm removal of installed stock items" msgstr "" -#: stock/models.py:60 stock/models.py:624 -#: stock/templates/stock/item_base.html:422 +#: stock/models.py:60 stock/models.py:614 +#: stock/templates/stock/item_base.html:417 msgid "Owner" msgstr "" -#: stock/models.py:61 stock/models.py:625 +#: stock/models.py:61 stock/models.py:615 msgid "Select Owner" msgstr "" -#: stock/models.py:352 +#: stock/models.py:342 msgid "StockItem with this serial number already exists" msgstr "" -#: stock/models.py:388 +#: stock/models.py:378 #, python-brace-format msgid "Part type ('{pf}') must be {pe}" msgstr "" -#: stock/models.py:398 stock/models.py:407 +#: stock/models.py:388 stock/models.py:397 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:399 +#: stock/models.py:389 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:421 +#: stock/models.py:411 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:427 +#: stock/models.py:417 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:434 +#: stock/models.py:424 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:476 +#: stock/models.py:466 msgid "Parent Stock Item" msgstr "" -#: stock/models.py:485 +#: stock/models.py:475 msgid "Base part" msgstr "" -#: stock/models.py:493 +#: stock/models.py:483 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:498 stock/templates/stock/location.html:12 +#: stock/models.py:488 stock/templates/stock/location.html:12 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" msgstr "Kho hàng" -#: stock/models.py:501 +#: stock/models.py:491 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:508 +#: stock/models.py:498 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:513 stock/templates/stock/item_base.html:271 +#: stock/models.py:503 stock/templates/stock/item_base.html:299 msgid "Installed In" msgstr "" -#: stock/models.py:516 +#: stock/models.py:506 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:532 +#: stock/models.py:522 msgid "Serial number for this item" msgstr "" -#: stock/models.py:546 +#: stock/models.py:536 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:550 +#: stock/models.py:540 msgid "Stock Quantity" msgstr "" -#: stock/models.py:559 +#: stock/models.py:549 msgid "Source Build" msgstr "" -#: stock/models.py:561 +#: stock/models.py:551 msgid "Build for this stock item" msgstr "" -#: stock/models.py:572 +#: stock/models.py:562 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:575 +#: stock/models.py:565 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:581 +#: stock/models.py:571 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:588 +#: stock/models.py:578 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:601 +#: stock/models.py:591 msgid "Delete on deplete" msgstr "" -#: stock/models.py:601 +#: stock/models.py:591 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:611 stock/templates/stock/item.html:111 +#: stock/models.py:601 stock/templates/stock/item.html:111 msgid "Stock Item Notes" msgstr "" -#: stock/models.py:620 +#: stock/models.py:610 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:630 +#: stock/models.py:620 msgid "Scheduled for deletion" msgstr "" -#: stock/models.py:631 +#: stock/models.py:621 msgid "This StockItem will be deleted by the background worker" msgstr "" -#: stock/models.py:1094 +#: stock/models.py:1084 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1100 +#: stock/models.py:1090 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1106 +#: stock/models.py:1096 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({n})" msgstr "" -#: stock/models.py:1109 +#: stock/models.py:1099 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1112 +#: stock/models.py:1102 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1119 +#: stock/models.py:1109 #, python-brace-format msgid "Serial numbers already exist: {exists}" msgstr "" -#: stock/models.py:1277 +#: stock/models.py:1267 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:1775 +#: stock/models.py:1765 msgid "Entry notes" msgstr "" -#: stock/models.py:1832 +#: stock/models.py:1822 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:1838 +#: stock/models.py:1828 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:1856 +#: stock/models.py:1846 msgid "Test name" msgstr "" -#: stock/models.py:1862 templates/js/translated/table_filters.js:266 +#: stock/models.py:1852 templates/js/translated/table_filters.js:266 msgid "Test result" msgstr "" -#: stock/models.py:1868 +#: stock/models.py:1858 msgid "Test output value" msgstr "" -#: stock/models.py:1875 +#: stock/models.py:1865 msgid "Test result attachment" msgstr "" -#: stock/models.py:1881 +#: stock/models.py:1871 msgid "Test notes" msgstr "" -#: stock/serializers.py:166 +#: stock/serializers.py:171 msgid "Purchase price of this stock item" msgstr "" -#: stock/serializers.py:173 +#: stock/serializers.py:178 msgid "Purchase currency of this stock item" msgstr "" -#: stock/serializers.py:287 +#: stock/serializers.py:292 msgid "Enter number of stock items to serialize" msgstr "" -#: stock/serializers.py:302 +#: stock/serializers.py:307 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "" -#: stock/serializers.py:308 +#: stock/serializers.py:313 msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:319 stock/serializers.py:686 +#: stock/serializers.py:324 stock/serializers.py:691 msgid "Destination stock location" msgstr "" -#: stock/serializers.py:326 +#: stock/serializers.py:331 msgid "Optional note field" msgstr "" -#: stock/serializers.py:339 +#: stock/serializers.py:344 msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:556 +#: stock/serializers.py:561 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:584 +#: stock/serializers.py:589 msgid "Stock transaction notes" msgstr "" -#: stock/serializers.py:594 +#: stock/serializers.py:599 msgid "A list of stock items must be provided" msgstr "" @@ -5629,125 +5656,131 @@ msgstr "" msgid "Install" msgstr "" -#: stock/templates/stock/item_base.html:106 +#: stock/templates/stock/item_base.html:108 msgid "Convert to variant" msgstr "" -#: stock/templates/stock/item_base.html:109 +#: stock/templates/stock/item_base.html:111 msgid "Duplicate stock item" msgstr "" -#: stock/templates/stock/item_base.html:111 +#: stock/templates/stock/item_base.html:113 msgid "Edit stock item" msgstr "" -#: stock/templates/stock/item_base.html:114 +#: stock/templates/stock/item_base.html:116 msgid "Delete stock item" msgstr "" -#: stock/templates/stock/item_base.html:136 -#: stock/templates/stock/item_base.html:386 -#: templates/js/translated/table_filters.js:247 -msgid "Expired" +#: stock/templates/stock/item_base.html:154 +msgid "previous page" msgstr "" -#: stock/templates/stock/item_base.html:146 -#: stock/templates/stock/item_base.html:388 -#: templates/js/translated/table_filters.js:253 -msgid "Stale" +#: stock/templates/stock/item_base.html:154 +msgid "Navigate to previous serial number" msgstr "" -#: stock/templates/stock/item_base.html:161 -msgid "You are not in the list of owners of this item. This stock item cannot be edited." +#: stock/templates/stock/item_base.html:163 +msgid "next page" msgstr "" -#: stock/templates/stock/item_base.html:168 -msgid "This stock item is in production and cannot be edited." -msgstr "" - -#: stock/templates/stock/item_base.html:169 -msgid "Edit the stock item from the build view." -msgstr "" - -#: stock/templates/stock/item_base.html:182 -msgid "This stock item has not passed all required tests" +#: stock/templates/stock/item_base.html:163 +msgid "Navigate to next serial number" msgstr "" #: stock/templates/stock/item_base.html:190 #, python-format -msgid "This stock item is allocated to Sales Order %(link)s (Quantity: %(qty)s)" -msgstr "" - -#: stock/templates/stock/item_base.html:198 -#, python-format -msgid "This stock item is allocated to Build %(link)s (Quantity: %(qty)s)" -msgstr "" - -#: stock/templates/stock/item_base.html:204 -msgid "This stock item is serialized - it has a unique serial number and the quantity cannot be adjusted." -msgstr "" - -#: stock/templates/stock/item_base.html:208 -msgid "This stock item cannot be deleted as it has child items" -msgstr "" - -#: stock/templates/stock/item_base.html:212 -msgid "This stock item will be automatically deleted when all stock is depleted." -msgstr "" - -#: stock/templates/stock/item_base.html:241 -msgid "previous page" -msgstr "" - -#: stock/templates/stock/item_base.html:247 -msgid "next page" -msgstr "" - -#: stock/templates/stock/item_base.html:290 -#: templates/js/translated/build.js:1035 -msgid "No location set" -msgstr "" - -#: stock/templates/stock/item_base.html:297 -msgid "Barcode Identifier" -msgstr "" - -#: stock/templates/stock/item_base.html:339 -msgid "Parent Item" -msgstr "" - -#: stock/templates/stock/item_base.html:357 -msgid "No manufacturer set" -msgstr "" - -#: stock/templates/stock/item_base.html:386 -#, python-format msgid "This StockItem expired on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:388 +#: stock/templates/stock/item_base.html:190 +#: templates/js/translated/table_filters.js:247 +msgid "Expired" +msgstr "" + +#: stock/templates/stock/item_base.html:192 #, python-format msgid "This StockItem expires on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:395 -#: templates/js/translated/stock.js:1289 +#: stock/templates/stock/item_base.html:192 +#: templates/js/translated/table_filters.js:253 +msgid "Stale" +msgstr "" + +#: stock/templates/stock/item_base.html:199 +#: templates/js/translated/stock.js:1371 msgid "Last Updated" msgstr "" -#: stock/templates/stock/item_base.html:400 +#: stock/templates/stock/item_base.html:204 msgid "Last Stocktake" msgstr "" -#: stock/templates/stock/item_base.html:404 +#: stock/templates/stock/item_base.html:208 msgid "No stocktake performed" msgstr "" -#: stock/templates/stock/item_base.html:415 +#: stock/templates/stock/item_base.html:226 +msgid "You are not in the list of owners of this item. This stock item cannot be edited." +msgstr "" + +#: stock/templates/stock/item_base.html:233 +msgid "This stock item is in production and cannot be edited." +msgstr "" + +#: stock/templates/stock/item_base.html:234 +msgid "Edit the stock item from the build view." +msgstr "" + +#: stock/templates/stock/item_base.html:247 +msgid "This stock item has not passed all required tests" +msgstr "" + +#: stock/templates/stock/item_base.html:255 +#, python-format +msgid "This stock item is allocated to Sales Order %(link)s (Quantity: %(qty)s)" +msgstr "" + +#: stock/templates/stock/item_base.html:263 +#, python-format +msgid "This stock item is allocated to Build %(link)s (Quantity: %(qty)s)" +msgstr "" + +#: stock/templates/stock/item_base.html:269 +msgid "This stock item is serialized - it has a unique serial number and the quantity cannot be adjusted." +msgstr "" + +#: stock/templates/stock/item_base.html:273 +msgid "This stock item cannot be deleted as it has child items" +msgstr "" + +#: stock/templates/stock/item_base.html:277 +msgid "This stock item will be automatically deleted when all stock is depleted." +msgstr "" + +#: stock/templates/stock/item_base.html:318 +#: templates/js/translated/build.js:1035 +msgid "No location set" +msgstr "" + +#: stock/templates/stock/item_base.html:325 +msgid "Barcode Identifier" +msgstr "" + +#: stock/templates/stock/item_base.html:367 +msgid "Parent Item" +msgstr "" + +#: stock/templates/stock/item_base.html:385 +msgid "No manufacturer set" +msgstr "" + +#: stock/templates/stock/item_base.html:410 msgid "Tests" msgstr "" -#: stock/templates/stock/item_base.html:505 +#: stock/templates/stock/item_base.html:500 msgid "Edit Stock Status" msgstr "" @@ -5825,30 +5858,35 @@ msgstr "" msgid "New Location" msgstr "" -#: stock/templates/stock/location.html:86 +#: stock/templates/stock/location.html:95 +#: stock/templates/stock/location.html:101 +msgid "Location Path" +msgstr "" + +#: stock/templates/stock/location.html:102 msgid "Top level stock location" msgstr "" -#: stock/templates/stock/location.html:95 +#: stock/templates/stock/location.html:115 msgid "You are not in the list of owners of this location. This stock location cannot be edited." msgstr "" -#: stock/templates/stock/location.html:113 -#: stock/templates/stock/location.html:160 +#: stock/templates/stock/location.html:128 +#: stock/templates/stock/location.html:175 #: stock/templates/stock/location_sidebar.html:5 msgid "Sublocations" msgstr "" -#: stock/templates/stock/location.html:127 templates/InvenTree/search.html:170 +#: stock/templates/stock/location.html:142 templates/InvenTree/search.html:170 #: templates/stats.html:97 users/models.py:42 msgid "Stock Locations" msgstr "" -#: stock/templates/stock/location.html:167 templates/stock_table.html:30 +#: stock/templates/stock/location.html:182 templates/stock_table.html:30 msgid "Printing Actions" msgstr "" -#: stock/templates/stock/location.html:171 templates/stock_table.html:34 +#: stock/templates/stock/location.html:186 templates/stock_table.html:34 msgid "Print labels" msgstr "" @@ -5942,7 +5980,7 @@ msgstr "" msgid "Uninstall Stock Items" msgstr "" -#: stock/views.py:760 templates/js/translated/stock.js:648 +#: stock/views.py:760 templates/js/translated/stock.js:730 msgid "Confirm stock adjustment" msgstr "" @@ -5950,7 +5988,7 @@ msgstr "" msgid "Uninstalled stock items" msgstr "" -#: stock/views.py:793 templates/js/translated/stock.js:318 +#: stock/views.py:793 templates/js/translated/stock.js:319 msgid "Edit Stock Item" msgstr "" @@ -5962,7 +6000,7 @@ msgstr "" msgid "Create new Stock Item" msgstr "" -#: stock/views.py:1186 templates/js/translated/stock.js:298 +#: stock/views.py:1186 templates/js/translated/stock.js:299 msgid "Duplicate Stock Item" msgstr "" @@ -6868,7 +6906,7 @@ msgstr "" msgid "Unlink" msgstr "" -#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:600 +#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:682 msgid "Remove stock item" msgstr "" @@ -6963,7 +7001,7 @@ msgid "View BOM" msgstr "" #: templates/js/translated/bom.js:608 templates/js/translated/build.js:1183 -#: templates/js/translated/order.js:1320 +#: templates/js/translated/order.js:1319 msgid "Actions" msgstr "" @@ -7055,7 +7093,7 @@ msgstr "" msgid "No build order allocations found" msgstr "" -#: templates/js/translated/build.js:424 templates/js/translated/order.js:1194 +#: templates/js/translated/build.js:424 templates/js/translated/order.js:1193 msgid "Location not specified" msgstr "" @@ -7064,12 +7102,12 @@ msgid "No active build outputs found" msgstr "" #: templates/js/translated/build.js:1052 templates/js/translated/build.js:1760 -#: templates/js/translated/order.js:1327 +#: templates/js/translated/order.js:1326 msgid "Edit stock allocation" msgstr "" #: templates/js/translated/build.js:1054 templates/js/translated/build.js:1761 -#: templates/js/translated/order.js:1328 +#: templates/js/translated/order.js:1327 msgid "Delete stock allocation" msgstr "" @@ -7090,11 +7128,11 @@ msgid "Quantity Per" msgstr "" #: templates/js/translated/build.js:1134 templates/js/translated/build.js:1360 -#: templates/js/translated/build.js:1756 templates/js/translated/order.js:1557 +#: templates/js/translated/build.js:1756 templates/js/translated/order.js:1556 msgid "Allocated" msgstr "" -#: templates/js/translated/build.js:1190 templates/js/translated/order.js:1611 +#: templates/js/translated/build.js:1190 templates/js/translated/order.js:1610 msgid "Build stock" msgstr "" @@ -7102,7 +7140,7 @@ msgstr "" msgid "Order stock" msgstr "" -#: templates/js/translated/build.js:1197 templates/js/translated/order.js:1604 +#: templates/js/translated/build.js:1197 templates/js/translated/order.js:1603 msgid "Allocate stock" msgstr "" @@ -7143,9 +7181,9 @@ msgstr "" msgid "No builds matching query" msgstr "" -#: templates/js/translated/build.js:1593 templates/js/translated/part.js:966 -#: templates/js/translated/part.js:1377 templates/js/translated/stock.js:1094 -#: templates/js/translated/stock.js:1871 +#: templates/js/translated/build.js:1593 templates/js/translated/part.js:1147 +#: templates/js/translated/part.js:1558 templates/js/translated/stock.js:1176 +#: templates/js/translated/stock.js:1953 msgid "Select" msgstr "" @@ -7153,7 +7191,7 @@ msgstr "" msgid "Build order is overdue" msgstr "" -#: templates/js/translated/build.js:1674 templates/js/translated/stock.js:2090 +#: templates/js/translated/build.js:1674 templates/js/translated/stock.js:2172 msgid "No user information" msgstr "" @@ -7197,10 +7235,6 @@ msgstr "" msgid "Delete Supplier Part" msgstr "" -#: templates/js/translated/company.js:265 -msgid "Edit Company" -msgstr "" - #: templates/js/translated/company.js:286 msgid "Add new Company" msgstr "" @@ -7230,34 +7264,34 @@ msgid "No manufacturer parts found" msgstr "" #: templates/js/translated/company.js:497 -#: templates/js/translated/company.js:754 templates/js/translated/part.js:449 -#: templates/js/translated/part.js:534 +#: templates/js/translated/company.js:754 templates/js/translated/part.js:456 +#: templates/js/translated/part.js:541 msgid "Template part" msgstr "" #: templates/js/translated/company.js:501 -#: templates/js/translated/company.js:758 templates/js/translated/part.js:453 -#: templates/js/translated/part.js:538 +#: templates/js/translated/company.js:758 templates/js/translated/part.js:460 +#: templates/js/translated/part.js:545 msgid "Assembled part" msgstr "" -#: templates/js/translated/company.js:628 templates/js/translated/part.js:626 +#: templates/js/translated/company.js:628 templates/js/translated/part.js:633 msgid "No parameters found" msgstr "" -#: templates/js/translated/company.js:665 templates/js/translated/part.js:668 +#: templates/js/translated/company.js:665 templates/js/translated/part.js:675 msgid "Edit parameter" msgstr "" -#: templates/js/translated/company.js:666 templates/js/translated/part.js:669 +#: templates/js/translated/company.js:666 templates/js/translated/part.js:676 msgid "Delete parameter" msgstr "" -#: templates/js/translated/company.js:685 templates/js/translated/part.js:686 +#: templates/js/translated/company.js:685 templates/js/translated/part.js:693 msgid "Edit Parameter" msgstr "" -#: templates/js/translated/company.js:696 templates/js/translated/part.js:698 +#: templates/js/translated/company.js:696 templates/js/translated/part.js:705 msgid "Delete Parameter" msgstr "" @@ -7346,7 +7380,7 @@ msgid "NO" msgstr "" #: templates/js/translated/label.js:29 templates/js/translated/report.js:118 -#: templates/js/translated/stock.js:624 +#: templates/js/translated/stock.js:706 msgid "Select Stock Items" msgstr "" @@ -7502,11 +7536,11 @@ msgstr "" msgid "Export Order" msgstr "" -#: templates/js/translated/order.js:211 templates/js/translated/stock.js:423 +#: templates/js/translated/order.js:211 templates/js/translated/stock.js:505 msgid "Format" msgstr "" -#: templates/js/translated/order.js:212 templates/js/translated/stock.js:424 +#: templates/js/translated/order.js:212 templates/js/translated/stock.js:506 msgid "Select file format" msgstr "" @@ -7522,7 +7556,7 @@ msgstr "" msgid "Quantity to receive" msgstr "" -#: templates/js/translated/order.js:360 templates/js/translated/stock.js:1673 +#: templates/js/translated/order.js:360 templates/js/translated/stock.js:1755 msgid "Stock Status" msgstr "" @@ -7546,321 +7580,321 @@ msgstr "" msgid "Receive Purchase Order Items" msgstr "" -#: templates/js/translated/order.js:627 +#: templates/js/translated/order.js:627 templates/js/translated/part.js:746 msgid "No purchase orders found" msgstr "" -#: templates/js/translated/order.js:652 templates/js/translated/order.js:1063 +#: templates/js/translated/order.js:659 templates/js/translated/order.js:1062 msgid "Order is overdue" msgstr "" -#: templates/js/translated/order.js:772 templates/js/translated/order.js:1646 +#: templates/js/translated/order.js:771 templates/js/translated/order.js:1645 msgid "Edit Line Item" msgstr "" -#: templates/js/translated/order.js:784 templates/js/translated/order.js:1657 +#: templates/js/translated/order.js:783 templates/js/translated/order.js:1656 msgid "Delete Line Item" msgstr "" -#: templates/js/translated/order.js:823 +#: templates/js/translated/order.js:822 msgid "No line items found" msgstr "" -#: templates/js/translated/order.js:850 templates/js/translated/order.js:1467 +#: templates/js/translated/order.js:849 templates/js/translated/order.js:1466 msgid "Total" msgstr "" -#: templates/js/translated/order.js:904 templates/js/translated/order.js:1492 -#: templates/js/translated/part.js:1594 templates/js/translated/part.js:1805 +#: templates/js/translated/order.js:903 templates/js/translated/order.js:1491 +#: templates/js/translated/part.js:1775 templates/js/translated/part.js:1986 msgid "Unit Price" msgstr "" -#: templates/js/translated/order.js:919 templates/js/translated/order.js:1508 +#: templates/js/translated/order.js:918 templates/js/translated/order.js:1507 msgid "Total Price" msgstr "" -#: templates/js/translated/order.js:997 templates/js/translated/order.js:1617 +#: templates/js/translated/order.js:996 templates/js/translated/order.js:1616 msgid "Edit line item" msgstr "" -#: templates/js/translated/order.js:998 +#: templates/js/translated/order.js:997 msgid "Delete line item" msgstr "" -#: templates/js/translated/order.js:1002 +#: templates/js/translated/order.js:1001 templates/js/translated/part.js:878 msgid "Receive line item" msgstr "" -#: templates/js/translated/order.js:1039 +#: templates/js/translated/order.js:1038 msgid "No sales orders found" msgstr "" -#: templates/js/translated/order.js:1077 +#: templates/js/translated/order.js:1076 msgid "Invalid Customer" msgstr "" -#: templates/js/translated/order.js:1155 +#: templates/js/translated/order.js:1154 msgid "No sales order allocations found" msgstr "" -#: templates/js/translated/order.js:1248 +#: templates/js/translated/order.js:1247 msgid "Edit Stock Allocation" msgstr "" -#: templates/js/translated/order.js:1265 +#: templates/js/translated/order.js:1264 msgid "Confirm Delete Operation" msgstr "" -#: templates/js/translated/order.js:1266 +#: templates/js/translated/order.js:1265 msgid "Delete Stock Allocation" msgstr "" -#: templates/js/translated/order.js:1308 +#: templates/js/translated/order.js:1307 msgid "Stock location not specified" msgstr "" -#: templates/js/translated/order.js:1557 +#: templates/js/translated/order.js:1556 msgid "Fulfilled" msgstr "" -#: templates/js/translated/order.js:1601 +#: templates/js/translated/order.js:1600 msgid "Allocate serial numbers" msgstr "" -#: templates/js/translated/order.js:1607 +#: templates/js/translated/order.js:1606 msgid "Purchase stock" msgstr "" -#: templates/js/translated/order.js:1614 templates/js/translated/order.js:1793 +#: templates/js/translated/order.js:1613 templates/js/translated/order.js:1792 msgid "Calculate price" msgstr "" -#: templates/js/translated/order.js:1618 +#: templates/js/translated/order.js:1617 msgid "Delete line item " msgstr "" -#: templates/js/translated/order.js:1741 +#: templates/js/translated/order.js:1740 msgid "Allocate Stock Item" msgstr "" -#: templates/js/translated/order.js:1801 +#: templates/js/translated/order.js:1800 msgid "Update Unit Price" msgstr "" -#: templates/js/translated/order.js:1815 +#: templates/js/translated/order.js:1814 msgid "No matching line items" msgstr "" -#: templates/js/translated/part.js:51 +#: templates/js/translated/part.js:52 msgid "Part Attributes" msgstr "" -#: templates/js/translated/part.js:55 +#: templates/js/translated/part.js:56 msgid "Part Creation Options" msgstr "" -#: templates/js/translated/part.js:59 +#: templates/js/translated/part.js:60 msgid "Part Duplication Options" msgstr "" -#: templates/js/translated/part.js:63 +#: templates/js/translated/part.js:64 msgid "Supplier Options" msgstr "" -#: templates/js/translated/part.js:77 +#: templates/js/translated/part.js:78 msgid "Add Part Category" msgstr "" -#: templates/js/translated/part.js:166 +#: templates/js/translated/part.js:162 msgid "Create Initial Stock" msgstr "" -#: templates/js/translated/part.js:167 +#: templates/js/translated/part.js:163 msgid "Create an initial stock item for this part" msgstr "" -#: templates/js/translated/part.js:174 +#: templates/js/translated/part.js:170 msgid "Initial Stock Quantity" msgstr "" -#: templates/js/translated/part.js:175 +#: templates/js/translated/part.js:171 msgid "Specify initial stock quantity for this part" msgstr "" -#: templates/js/translated/part.js:182 +#: templates/js/translated/part.js:178 msgid "Select destination stock location" msgstr "" -#: templates/js/translated/part.js:193 +#: templates/js/translated/part.js:196 msgid "Copy Category Parameters" msgstr "" -#: templates/js/translated/part.js:194 +#: templates/js/translated/part.js:197 msgid "Copy parameter templates from selected part category" msgstr "" -#: templates/js/translated/part.js:202 +#: templates/js/translated/part.js:205 msgid "Add Supplier Data" msgstr "" -#: templates/js/translated/part.js:203 +#: templates/js/translated/part.js:206 msgid "Create initial supplier data for this part" msgstr "" -#: templates/js/translated/part.js:259 +#: templates/js/translated/part.js:262 msgid "Copy Image" msgstr "" -#: templates/js/translated/part.js:260 +#: templates/js/translated/part.js:263 msgid "Copy image from original part" msgstr "" -#: templates/js/translated/part.js:268 +#: templates/js/translated/part.js:271 msgid "Copy bill of materials from original part" msgstr "" -#: templates/js/translated/part.js:275 +#: templates/js/translated/part.js:278 msgid "Copy Parameters" msgstr "" -#: templates/js/translated/part.js:276 +#: templates/js/translated/part.js:279 msgid "Copy parameter data from original part" msgstr "" -#: templates/js/translated/part.js:289 +#: templates/js/translated/part.js:292 msgid "Parent part category" msgstr "" -#: templates/js/translated/part.js:333 +#: templates/js/translated/part.js:336 msgid "Edit Part" msgstr "" -#: templates/js/translated/part.js:335 +#: templates/js/translated/part.js:338 msgid "Part edited" msgstr "" -#: templates/js/translated/part.js:403 +#: templates/js/translated/part.js:410 msgid "You are subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:405 +#: templates/js/translated/part.js:412 msgid "You have subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:410 +#: templates/js/translated/part.js:417 msgid "Subscribe to notifications for this item" msgstr "" -#: templates/js/translated/part.js:412 +#: templates/js/translated/part.js:419 msgid "You have unsubscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:441 templates/js/translated/part.js:526 +#: templates/js/translated/part.js:448 templates/js/translated/part.js:533 msgid "Trackable part" msgstr "" -#: templates/js/translated/part.js:445 templates/js/translated/part.js:530 +#: templates/js/translated/part.js:452 templates/js/translated/part.js:537 msgid "Virtual part" msgstr "" -#: templates/js/translated/part.js:457 +#: templates/js/translated/part.js:464 msgid "Subscribed part" msgstr "" -#: templates/js/translated/part.js:461 +#: templates/js/translated/part.js:468 msgid "Salable part" msgstr "" -#: templates/js/translated/part.js:576 +#: templates/js/translated/part.js:583 msgid "No variants found" msgstr "" -#: templates/js/translated/part.js:765 +#: templates/js/translated/part.js:946 msgid "Delete part relationship" msgstr "" -#: templates/js/translated/part.js:789 +#: templates/js/translated/part.js:970 msgid "Delete Part Relationship" msgstr "" -#: templates/js/translated/part.js:856 templates/js/translated/part.js:1116 +#: templates/js/translated/part.js:1037 templates/js/translated/part.js:1297 msgid "No parts found" msgstr "" -#: templates/js/translated/part.js:1026 +#: templates/js/translated/part.js:1207 msgid "No category" msgstr "" -#: templates/js/translated/part.js:1049 +#: templates/js/translated/part.js:1230 #: templates/js/translated/table_filters.js:381 msgid "Low stock" msgstr "" -#: templates/js/translated/part.js:1140 templates/js/translated/part.js:1312 -#: templates/js/translated/stock.js:1832 +#: templates/js/translated/part.js:1321 templates/js/translated/part.js:1493 +#: templates/js/translated/stock.js:1914 msgid "Display as list" msgstr "" -#: templates/js/translated/part.js:1156 +#: templates/js/translated/part.js:1337 msgid "Display as grid" msgstr "" -#: templates/js/translated/part.js:1331 templates/js/translated/stock.js:1851 +#: templates/js/translated/part.js:1512 templates/js/translated/stock.js:1933 msgid "Display as tree" msgstr "" -#: templates/js/translated/part.js:1395 +#: templates/js/translated/part.js:1576 msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:1409 templates/js/translated/stock.js:1895 +#: templates/js/translated/part.js:1590 templates/js/translated/stock.js:1977 msgid "Path" msgstr "" -#: templates/js/translated/part.js:1453 +#: templates/js/translated/part.js:1634 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:1504 templates/js/translated/stock.js:816 +#: templates/js/translated/part.js:1685 templates/js/translated/stock.js:898 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:1505 templates/js/translated/stock.js:817 +#: templates/js/translated/part.js:1686 templates/js/translated/stock.js:899 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:1511 +#: templates/js/translated/part.js:1692 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:1533 +#: templates/js/translated/part.js:1714 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:1547 +#: templates/js/translated/part.js:1728 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:1572 +#: templates/js/translated/part.js:1753 #, python-brace-format msgid "No ${human_name} information found" msgstr "" -#: templates/js/translated/part.js:1627 +#: templates/js/translated/part.js:1808 #, python-brace-format msgid "Edit ${human_name}" msgstr "" -#: templates/js/translated/part.js:1628 +#: templates/js/translated/part.js:1809 #, python-brace-format msgid "Delete ${human_name}" msgstr "" -#: templates/js/translated/part.js:1729 +#: templates/js/translated/part.js:1910 msgid "Single Price" msgstr "" -#: templates/js/translated/part.js:1748 +#: templates/js/translated/part.js:1929 msgid "Single Price Difference" msgstr "" @@ -7930,276 +7964,300 @@ msgstr "" msgid "Sales Order(s) must be selected before printing report" msgstr "" -#: templates/js/translated/stock.js:70 +#: templates/js/translated/stock.js:71 msgid "Serialize Stock Item" msgstr "" -#: templates/js/translated/stock.js:88 templates/js/translated/stock.js:167 +#: templates/js/translated/stock.js:89 templates/js/translated/stock.js:168 msgid "Next available serial number" msgstr "" -#: templates/js/translated/stock.js:90 templates/js/translated/stock.js:169 +#: templates/js/translated/stock.js:91 templates/js/translated/stock.js:170 msgid "Latest serial number" msgstr "Số seri mới nhất" -#: templates/js/translated/stock.js:104 +#: templates/js/translated/stock.js:105 msgid "Parent stock location" msgstr "" -#: templates/js/translated/stock.js:140 +#: templates/js/translated/stock.js:141 msgid "New Stock Location" msgstr "" -#: templates/js/translated/stock.js:180 +#: templates/js/translated/stock.js:181 msgid "This part cannot be serialized" msgstr "" -#: templates/js/translated/stock.js:219 +#: templates/js/translated/stock.js:220 msgid "Enter initial quantity for this stock item" msgstr "" -#: templates/js/translated/stock.js:225 +#: templates/js/translated/stock.js:226 msgid "Enter serial numbers for new stock (or leave blank)" msgstr "" -#: templates/js/translated/stock.js:368 +#: templates/js/translated/stock.js:369 msgid "Created new stock item" msgstr "" -#: templates/js/translated/stock.js:381 +#: templates/js/translated/stock.js:382 msgid "Created multiple stock items" msgstr "" -#: templates/js/translated/stock.js:420 +#: templates/js/translated/stock.js:407 +msgid "Find Serial Number" +msgstr "" + +#: templates/js/translated/stock.js:411 templates/js/translated/stock.js:412 +msgid "Enter serial number" +msgstr "" + +#: templates/js/translated/stock.js:428 +msgid "Enter a serial number" +msgstr "" + +#: templates/js/translated/stock.js:448 +msgid "No matching serial number" +msgstr "" + +#: templates/js/translated/stock.js:457 +msgid "More than one matching result found" +msgstr "" + +#: templates/js/translated/stock.js:502 msgid "Export Stock" msgstr "" -#: templates/js/translated/stock.js:431 +#: templates/js/translated/stock.js:513 msgid "Include Sublocations" msgstr "" -#: templates/js/translated/stock.js:432 +#: templates/js/translated/stock.js:514 msgid "Include stock items in sublocations" msgstr "" -#: templates/js/translated/stock.js:474 +#: templates/js/translated/stock.js:556 msgid "Transfer Stock" msgstr "" -#: templates/js/translated/stock.js:475 +#: templates/js/translated/stock.js:557 msgid "Move" msgstr "" -#: templates/js/translated/stock.js:481 +#: templates/js/translated/stock.js:563 msgid "Count Stock" msgstr "" -#: templates/js/translated/stock.js:482 +#: templates/js/translated/stock.js:564 msgid "Count" msgstr "" -#: templates/js/translated/stock.js:486 +#: templates/js/translated/stock.js:568 msgid "Remove Stock" msgstr "" -#: templates/js/translated/stock.js:487 +#: templates/js/translated/stock.js:569 msgid "Take" msgstr "" -#: templates/js/translated/stock.js:491 +#: templates/js/translated/stock.js:573 msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:492 users/models.py:200 +#: templates/js/translated/stock.js:574 users/models.py:200 msgid "Add" msgstr "" -#: templates/js/translated/stock.js:496 templates/stock_table.html:56 +#: templates/js/translated/stock.js:578 templates/stock_table.html:56 msgid "Delete Stock" msgstr "" -#: templates/js/translated/stock.js:585 +#: templates/js/translated/stock.js:667 msgid "Quantity cannot be adjusted for serialized stock" msgstr "" -#: templates/js/translated/stock.js:585 +#: templates/js/translated/stock.js:667 msgid "Specify stock quantity" msgstr "" -#: templates/js/translated/stock.js:625 +#: templates/js/translated/stock.js:707 msgid "You must select at least one available stock item" msgstr "" -#: templates/js/translated/stock.js:783 +#: templates/js/translated/stock.js:865 msgid "PASS" msgstr "" -#: templates/js/translated/stock.js:785 +#: templates/js/translated/stock.js:867 msgid "FAIL" msgstr "" -#: templates/js/translated/stock.js:790 +#: templates/js/translated/stock.js:872 msgid "NO RESULT" msgstr "" -#: templates/js/translated/stock.js:812 +#: templates/js/translated/stock.js:894 msgid "Add test result" msgstr "" -#: templates/js/translated/stock.js:838 +#: templates/js/translated/stock.js:920 msgid "No test results found" msgstr "" -#: templates/js/translated/stock.js:895 +#: templates/js/translated/stock.js:977 msgid "Test Date" msgstr "" -#: templates/js/translated/stock.js:1002 +#: templates/js/translated/stock.js:1084 msgid "In production" msgstr "" -#: templates/js/translated/stock.js:1006 +#: templates/js/translated/stock.js:1088 msgid "Installed in Stock Item" msgstr "" -#: templates/js/translated/stock.js:1010 +#: templates/js/translated/stock.js:1092 msgid "Shipped to customer" msgstr "" -#: templates/js/translated/stock.js:1014 +#: templates/js/translated/stock.js:1096 msgid "Assigned to Sales Order" msgstr "" -#: templates/js/translated/stock.js:1020 +#: templates/js/translated/stock.js:1102 msgid "No stock location set" msgstr "" -#: templates/js/translated/stock.js:1178 +#: templates/js/translated/stock.js:1260 msgid "Stock item is in production" msgstr "" -#: templates/js/translated/stock.js:1183 +#: templates/js/translated/stock.js:1265 msgid "Stock item assigned to sales order" msgstr "" -#: templates/js/translated/stock.js:1186 +#: templates/js/translated/stock.js:1268 msgid "Stock item assigned to customer" msgstr "" -#: templates/js/translated/stock.js:1190 +#: templates/js/translated/stock.js:1272 msgid "Stock item has expired" msgstr "" -#: templates/js/translated/stock.js:1192 +#: templates/js/translated/stock.js:1274 msgid "Stock item will expire soon" msgstr "" -#: templates/js/translated/stock.js:1196 +#: templates/js/translated/stock.js:1278 msgid "Stock item has been allocated" msgstr "" -#: templates/js/translated/stock.js:1200 +#: templates/js/translated/stock.js:1282 msgid "Stock item has been installed in another item" msgstr "" -#: templates/js/translated/stock.js:1207 +#: templates/js/translated/stock.js:1289 msgid "Stock item has been rejected" msgstr "" -#: templates/js/translated/stock.js:1209 +#: templates/js/translated/stock.js:1291 msgid "Stock item is lost" msgstr "" -#: templates/js/translated/stock.js:1211 +#: templates/js/translated/stock.js:1293 msgid "Stock item is destroyed" msgstr "" -#: templates/js/translated/stock.js:1215 +#: templates/js/translated/stock.js:1297 #: templates/js/translated/table_filters.js:183 msgid "Depleted" msgstr "" -#: templates/js/translated/stock.js:1265 +#: templates/js/translated/stock.js:1347 msgid "Stocktake" msgstr "" -#: templates/js/translated/stock.js:1338 +#: templates/js/translated/stock.js:1420 msgid "Supplier part not specified" msgstr "" -#: templates/js/translated/stock.js:1376 +#: templates/js/translated/stock.js:1458 msgid "No stock items matching query" msgstr "" -#: templates/js/translated/stock.js:1397 templates/js/translated/stock.js:1445 +#: templates/js/translated/stock.js:1479 templates/js/translated/stock.js:1527 msgid "items" msgstr "" -#: templates/js/translated/stock.js:1485 +#: templates/js/translated/stock.js:1567 msgid "batches" msgstr "" -#: templates/js/translated/stock.js:1512 +#: templates/js/translated/stock.js:1594 msgid "locations" msgstr "" -#: templates/js/translated/stock.js:1514 +#: templates/js/translated/stock.js:1596 msgid "Undefined location" msgstr "" -#: templates/js/translated/stock.js:1688 +#: templates/js/translated/stock.js:1770 msgid "Set Stock Status" msgstr "" -#: templates/js/translated/stock.js:1702 +#: templates/js/translated/stock.js:1784 msgid "Select Status Code" msgstr "" -#: templates/js/translated/stock.js:1703 +#: templates/js/translated/stock.js:1785 msgid "Status code must be selected" msgstr "" -#: templates/js/translated/stock.js:1927 +#: templates/js/translated/stock.js:2009 msgid "Invalid date" msgstr "" -#: templates/js/translated/stock.js:1974 +#: templates/js/translated/stock.js:2031 +msgid "Details" +msgstr "" + +#: templates/js/translated/stock.js:2056 msgid "Location no longer exists" msgstr "" -#: templates/js/translated/stock.js:1993 +#: templates/js/translated/stock.js:2075 msgid "Purchase order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2012 +#: templates/js/translated/stock.js:2094 msgid "Customer no longer exists" msgstr "" -#: templates/js/translated/stock.js:2030 +#: templates/js/translated/stock.js:2112 msgid "Stock item no longer exists" msgstr "" -#: templates/js/translated/stock.js:2053 +#: templates/js/translated/stock.js:2135 msgid "Added" msgstr "" -#: templates/js/translated/stock.js:2061 +#: templates/js/translated/stock.js:2143 msgid "Removed" msgstr "" -#: templates/js/translated/stock.js:2102 +#: templates/js/translated/stock.js:2184 msgid "Edit tracking entry" msgstr "" -#: templates/js/translated/stock.js:2103 +#: templates/js/translated/stock.js:2185 msgid "Delete tracking entry" msgstr "" -#: templates/js/translated/stock.js:2154 +#: templates/js/translated/stock.js:2236 msgid "No installed items" msgstr "" -#: templates/js/translated/stock.js:2205 +#: templates/js/translated/stock.js:2287 msgid "Uninstall Stock Item" msgstr "" diff --git a/InvenTree/locale/zh/LC_MESSAGES/django.po b/InvenTree/locale/zh/LC_MESSAGES/django.po index 88f3d3ad18..c482dd3fb5 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-11-30 21:49+0000\n" -"PO-Revision-Date: 2021-11-30 21:52\n" +"POT-Creation-Date: 2021-12-03 10:37+0000\n" +"PO-Revision-Date: 2021-12-03 11:26\n" "Last-Translator: \n" "Language-Team: Chinese Simplified\n" "Language: zh_CN\n" @@ -114,129 +114,130 @@ msgstr "未找到序列号" msgid "Number of unique serial number ({s}) must match quantity ({q})" msgstr "唯一序列号 ({s}) 必须匹配数量 ({q})" -#: InvenTree/models.py:114 +#: InvenTree/models.py:120 msgid "Missing file" msgstr "缺少文件" -#: InvenTree/models.py:115 +#: InvenTree/models.py:121 msgid "Missing external link" msgstr "" -#: InvenTree/models.py:126 stock/models.py:1874 +#: InvenTree/models.py:132 stock/models.py:1864 #: templates/js/translated/attachment.js:117 msgid "Attachment" msgstr "附件" -#: InvenTree/models.py:127 +#: InvenTree/models.py:133 msgid "Select file to attach" msgstr "选择附件" -#: InvenTree/models.py:133 company/models.py:131 company/models.py:348 +#: InvenTree/models.py:139 company/models.py:131 company/models.py:348 #: company/models.py:564 order/models.py:163 part/models.py:797 #: report/templates/report/inventree_build_order_base.html:165 #: templates/js/translated/company.js:537 -#: templates/js/translated/company.js:826 templates/js/translated/part.js:1077 +#: templates/js/translated/company.js:826 templates/js/translated/part.js:1258 msgid "Link" msgstr "链接" -#: InvenTree/models.py:134 build/models.py:330 part/models.py:798 -#: stock/models.py:540 +#: InvenTree/models.py:140 build/models.py:330 part/models.py:798 +#: stock/models.py:530 msgid "Link to external URL" msgstr "链接到外部 URL" -#: InvenTree/models.py:137 templates/js/translated/attachment.js:161 +#: InvenTree/models.py:143 templates/js/translated/attachment.js:161 msgid "Comment" msgstr "注释" -#: InvenTree/models.py:137 +#: InvenTree/models.py:143 msgid "File comment" msgstr "文件注释" -#: InvenTree/models.py:143 InvenTree/models.py:144 common/models.py:1185 +#: InvenTree/models.py:149 InvenTree/models.py:150 common/models.py:1185 #: common/models.py:1186 part/models.py:2205 part/models.py:2225 #: report/templates/report/inventree_test_report_base.html:96 -#: templates/js/translated/stock.js:2084 +#: templates/js/translated/stock.js:2166 msgid "User" msgstr "用户" -#: InvenTree/models.py:147 +#: InvenTree/models.py:153 msgid "upload date" msgstr "上传日期" -#: InvenTree/models.py:170 +#: InvenTree/models.py:176 msgid "Filename must not be empty" msgstr "文件名不能为空!" -#: InvenTree/models.py:193 +#: InvenTree/models.py:199 msgid "Invalid attachment directory" msgstr "非法的附件目录" -#: InvenTree/models.py:203 +#: InvenTree/models.py:209 #, python-brace-format msgid "Filename contains illegal character '{c}'" msgstr "文件名包含非法字符 '{c}'" -#: InvenTree/models.py:206 +#: InvenTree/models.py:212 msgid "Filename missing extension" msgstr "缺少文件名扩展" -#: InvenTree/models.py:213 +#: InvenTree/models.py:219 msgid "Attachment with this filename already exists" msgstr "使用此文件名的附件已存在" -#: InvenTree/models.py:220 +#: InvenTree/models.py:226 msgid "Error renaming file" msgstr "重命名文件出错" -#: InvenTree/models.py:255 +#: InvenTree/models.py:261 msgid "Invalid choice" msgstr "选择无效" -#: InvenTree/models.py:271 InvenTree/models.py:272 company/models.py:415 +#: InvenTree/models.py:277 InvenTree/models.py:278 company/models.py:415 #: label/models.py:112 part/models.py:741 part/models.py:2389 -#: part/templates/part/detail.html:25 report/models.py:181 -#: templates/InvenTree/settings/settings.html:259 -#: templates/js/translated/company.js:638 templates/js/translated/part.js:499 -#: templates/js/translated/part.js:636 templates/js/translated/part.js:1384 -#: templates/js/translated/stock.js:1877 +#: report/models.py:181 templates/InvenTree/settings/settings.html:259 +#: templates/js/translated/company.js:638 templates/js/translated/part.js:506 +#: templates/js/translated/part.js:643 templates/js/translated/part.js:1565 +#: templates/js/translated/stock.js:1959 msgid "Name" msgstr "名称" -#: InvenTree/models.py:278 build/models.py:207 +#: InvenTree/models.py:284 build/models.py:207 #: build/templates/build/detail.html:25 company/models.py:354 -#: company/models.py:570 company/templates/company/manufacturer_part.html:80 -#: company/templates/company/supplier_part.html:81 label/models.py:119 -#: order/models.py:161 part/models.py:764 part/templates/part/detail.html:30 +#: company/models.py:570 company/templates/company/company_base.html:68 +#: company/templates/company/manufacturer_part.html:76 +#: company/templates/company/supplier_part.html:73 label/models.py:119 +#: order/models.py:161 part/models.py:764 part/templates/part/category.html:70 +#: part/templates/part/part_base.html:163 #: part/templates/part/set_category.html:14 report/models.py:194 #: report/models.py:553 report/models.py:592 #: report/templates/report/inventree_build_order_base.html:118 -#: stock/templates/stock/location.html:108 templates/js/translated/bom.js:215 +#: stock/templates/stock/location.html:89 templates/js/translated/bom.js:215 #: templates/js/translated/bom.js:428 templates/js/translated/build.js:1621 #: templates/js/translated/company.js:345 #: templates/js/translated/company.js:548 -#: templates/js/translated/company.js:837 templates/js/translated/order.js:673 -#: templates/js/translated/order.js:855 templates/js/translated/order.js:1091 -#: templates/js/translated/part.js:558 templates/js/translated/part.js:752 -#: templates/js/translated/part.js:837 templates/js/translated/part.js:1007 -#: templates/js/translated/part.js:1403 templates/js/translated/part.js:1472 -#: templates/js/translated/stock.js:1151 templates/js/translated/stock.js:1889 -#: templates/js/translated/stock.js:1934 +#: templates/js/translated/company.js:837 templates/js/translated/order.js:680 +#: templates/js/translated/order.js:854 templates/js/translated/order.js:1090 +#: templates/js/translated/part.js:565 templates/js/translated/part.js:933 +#: templates/js/translated/part.js:1018 templates/js/translated/part.js:1188 +#: templates/js/translated/part.js:1584 templates/js/translated/part.js:1653 +#: templates/js/translated/stock.js:1233 templates/js/translated/stock.js:1971 +#: templates/js/translated/stock.js:2016 msgid "Description" msgstr "描述信息" -#: InvenTree/models.py:279 +#: InvenTree/models.py:285 msgid "Description (optional)" msgstr "描述 (可选)" -#: InvenTree/models.py:287 +#: InvenTree/models.py:293 msgid "parent" msgstr "上级项" -#: InvenTree/serializers.py:62 part/models.py:2674 +#: InvenTree/serializers.py:65 part/models.py:2674 msgid "Must be a valid number" msgstr "必须是有效数字" -#: InvenTree/serializers.py:285 +#: InvenTree/serializers.py:299 msgid "Filename" msgstr "文件名" @@ -361,7 +362,7 @@ msgid "Returned" msgstr "已退回" #: InvenTree/status_codes.py:143 -#: order/templates/order/sales_order_base.html:147 +#: order/templates/order/sales_order_base.html:148 msgid "Shipped" msgstr "已发货" @@ -566,7 +567,7 @@ msgid "Barcode associated with StockItem" msgstr "与库存项关联的条形码" #: build/forms.py:36 build/models.py:1283 -#: build/templates/build/build_base.html:124 +#: build/templates/build/build_base.html:132 #: build/templates/build/detail.html:35 common/models.py:1225 #: company/forms.py:42 company/templates/company/supplier_part.html:251 #: order/forms.py:102 order/models.py:729 order/models.py:991 @@ -574,26 +575,27 @@ msgstr "与库存项关联的条形码" #: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:223 #: part/forms.py:239 part/forms.py:255 part/models.py:2576 #: part/templates/part/bom_upload/match_parts.html:31 -#: part/templates/part/detail.html:1076 part/templates/part/detail.html:1162 +#: part/templates/part/detail.html:967 part/templates/part/detail.html:1053 #: part/templates/part/part_pricing.html:16 #: report/templates/report/inventree_build_order_base.html:114 #: report/templates/report/inventree_po_report.html:91 #: report/templates/report/inventree_so_report.html:91 #: report/templates/report/inventree_test_report_base.html:81 #: report/templates/report/inventree_test_report_base.html:139 -#: stock/forms.py:156 stock/serializers.py:286 -#: stock/templates/stock/item_base.html:256 +#: stock/forms.py:156 stock/serializers.py:291 +#: stock/templates/stock/item_base.html:174 #: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:443 #: templates/js/translated/build.js:235 templates/js/translated/build.js:435 #: templates/js/translated/build.js:629 templates/js/translated/build.js:639 #: templates/js/translated/build.js:1015 templates/js/translated/build.js:1362 #: templates/js/translated/model_renderers.js:99 -#: templates/js/translated/order.js:892 templates/js/translated/order.js:1205 -#: templates/js/translated/order.js:1283 templates/js/translated/order.js:1290 -#: templates/js/translated/order.js:1379 templates/js/translated/order.js:1479 -#: templates/js/translated/part.js:1615 templates/js/translated/part.js:1738 -#: templates/js/translated/part.js:1816 templates/js/translated/stock.js:377 -#: templates/js/translated/stock.js:2069 templates/js/translated/stock.js:2171 +#: templates/js/translated/order.js:891 templates/js/translated/order.js:1204 +#: templates/js/translated/order.js:1282 templates/js/translated/order.js:1289 +#: templates/js/translated/order.js:1378 templates/js/translated/order.js:1478 +#: templates/js/translated/part.js:843 templates/js/translated/part.js:1796 +#: templates/js/translated/part.js:1919 templates/js/translated/part.js:1997 +#: templates/js/translated/stock.js:378 templates/js/translated/stock.js:2151 +#: templates/js/translated/stock.js:2253 msgid "Quantity" msgstr "数量" @@ -602,8 +604,8 @@ msgid "Enter quantity for build output" msgstr "输入生产产出数量" #: build/forms.py:41 order/forms.py:96 stock/forms.py:95 -#: stock/serializers.py:307 templates/js/translated/stock.js:224 -#: templates/js/translated/stock.js:378 +#: stock/serializers.py:312 templates/js/translated/stock.js:225 +#: templates/js/translated/stock.js:379 msgid "Serial Numbers" msgstr "序列号" @@ -646,7 +648,7 @@ msgstr "生产订单" #: build/templates/build/index.html:8 build/templates/build/index.html:12 #: order/templates/order/sales_order_detail.html:42 #: order/templates/order/so_sidebar.html:7 -#: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:221 +#: part/templates/part/part_sidebar.html:20 templates/InvenTree/index.html:221 #: templates/InvenTree/search.html:145 #: templates/InvenTree/settings/sidebar.html:42 users/models.py:44 msgid "Build Orders" @@ -662,7 +664,7 @@ msgstr "相关生产订单" #: report/templates/report/inventree_po_report.html:92 #: report/templates/report/inventree_so_report.html:92 #: templates/js/translated/bom.js:435 templates/js/translated/build.js:1119 -#: templates/js/translated/order.js:886 templates/js/translated/order.js:1473 +#: templates/js/translated/order.js:885 templates/js/translated/order.js:1472 msgid "Reference" msgstr "引用" @@ -670,7 +672,7 @@ msgstr "引用" msgid "Brief description of the build" msgstr "生产的简短描述." -#: build/models.py:219 build/templates/build/build_base.html:156 +#: build/models.py:219 build/templates/build/build_base.html:164 #: build/templates/build/detail.html:88 msgid "Parent Build" msgstr "上级生产" @@ -679,7 +681,7 @@ msgstr "上级生产" msgid "BuildOrder to which this build is allocated" msgstr "此次生产匹配的订单" -#: build/models.py:225 build/templates/build/build_base.html:119 +#: build/models.py:225 build/templates/build/build_base.html:77 #: build/templates/build/detail.html:30 company/models.py:705 #: order/models.py:789 order/models.py:860 #: order/templates/order/order_wizard/select_parts.html:32 part/models.py:357 @@ -700,10 +702,10 @@ msgstr "此次生产匹配的订单" #: templates/js/translated/build.js:988 templates/js/translated/build.js:1359 #: templates/js/translated/build.js:1626 templates/js/translated/company.js:489 #: templates/js/translated/company.js:746 templates/js/translated/order.js:426 -#: templates/js/translated/order.js:840 templates/js/translated/order.js:1457 -#: templates/js/translated/part.js:737 templates/js/translated/part.js:818 -#: templates/js/translated/part.js:985 templates/js/translated/stock.js:508 -#: templates/js/translated/stock.js:1108 templates/js/translated/stock.js:2159 +#: templates/js/translated/order.js:839 templates/js/translated/order.js:1456 +#: templates/js/translated/part.js:918 templates/js/translated/part.js:999 +#: templates/js/translated/part.js:1166 templates/js/translated/stock.js:590 +#: templates/js/translated/stock.js:1190 templates/js/translated/stock.js:2241 msgid "Part" msgstr "商品" @@ -751,7 +753,7 @@ msgstr "已完成项目" msgid "Number of stock items which have been completed" msgstr "已完成的库存项目数量" -#: build/models.py:277 part/templates/part/part_base.html:216 +#: build/models.py:277 part/templates/part/part_base.html:234 msgid "Build Status" msgstr "生产状态" @@ -759,7 +761,7 @@ msgstr "生产状态" msgid "Build status code" msgstr "生产状态代码" -#: build/models.py:285 stock/models.py:544 +#: build/models.py:285 stock/models.py:534 msgid "Batch Code" msgstr "批量代码" @@ -768,7 +770,7 @@ msgid "Batch code for this build output" msgstr "此生产产出的批量代码" #: build/models.py:292 order/models.py:165 part/models.py:936 -#: part/templates/part/detail.html:86 templates/js/translated/order.js:1104 +#: part/templates/part/part_base.html:313 templates/js/translated/order.js:1103 msgid "Creation Date" msgstr "创建日期" @@ -797,12 +799,12 @@ msgstr "发布者" msgid "User who issued this build order" msgstr "发布此生产订单的用户" -#: build/models.py:323 build/templates/build/build_base.html:177 +#: build/models.py:323 build/templates/build/build_base.html:185 #: build/templates/build/detail.html:116 order/models.py:179 -#: order/templates/order/order_base.html:154 -#: order/templates/order/sales_order_base.html:161 part/models.py:940 +#: order/templates/order/order_base.html:158 +#: order/templates/order/sales_order_base.html:162 part/models.py:940 #: report/templates/report/inventree_build_order_base.html:159 -#: templates/js/translated/build.js:1680 templates/js/translated/order.js:700 +#: templates/js/translated/build.js:1680 templates/js/translated/order.js:699 msgid "Responsible" msgstr "责任人" @@ -811,10 +813,10 @@ msgid "User responsible for this build order" msgstr "负责此生产订单的用户" #: build/models.py:329 build/templates/build/detail.html:102 -#: company/templates/company/manufacturer_part.html:87 -#: company/templates/company/supplier_part.html:88 -#: part/templates/part/detail.html:80 stock/models.py:538 -#: stock/templates/stock/item_base.html:346 +#: company/templates/company/manufacturer_part.html:102 +#: company/templates/company/supplier_part.html:126 +#: part/templates/part/part_base.html:354 stock/models.py:528 +#: stock/templates/stock/item_base.html:374 msgid "External Link" msgstr "外部链接" @@ -824,15 +826,15 @@ msgstr "外部链接" #: order/models.py:183 order/models.py:738 #: order/templates/order/po_sidebar.html:11 #: order/templates/order/so_sidebar.html:11 part/models.py:925 -#: part/templates/part/detail.html:223 part/templates/part/part_sidebar.html:52 +#: part/templates/part/detail.html:116 part/templates/part/part_sidebar.html:50 #: report/templates/report/inventree_build_order_base.html:173 -#: stock/forms.py:154 stock/forms.py:204 stock/forms.py:238 stock/models.py:610 -#: stock/models.py:1774 stock/models.py:1880 stock/serializers.py:325 -#: stock/serializers.py:583 stock/templates/stock/stock_sidebar.html:21 +#: stock/forms.py:154 stock/forms.py:204 stock/forms.py:238 stock/models.py:600 +#: stock/models.py:1764 stock/models.py:1870 stock/serializers.py:330 +#: stock/serializers.py:588 stock/templates/stock/stock_sidebar.html:21 #: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:599 -#: templates/js/translated/company.js:842 templates/js/translated/order.js:985 -#: templates/js/translated/order.js:1583 templates/js/translated/stock.js:891 -#: templates/js/translated/stock.js:1370 +#: templates/js/translated/company.js:842 templates/js/translated/order.js:984 +#: templates/js/translated/order.js:1582 templates/js/translated/stock.js:973 +#: templates/js/translated/stock.js:1452 msgid "Notes" msgstr "备注" @@ -877,7 +879,7 @@ msgstr "" msgid "Selected stock item not found in BOM" msgstr "" -#: build/models.py:1253 stock/templates/stock/item_base.html:318 +#: build/models.py:1253 stock/templates/stock/item_base.html:346 #: templates/InvenTree/search.html:143 templates/js/translated/build.js:1599 #: templates/navbar.html:33 msgid "Build" @@ -890,11 +892,11 @@ msgstr "" #: build/models.py:1270 build/serializers.py:328 #: stock/templates/stock/item_base.html:8 #: stock/templates/stock/item_base.html:16 -#: stock/templates/stock/item_base.html:340 +#: stock/templates/stock/item_base.html:368 #: templates/js/translated/build.js:408 templates/js/translated/build.js:413 #: templates/js/translated/build.js:1361 templates/js/translated/build.js:1742 -#: templates/js/translated/order.js:1178 templates/js/translated/order.js:1183 -#: templates/js/translated/stock.js:2020 +#: templates/js/translated/order.js:1177 templates/js/translated/order.js:1182 +#: templates/js/translated/stock.js:2102 msgid "Stock Item" msgstr "库存项" @@ -934,16 +936,16 @@ msgstr "" msgid "This build output is not fully allocated" msgstr "" -#: build/serializers.py:190 order/serializers.py:219 order/serializers.py:287 -#: stock/forms.py:236 stock/serializers.py:318 stock/serializers.py:685 -#: stock/templates/stock/item_base.html:286 +#: build/serializers.py:190 order/serializers.py:228 order/serializers.py:296 +#: stock/forms.py:236 stock/serializers.py:323 stock/serializers.py:690 +#: stock/templates/stock/item_base.html:314 #: templates/js/translated/barcode.js:384 #: templates/js/translated/barcode.js:557 templates/js/translated/build.js:420 #: templates/js/translated/build.js:1027 templates/js/translated/order.js:348 -#: templates/js/translated/order.js:1190 templates/js/translated/order.js:1298 -#: templates/js/translated/order.js:1304 templates/js/translated/part.js:181 -#: templates/js/translated/stock.js:510 templates/js/translated/stock.js:1251 -#: templates/js/translated/stock.js:1961 +#: templates/js/translated/order.js:1189 templates/js/translated/order.js:1297 +#: templates/js/translated/order.js:1303 templates/js/translated/part.js:177 +#: templates/js/translated/stock.js:592 templates/js/translated/stock.js:1333 +#: templates/js/translated/stock.js:2043 msgid "Location" msgstr "地点" @@ -951,13 +953,13 @@ msgstr "地点" msgid "Location for completed build outputs" msgstr "" -#: build/serializers.py:197 build/templates/build/build_base.html:129 +#: build/serializers.py:197 build/templates/build/build_base.html:137 #: build/templates/build/detail.html:63 order/models.py:572 -#: order/serializers.py:240 stock/templates/stock/item_base.html:409 +#: order/serializers.py:249 stock/templates/stock/item_base.html:180 #: templates/js/translated/barcode.js:140 templates/js/translated/build.js:1655 -#: templates/js/translated/order.js:431 templates/js/translated/order.js:677 -#: templates/js/translated/order.js:1096 templates/js/translated/stock.js:1226 -#: templates/js/translated/stock.js:2038 templates/js/translated/stock.js:2187 +#: templates/js/translated/order.js:431 templates/js/translated/order.js:1095 +#: templates/js/translated/stock.js:1308 templates/js/translated/stock.js:2120 +#: templates/js/translated/stock.js:2269 msgid "Status" msgstr "状态" @@ -986,8 +988,8 @@ msgstr "" msgid "Item must be in stock" msgstr "" -#: build/serializers.py:348 order/models.py:316 order/serializers.py:233 -#: stock/models.py:381 stock/models.py:1103 stock/serializers.py:298 +#: build/serializers.py:348 order/models.py:316 order/serializers.py:242 +#: stock/models.py:371 stock/models.py:1093 stock/serializers.py:303 msgid "Quantity must be greater than zero" msgstr "" @@ -1031,7 +1033,7 @@ msgid "Edit Build" msgstr "编辑生产" #: build/templates/build/build_base.html:56 -#: build/templates/build/build_base.html:207 build/views.py:56 +#: build/templates/build/build_base.html:215 build/views.py:56 msgid "Cancel Build" msgstr "取消生产" @@ -1041,93 +1043,95 @@ msgstr "删除生产" #: build/templates/build/build_base.html:64 #: build/templates/build/build_base.html:65 -#: build/templates/build/build_base.html:223 +#: build/templates/build/build_base.html:231 msgid "Complete Build" msgstr "生产完成" -#: build/templates/build/build_base.html:79 +#: build/templates/build/build_base.html:82 +msgid "Build Description" +msgstr "" + +#: build/templates/build/build_base.html:91 #, python-format msgid "This Build Order is allocated to Sales Order %(link)s" msgstr "" -#: build/templates/build/build_base.html:86 +#: build/templates/build/build_base.html:98 #, python-format msgid "This Build Order is a child of Build Order %(link)s" msgstr "" -#: build/templates/build/build_base.html:93 +#: build/templates/build/build_base.html:105 msgid "Build Order is ready to mark as completed" msgstr "" -#: build/templates/build/build_base.html:98 +#: build/templates/build/build_base.html:110 msgid "Build Order cannot be completed as outstanding outputs remain" msgstr "" -#: build/templates/build/build_base.html:103 +#: build/templates/build/build_base.html:115 msgid "Required build quantity has not yet been completed" msgstr "所需生产数量尚未完成" -#: build/templates/build/build_base.html:108 +#: build/templates/build/build_base.html:120 msgid "Stock has not been fully allocated to this Build Order" msgstr "" -#: build/templates/build/build_base.html:138 +#: build/templates/build/build_base.html:146 #: build/templates/build/detail.html:132 -#: order/templates/order/order_base.html:140 -#: order/templates/order/sales_order_base.html:140 +#: order/templates/order/order_base.html:144 +#: order/templates/order/sales_order_base.html:141 #: report/templates/report/inventree_build_order_base.html:126 -#: templates/js/translated/build.js:1692 templates/js/translated/order.js:690 -#: templates/js/translated/order.js:1109 +#: templates/js/translated/build.js:1692 templates/js/translated/order.js:689 +#: templates/js/translated/order.js:1108 msgid "Target Date" msgstr "预计日期" -#: build/templates/build/build_base.html:143 +#: build/templates/build/build_base.html:151 #, python-format msgid "This build was due on %(target)s" msgstr "此次生产的截止日期为 %(target)s" -#: build/templates/build/build_base.html:143 -#: build/templates/build/build_base.html:188 -#: order/templates/order/order_base.html:81 -#: order/templates/order/order_base.html:102 -#: order/templates/order/sales_order_base.html:78 -#: order/templates/order/sales_order_base.html:107 +#: build/templates/build/build_base.html:151 +#: build/templates/build/build_base.html:196 +#: order/templates/order/order_base.html:98 +#: order/templates/order/sales_order_base.html:93 #: templates/js/translated/table_filters.js:294 #: templates/js/translated/table_filters.js:322 #: templates/js/translated/table_filters.js:339 msgid "Overdue" msgstr "逾期" -#: build/templates/build/build_base.html:150 +#: build/templates/build/build_base.html:158 #: build/templates/build/detail.html:68 build/templates/build/detail.html:143 #: templates/js/translated/build.js:1641 #: templates/js/translated/table_filters.js:304 msgid "Completed" msgstr "已完成" -#: build/templates/build/build_base.html:163 +#: build/templates/build/build_base.html:171 #: build/templates/build/detail.html:95 order/models.py:857 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: order/templates/order/sales_order_ship.html:25 #: report/templates/report/inventree_build_order_base.html:136 #: report/templates/report/inventree_so_report.html:77 -#: stock/templates/stock/item_base.html:280 -#: templates/js/translated/order.js:1051 +#: stock/templates/stock/item_base.html:308 +#: templates/js/translated/order.js:1050 msgid "Sales Order" msgstr "销售订单" -#: build/templates/build/build_base.html:170 +#: build/templates/build/build_base.html:178 #: build/templates/build/detail.html:109 #: report/templates/report/inventree_build_order_base.html:153 msgid "Issued By" msgstr "发布者" -#: build/templates/build/build_base.html:215 +#: build/templates/build/build_base.html:223 msgid "Incomplete Outputs" msgstr "未完成输出" -#: build/templates/build/build_base.html:216 +#: build/templates/build/build_base.html:224 msgid "Build Order cannot be completed as incomplete build outputs remain" msgstr "" @@ -1188,7 +1192,7 @@ msgid "Stock can be taken from any available location." msgstr "" #: build/templates/build/detail.html:50 order/models.py:811 stock/forms.py:150 -#: templates/js/translated/order.js:432 templates/js/translated/order.js:974 +#: templates/js/translated/order.js:432 templates/js/translated/order.js:973 msgid "Destination" msgstr "" @@ -1201,16 +1205,16 @@ msgid "Allocated Parts" msgstr "" #: build/templates/build/detail.html:81 -#: stock/templates/stock/item_base.html:304 -#: templates/js/translated/stock.js:1240 templates/js/translated/stock.js:2194 +#: stock/templates/stock/item_base.html:332 +#: templates/js/translated/stock.js:1322 templates/js/translated/stock.js:2276 #: templates/js/translated/table_filters.js:151 #: templates/js/translated/table_filters.js:233 msgid "Batch" msgstr "" #: build/templates/build/detail.html:127 -#: order/templates/order/order_base.html:127 -#: order/templates/order/sales_order_base.html:134 +#: order/templates/order/order_base.html:131 +#: order/templates/order/sales_order_base.html:135 #: templates/js/translated/build.js:1663 msgid "Created" msgstr "已创建" @@ -1254,7 +1258,7 @@ msgstr "订单所需部件" #: build/templates/build/detail.html:185 #: company/templates/company/detail.html:38 #: company/templates/company/detail.html:85 order/views.py:509 -#: part/templates/part/category.html:166 +#: part/templates/part/category.html:173 msgid "Order Parts" msgstr "订购商品" @@ -1306,8 +1310,8 @@ msgstr "" #: order/templates/order/po_sidebar.html:9 #: order/templates/order/purchase_order_detail.html:60 #: order/templates/order/sales_order_detail.html:52 -#: order/templates/order/so_sidebar.html:9 part/templates/part/detail.html:300 -#: part/templates/part/part_sidebar.html:50 stock/templates/stock/item.html:95 +#: order/templates/order/so_sidebar.html:9 part/templates/part/detail.html:193 +#: part/templates/part/part_sidebar.html:48 stock/templates/stock/item.html:95 #: stock/templates/stock/stock_sidebar.html:19 msgid "Attachments" msgstr "附件" @@ -1323,7 +1327,7 @@ msgstr "生产备注" #: order/templates/order/purchase_order_detail.html:108 #: order/templates/order/sales_order_detail.html:72 #: order/templates/order/sales_order_detail.html:99 -#: part/templates/part/detail.html:227 stock/templates/stock/item.html:115 +#: part/templates/part/detail.html:120 stock/templates/stock/item.html:115 #: stock/templates/stock/item.html:205 msgid "Edit Notes" msgstr "编辑备注" @@ -1336,7 +1340,7 @@ msgstr "" msgid "All untracked stock items have been allocated" msgstr "" -#: build/templates/build/index.html:18 part/templates/part/detail.html:407 +#: build/templates/build/index.html:18 part/templates/part/detail.html:300 msgid "New Build Order" msgstr "新建生产订单" @@ -1380,7 +1384,7 @@ msgstr "创建创建生产产出" msgid "Maximum output quantity is " msgstr "最大产出量是 " -#: build/views.py:122 stock/serializers.py:356 stock/views.py:1290 +#: build/views.py:122 stock/serializers.py:361 stock/views.py:1290 msgid "Serial numbers already exist" msgstr "序列号已存在" @@ -1675,7 +1679,7 @@ msgid "Parts are trackable by default" msgstr "商品默认可跟踪" #: common/models.py:745 part/models.py:920 -#: part/templates/part/part_base.html:144 +#: part/templates/part/part_base.html:147 #: templates/js/translated/table_filters.js:42 msgid "Virtual" msgstr "虚拟" @@ -2142,7 +2146,7 @@ msgstr "" #: common/models.py:1233 company/serializers.py:264 #: company/templates/company/supplier_part.html:256 -#: templates/js/translated/part.js:1620 +#: templates/js/translated/part.js:852 templates/js/translated/part.js:1801 msgid "Price" msgstr "价格" @@ -2206,7 +2210,7 @@ msgstr "公司简介" msgid "Description of the company" msgstr "公司简介" -#: company/models.py:112 company/templates/company/company_base.html:70 +#: company/models.py:112 company/templates/company/company_base.html:97 #: templates/js/translated/company.js:349 msgid "Website" msgstr "网站" @@ -2215,7 +2219,7 @@ msgstr "网站" msgid "Company website URL" msgstr "公司网站" -#: company/models.py:117 company/templates/company/company_base.html:88 +#: company/models.py:117 company/templates/company/company_base.html:115 msgid "Address" msgstr "地址" @@ -2231,7 +2235,7 @@ msgstr "电话号码" msgid "Contact phone number" msgstr "联系电话" -#: company/models.py:125 company/templates/company/company_base.html:102 +#: company/models.py:125 company/templates/company/company_base.html:129 #: templates/InvenTree/settings/user.html:47 msgid "Email" msgstr "电子邮件" @@ -2240,7 +2244,7 @@ msgstr "电子邮件" msgid "Contact email address" msgstr "联系人电子邮件" -#: company/models.py:128 company/templates/company/company_base.html:109 +#: company/models.py:128 company/templates/company/company_base.html:136 msgid "Contact" msgstr "联系人" @@ -2281,7 +2285,7 @@ msgid "Does this company manufacture parts?" msgstr "该公司制造商品吗?" #: company/models.py:152 company/serializers.py:270 -#: company/templates/company/company_base.html:76 stock/serializers.py:172 +#: company/templates/company/company_base.html:103 stock/serializers.py:177 msgid "Currency" msgstr "货币" @@ -2289,8 +2293,8 @@ msgstr "货币" msgid "Default currency used for this company" msgstr "该公司使用的默认货币" -#: company/models.py:320 company/models.py:535 stock/models.py:484 -#: stock/templates/stock/item_base.html:224 +#: company/models.py:320 company/models.py:535 stock/models.py:474 +#: stock/templates/stock/item_base.html:135 msgid "Base Part" msgstr "" @@ -2298,29 +2302,29 @@ msgstr "" msgid "Select part" msgstr "选择商品" -#: company/models.py:335 company/templates/company/company_base.html:116 -#: company/templates/company/manufacturer_part.html:93 -#: company/templates/company/supplier_part.html:104 -#: stock/templates/stock/item_base.html:353 +#: company/models.py:335 company/templates/company/company_base.html:73 +#: company/templates/company/manufacturer_part.html:91 +#: company/templates/company/supplier_part.html:97 +#: stock/templates/stock/item_base.html:381 #: templates/js/translated/company.js:333 #: templates/js/translated/company.js:514 -#: templates/js/translated/company.js:797 templates/js/translated/part.js:229 +#: templates/js/translated/company.js:797 templates/js/translated/part.js:232 msgid "Manufacturer" msgstr "制造商" -#: company/models.py:336 templates/js/translated/part.js:230 +#: company/models.py:336 templates/js/translated/part.js:233 msgid "Select manufacturer" msgstr "选择制造商" -#: company/models.py:342 company/templates/company/manufacturer_part.html:97 -#: company/templates/company/supplier_part.html:112 +#: company/models.py:342 company/templates/company/manufacturer_part.html:96 +#: company/templates/company/supplier_part.html:105 #: templates/js/translated/company.js:530 -#: templates/js/translated/company.js:815 templates/js/translated/order.js:874 -#: templates/js/translated/part.js:240 +#: templates/js/translated/company.js:815 templates/js/translated/order.js:873 +#: templates/js/translated/part.js:243 templates/js/translated/part.js:832 msgid "MPN" msgstr "MPN" -#: company/models.py:343 templates/js/translated/part.js:241 +#: company/models.py:343 templates/js/translated/part.js:244 msgid "Manufacturer Part Number" msgstr "制造商商品编号" @@ -2335,7 +2339,7 @@ msgstr "制造商商品描述" #: company/models.py:409 company/models.py:558 #: company/templates/company/manufacturer_part.html:6 #: company/templates/company/manufacturer_part.html:23 -#: stock/templates/stock/item_base.html:363 +#: stock/templates/stock/item_base.html:391 msgid "Manufacturer Part" msgstr "制造商商品" @@ -2345,8 +2349,8 @@ msgstr "参数名称" #: company/models.py:422 #: report/templates/report/inventree_test_report_base.html:95 -#: stock/models.py:1867 templates/js/translated/company.js:644 -#: templates/js/translated/part.js:645 templates/js/translated/stock.js:878 +#: stock/models.py:1857 templates/js/translated/company.js:644 +#: templates/js/translated/part.js:652 templates/js/translated/stock.js:960 msgid "Value" msgstr "数值" @@ -2355,9 +2359,9 @@ msgid "Parameter value" msgstr "参数值" #: company/models.py:429 part/models.py:882 part/models.py:2397 -#: part/templates/part/detail.html:59 +#: part/templates/part/part_base.html:288 #: templates/InvenTree/settings/settings.html:264 -#: templates/js/translated/company.js:650 templates/js/translated/part.js:651 +#: templates/js/translated/company.js:650 templates/js/translated/part.js:658 msgid "Units" msgstr "单位" @@ -2369,28 +2373,28 @@ msgstr "参数单位" msgid "Linked manufacturer part must reference the same base part" msgstr "" -#: company/models.py:545 company/templates/company/company_base.html:121 -#: company/templates/company/supplier_part.html:94 order/models.py:263 -#: order/templates/order/order_base.html:108 +#: company/models.py:545 company/templates/company/company_base.html:78 +#: company/templates/company/supplier_part.html:87 order/models.py:263 +#: order/templates/order/order_base.html:112 #: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:219 -#: part/bom.py:247 stock/templates/stock/item_base.html:370 +#: part/bom.py:247 stock/templates/stock/item_base.html:398 #: templates/js/translated/company.js:337 -#: templates/js/translated/company.js:771 templates/js/translated/order.js:660 -#: templates/js/translated/part.js:210 +#: templates/js/translated/company.js:771 templates/js/translated/order.js:667 +#: templates/js/translated/part.js:213 templates/js/translated/part.js:800 msgid "Supplier" msgstr "供应商" -#: company/models.py:546 templates/js/translated/part.js:211 +#: company/models.py:546 templates/js/translated/part.js:214 msgid "Select supplier" msgstr "选择供应商" -#: company/models.py:551 company/templates/company/supplier_part.html:98 -#: part/bom.py:220 part/bom.py:248 templates/js/translated/order.js:861 -#: templates/js/translated/part.js:221 +#: company/models.py:551 company/templates/company/supplier_part.html:91 +#: part/bom.py:220 part/bom.py:248 templates/js/translated/order.js:860 +#: templates/js/translated/part.js:224 templates/js/translated/part.js:818 msgid "SKU" msgstr "SKU" -#: company/models.py:552 templates/js/translated/part.js:222 +#: company/models.py:552 templates/js/translated/part.js:225 msgid "Supplier stock keeping unit" msgstr "" @@ -2406,7 +2410,7 @@ msgstr "外部供货商商品链接URL" msgid "Supplier part description" msgstr "供应商商品描述" -#: company/models.py:576 company/templates/company/supplier_part.html:126 +#: company/models.py:576 company/templates/company/supplier_part.html:119 #: part/models.py:2588 report/templates/report/inventree_po_report.html:93 #: report/templates/report/inventree_so_report.html:93 msgid "Note" @@ -2420,9 +2424,9 @@ msgstr "" msgid "Minimum charge (e.g. stocking fee)" msgstr "最低收费(例如库存费)" -#: company/models.py:582 company/templates/company/supplier_part.html:119 -#: stock/models.py:507 stock/templates/stock/item_base.html:311 -#: templates/js/translated/company.js:847 templates/js/translated/stock.js:1366 +#: company/models.py:582 company/templates/company/supplier_part.html:112 +#: stock/models.py:497 stock/templates/stock/item_base.html:339 +#: templates/js/translated/company.js:847 templates/js/translated/stock.js:1448 msgid "Packaging" msgstr "打包" @@ -2457,43 +2461,56 @@ msgstr "公司" msgid "Create Purchase Order" msgstr "创建采购订单" -#: company/templates/company/company_base.html:27 +#: company/templates/company/company_base.html:26 +msgid "Company actions" +msgstr "" + +#: company/templates/company/company_base.html:31 msgid "Edit company information" msgstr "编辑公司信息" #: company/templates/company/company_base.html:32 -#: company/templates/company/company_base.html:148 +#: templates/js/translated/company.js:265 +msgid "Edit Company" +msgstr "编辑公司信息" + +#: company/templates/company/company_base.html:36 +msgid "Delete company" +msgstr "" + +#: company/templates/company/company_base.html:37 +#: company/templates/company/company_base.html:159 msgid "Delete Company" msgstr "删除该公司" -#: company/templates/company/company_base.html:48 +#: company/templates/company/company_base.html:53 #: part/templates/part/part_thumb.html:12 msgid "Upload new image" msgstr "上传新图片" -#: company/templates/company/company_base.html:51 +#: company/templates/company/company_base.html:56 #: part/templates/part/part_thumb.html:14 msgid "Download image from URL" msgstr "从 URL 下载图片" -#: company/templates/company/company_base.html:81 -msgid "Uses default currency" -msgstr "使用默认货币" - -#: company/templates/company/company_base.html:95 -msgid "Phone" -msgstr "电话" - -#: company/templates/company/company_base.html:126 order/models.py:567 -#: order/templates/order/sales_order_base.html:114 stock/models.py:525 -#: stock/models.py:526 stock/templates/stock/item_base.html:263 -#: templates/js/translated/company.js:329 templates/js/translated/order.js:1073 -#: templates/js/translated/stock.js:2002 +#: company/templates/company/company_base.html:83 order/models.py:567 +#: order/templates/order/sales_order_base.html:115 stock/models.py:515 +#: stock/models.py:516 stock/templates/stock/item_base.html:291 +#: templates/js/translated/company.js:329 templates/js/translated/order.js:1072 +#: templates/js/translated/stock.js:2084 msgid "Customer" msgstr "客户" -#: company/templates/company/company_base.html:194 -#: part/templates/part/part_base.html:342 +#: company/templates/company/company_base.html:108 +msgid "Uses default currency" +msgstr "使用默认货币" + +#: company/templates/company/company_base.html:122 +msgid "Phone" +msgstr "电话" + +#: company/templates/company/company_base.html:205 +#: part/templates/part/part_base.html:471 msgid "Upload Image" msgstr "上传图片" @@ -2509,23 +2526,23 @@ msgid "Create new supplier part" msgstr "创建新的供应商商品" #: company/templates/company/detail.html:20 -#: company/templates/company/manufacturer_part.html:112 -#: part/templates/part/detail.html:440 +#: company/templates/company/manufacturer_part.html:118 +#: part/templates/part/detail.html:333 msgid "New Supplier Part" msgstr "新建供应商商品" #: company/templates/company/detail.html:32 #: company/templates/company/detail.html:79 -#: company/templates/company/manufacturer_part.html:121 -#: company/templates/company/manufacturer_part.html:150 -#: part/templates/part/category.html:160 part/templates/part/detail.html:449 -#: part/templates/part/detail.html:477 +#: company/templates/company/manufacturer_part.html:127 +#: company/templates/company/manufacturer_part.html:156 +#: part/templates/part/category.html:167 part/templates/part/detail.html:342 +#: part/templates/part/detail.html:370 msgid "Options" msgstr "选项" #: company/templates/company/detail.html:37 #: company/templates/company/detail.html:84 -#: part/templates/part/category.html:166 +#: part/templates/part/category.html:173 msgid "Order parts" msgstr "订购商品" @@ -2547,7 +2564,7 @@ msgstr "制造商商品" msgid "Create new manufacturer part" msgstr "新建制造商商品" -#: company/templates/company/detail.html:67 part/templates/part/detail.html:467 +#: company/templates/company/detail.html:67 part/templates/part/detail.html:360 msgid "New Manufacturer Part" msgstr "新建制造商商品" @@ -2561,7 +2578,7 @@ msgstr "供货商库存" #: order/templates/order/order_base.html:13 #: order/templates/order/purchase_orders.html:8 #: order/templates/order/purchase_orders.html:12 -#: part/templates/part/detail.html:171 part/templates/part/part_sidebar.html:35 +#: part/templates/part/detail.html:64 part/templates/part/part_sidebar.html:33 #: templates/InvenTree/index.html:252 templates/InvenTree/search.html:203 #: templates/InvenTree/settings/sidebar.html:44 templates/navbar.html:45 #: users/models.py:45 @@ -2583,7 +2600,7 @@ msgstr "新建采购订单" #: order/templates/order/sales_order_base.html:13 #: order/templates/order/sales_orders.html:8 #: order/templates/order/sales_orders.html:15 -#: part/templates/part/detail.html:194 part/templates/part/part_sidebar.html:39 +#: part/templates/part/detail.html:87 part/templates/part/part_sidebar.html:37 #: templates/InvenTree/index.html:283 templates/InvenTree/search.html:223 #: templates/InvenTree/settings/sidebar.html:46 templates/navbar.html:56 #: users/models.py:46 @@ -2610,14 +2627,14 @@ msgid "Company Notes" msgstr "公司备注" #: company/templates/company/detail.html:383 -#: company/templates/company/manufacturer_part.html:209 -#: part/templates/part/detail.html:520 +#: company/templates/company/manufacturer_part.html:215 +#: part/templates/part/detail.html:413 msgid "Delete Supplier Parts?" msgstr "删除供应商商品?" #: company/templates/company/detail.html:384 -#: company/templates/company/manufacturer_part.html:210 -#: part/templates/part/detail.html:521 +#: company/templates/company/manufacturer_part.html:216 +#: part/templates/part/detail.html:414 msgid "All selected supplier parts will be deleted" msgstr "删除所有选定的供应商商品" @@ -2634,7 +2651,7 @@ msgstr "制造商" #: company/templates/company/manufacturer_part.html:35 #: company/templates/company/supplier_part.html:34 #: company/templates/company/supplier_part.html:159 -#: part/templates/part/detail.html:174 part/templates/part/part_base.html:76 +#: part/templates/part/detail.html:67 part/templates/part/part_base.html:76 msgid "Order part" msgstr "订购商品" @@ -2648,60 +2665,60 @@ msgstr "编辑制造商商品" msgid "Delete manufacturer part" msgstr "删除生产商商品" -#: company/templates/company/manufacturer_part.html:70 -#: company/templates/company/supplier_part.html:71 +#: company/templates/company/manufacturer_part.html:66 +#: company/templates/company/supplier_part.html:63 msgid "Internal Part" msgstr "内部商品" -#: company/templates/company/manufacturer_part.html:108 +#: company/templates/company/manufacturer_part.html:114 #: company/templates/company/supplier_part.html:15 company/views.py:49 -#: part/templates/part/part_sidebar.html:33 part/templates/part/prices.html:163 +#: part/templates/part/part_sidebar.html:31 part/templates/part/prices.html:163 #: templates/InvenTree/search.html:194 templates/navbar.html:43 msgid "Suppliers" msgstr "供应商" -#: company/templates/company/manufacturer_part.html:123 -#: part/templates/part/detail.html:451 +#: company/templates/company/manufacturer_part.html:129 +#: part/templates/part/detail.html:344 msgid "Delete supplier parts" msgstr "删除供应商商品" -#: company/templates/company/manufacturer_part.html:123 -#: company/templates/company/manufacturer_part.html:152 -#: company/templates/company/manufacturer_part.html:248 -#: part/templates/part/detail.html:451 part/templates/part/detail.html:479 +#: company/templates/company/manufacturer_part.html:129 +#: company/templates/company/manufacturer_part.html:158 +#: company/templates/company/manufacturer_part.html:254 +#: part/templates/part/detail.html:344 part/templates/part/detail.html:372 #: templates/js/translated/company.js:425 templates/js/translated/helpers.js:31 #: users/models.py:204 msgid "Delete" msgstr "删除" -#: company/templates/company/manufacturer_part.html:137 +#: company/templates/company/manufacturer_part.html:143 #: company/templates/company/manufacturer_part_sidebar.html:5 #: part/templates/part/category_sidebar.html:17 -#: part/templates/part/detail.html:277 part/templates/part/part_sidebar.html:10 +#: part/templates/part/detail.html:170 part/templates/part/part_sidebar.html:8 msgid "Parameters" msgstr "参数" -#: company/templates/company/manufacturer_part.html:141 -#: part/templates/part/detail.html:282 +#: company/templates/company/manufacturer_part.html:147 +#: part/templates/part/detail.html:175 #: templates/InvenTree/settings/category.html:12 #: templates/InvenTree/settings/part.html:65 msgid "New Parameter" msgstr "新建参数" -#: company/templates/company/manufacturer_part.html:152 +#: company/templates/company/manufacturer_part.html:158 msgid "Delete parameters" msgstr "删除参数" -#: company/templates/company/manufacturer_part.html:185 -#: part/templates/part/detail.html:976 +#: company/templates/company/manufacturer_part.html:191 +#: part/templates/part/detail.html:867 msgid "Add Parameter" msgstr "添加参数" -#: company/templates/company/manufacturer_part.html:233 +#: company/templates/company/manufacturer_part.html:239 msgid "Selected parameters will be deleted" msgstr "所选参数将被删除" -#: company/templates/company/manufacturer_part.html:245 +#: company/templates/company/manufacturer_part.html:251 msgid "Delete Parameters" msgstr "删除参数" @@ -2722,9 +2739,9 @@ msgid "Assigned Stock Items" msgstr "" #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 stock/models.py:492 -#: stock/templates/stock/item_base.html:375 -#: templates/js/translated/company.js:787 templates/js/translated/stock.js:1323 +#: company/templates/company/supplier_part.html:24 stock/models.py:482 +#: stock/templates/stock/item_base.html:403 +#: templates/js/translated/company.js:787 templates/js/translated/stock.js:1405 msgid "Supplier Part" msgstr "供应商商品" @@ -2744,13 +2761,13 @@ msgid "Supplier Part Stock" msgstr "供货商商品库存" #: company/templates/company/supplier_part.html:141 -#: part/templates/part/detail.html:127 stock/templates/stock/location.html:147 +#: part/templates/part/detail.html:20 stock/templates/stock/location.html:162 msgid "Create new stock item" msgstr "" #: company/templates/company/supplier_part.html:142 -#: part/templates/part/detail.html:128 stock/templates/stock/location.html:148 -#: templates/js/translated/stock.js:354 +#: part/templates/part/detail.html:21 stock/templates/stock/location.html:163 +#: templates/js/translated/stock.js:355 msgid "New Stock Item" msgstr "" @@ -2760,7 +2777,7 @@ msgid "Supplier Part Orders" msgstr "供应商商品订单" #: company/templates/company/supplier_part.html:160 -#: part/templates/part/detail.html:175 +#: part/templates/part/detail.html:68 msgid "Order Part" msgstr "订购商品" @@ -2796,15 +2813,15 @@ msgid "Delete price break" msgstr "" #: company/templates/company/supplier_part_navbar.html:15 -#: part/templates/part/part_sidebar.html:16 +#: part/templates/part/part_sidebar.html:14 #: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:14 #: stock/templates/stock/stock_app_base.html:10 #: templates/InvenTree/search.html:156 #: templates/InvenTree/settings/sidebar.html:40 -#: templates/js/translated/bom.js:216 templates/js/translated/part.js:427 -#: templates/js/translated/part.js:562 templates/js/translated/part.js:878 -#: templates/js/translated/part.js:1039 templates/js/translated/stock.js:509 -#: templates/js/translated/stock.js:1162 templates/navbar.html:26 +#: templates/js/translated/bom.js:216 templates/js/translated/part.js:434 +#: templates/js/translated/part.js:569 templates/js/translated/part.js:1059 +#: templates/js/translated/part.js:1220 templates/js/translated/stock.js:591 +#: templates/js/translated/stock.js:1244 templates/navbar.html:26 msgid "Stock" msgstr "库存" @@ -2818,16 +2835,16 @@ msgid "Supplier Part Pricing" msgstr "供应商商品价格" #: company/templates/company/supplier_part_navbar.html:29 -#: part/templates/part/part_sidebar.html:30 +#: part/templates/part/part_sidebar.html:28 msgid "Pricing" msgstr "定价" #: company/templates/company/supplier_part_sidebar.html:5 -#: stock/templates/stock/location.html:118 -#: stock/templates/stock/location.html:132 -#: stock/templates/stock/location.html:144 +#: stock/templates/stock/location.html:133 +#: stock/templates/stock/location.html:147 +#: stock/templates/stock/location.html:159 #: stock/templates/stock/location_sidebar.html:7 -#: templates/InvenTree/search.html:158 templates/js/translated/stock.js:1901 +#: templates/InvenTree/search.html:158 templates/js/translated/stock.js:1983 #: templates/stats.html:93 templates/stats.html:102 users/models.py:43 msgid "Stock Items" msgstr "库存项" @@ -2947,7 +2964,7 @@ msgstr "商品查询筛选器 (逗号分隔的键值对列表)" msgid "Place order" msgstr "" -#: order/forms.py:37 order/templates/order/order_base.html:59 +#: order/forms.py:37 order/templates/order/order_base.html:60 msgid "Mark order as complete" msgstr "" @@ -3000,8 +3017,8 @@ msgstr "" msgid "Company from which the items are being ordered" msgstr "订购该商品的公司" -#: order/models.py:267 order/templates/order/order_base.html:114 -#: templates/js/translated/order.js:669 +#: order/models.py:267 order/templates/order/order_base.html:118 +#: templates/js/translated/order.js:676 msgid "Supplier Reference" msgstr "" @@ -3061,7 +3078,7 @@ msgstr "" msgid "Target date for order completion. Order will be overdue after this date." msgstr "" -#: order/models.py:582 templates/js/translated/order.js:1114 +#: order/models.py:582 templates/js/translated/order.js:1113 msgid "Shipment Date" msgstr "" @@ -3086,16 +3103,16 @@ msgid "Line item notes" msgstr "" #: order/models.py:768 order/models.py:856 -#: templates/js/translated/order.js:1166 +#: templates/js/translated/order.js:1165 msgid "Order" msgstr "" #: order/models.py:769 order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_po_report.html:77 -#: stock/templates/stock/item_base.html:325 -#: templates/js/translated/order.js:638 templates/js/translated/stock.js:1300 -#: templates/js/translated/stock.js:1983 +#: stock/templates/stock/item_base.html:353 +#: templates/js/translated/order.js:638 templates/js/translated/part.js:775 +#: templates/js/translated/stock.js:1382 templates/js/translated/stock.js:2065 msgid "Purchase Order" msgstr "" @@ -3103,9 +3120,10 @@ msgstr "" msgid "Supplier part" msgstr "供应商商品" -#: order/models.py:797 order/templates/order/order_base.html:147 -#: order/templates/order/sales_order_base.html:154 -#: templates/js/translated/order.js:429 templates/js/translated/order.js:954 +#: order/models.py:797 order/templates/order/order_base.html:151 +#: order/templates/order/sales_order_base.html:155 +#: templates/js/translated/order.js:429 templates/js/translated/order.js:953 +#: templates/js/translated/part.js:847 templates/js/translated/part.js:873 msgid "Received" msgstr "" @@ -3113,9 +3131,9 @@ msgstr "" msgid "Number of items received" msgstr "" -#: order/models.py:805 part/templates/part/prices.html:176 stock/models.py:619 -#: stock/serializers.py:163 stock/templates/stock/item_base.html:332 -#: templates/js/translated/stock.js:1354 +#: order/models.py:805 part/templates/part/prices.html:176 stock/models.py:609 +#: stock/serializers.py:168 stock/templates/stock/item_base.html:360 +#: templates/js/translated/stock.js:1436 msgid "Purchase Price" msgstr "采购价格" @@ -3176,47 +3194,47 @@ msgstr "" msgid "Enter stock allocation quantity" msgstr "" -#: order/serializers.py:169 +#: order/serializers.py:175 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:204 +#: order/serializers.py:213 msgid "Line Item" msgstr "" -#: order/serializers.py:210 +#: order/serializers.py:219 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:220 order/serializers.py:288 +#: order/serializers.py:229 order/serializers.py:297 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:244 +#: order/serializers.py:253 msgid "Barcode Hash" msgstr "" -#: order/serializers.py:245 +#: order/serializers.py:254 msgid "Unique identifier field" msgstr "" -#: order/serializers.py:262 +#: order/serializers.py:271 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:300 +#: order/serializers.py:309 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:317 +#: order/serializers.py:326 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:328 +#: order/serializers.py:337 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:569 +#: order/serializers.py:578 msgid "Sale price currency" msgstr "" @@ -3248,22 +3266,36 @@ msgstr "" msgid "Receive items" msgstr "" -#: order/templates/order/order_base.html:93 -#: order/templates/order/sales_order_base.html:98 +#: order/templates/order/order_base.html:58 +#: order/templates/order/purchase_order_detail.html:31 +msgid "Receive Items" +msgstr "" + +#: order/templates/order/order_base.html:62 order/views.py:185 +msgid "Complete Order" +msgstr "" + +#: order/templates/order/order_base.html:84 +#: order/templates/order/sales_order_base.html:79 msgid "Order Reference" msgstr "" -#: order/templates/order/order_base.html:98 -#: order/templates/order/sales_order_base.html:103 +#: order/templates/order/order_base.html:89 +#: order/templates/order/sales_order_base.html:84 +msgid "Order Description" +msgstr "" + +#: order/templates/order/order_base.html:94 +#: order/templates/order/sales_order_base.html:89 msgid "Order Status" msgstr "" -#: order/templates/order/order_base.html:133 +#: order/templates/order/order_base.html:137 #: report/templates/report/inventree_build_order_base.html:122 msgid "Issued" msgstr "" -#: order/templates/order/order_base.html:203 +#: order/templates/order/order_base.html:207 msgid "Edit Purchase Order" msgstr "" @@ -3421,7 +3453,7 @@ msgid "Select existing purchase orders, or create new orders." msgstr "" #: order/templates/order/order_wizard/select_pos.html:31 -#: templates/js/translated/order.js:695 templates/js/translated/order.js:1119 +#: templates/js/translated/order.js:694 templates/js/translated/order.js:1118 msgid "Items" msgstr "" @@ -3465,10 +3497,6 @@ msgstr "" msgid "Receive selected items" msgstr "" -#: order/templates/order/purchase_order_detail.html:31 -msgid "Receive Items" -msgstr "" - #: order/templates/order/purchase_order_detail.html:50 msgid "Received Items" msgstr "" @@ -3496,16 +3524,16 @@ msgstr "" msgid "Ship Order" msgstr "" -#: order/templates/order/sales_order_base.html:86 +#: order/templates/order/sales_order_base.html:102 msgid "This Sales Order has not been fully allocated" msgstr "" -#: order/templates/order/sales_order_base.html:121 -#: templates/js/translated/order.js:1086 +#: order/templates/order/sales_order_base.html:122 +#: templates/js/translated/order.js:1085 msgid "Customer Reference" msgstr "" -#: order/templates/order/sales_order_base.html:194 +#: order/templates/order/sales_order_base.html:195 msgid "Edit Sales Order" msgstr "" @@ -3576,10 +3604,6 @@ msgstr "" msgid "Purchase order issued" msgstr "" -#: order/views.py:185 -msgid "Complete Order" -msgstr "" - #: order/views.py:201 msgid "Confirm order completion" msgstr "" @@ -3672,11 +3696,11 @@ msgid "This field is required" msgstr "此字段为必填" #: part/bom.py:125 part/models.py:81 part/models.py:816 -#: part/templates/part/category.html:90 part/templates/part/detail.html:104 +#: part/templates/part/category.html:104 part/templates/part/part_base.html:338 msgid "Default Location" msgstr "默认仓储地点" -#: part/bom.py:126 part/templates/part/part_base.html:167 +#: part/bom.py:126 part/templates/part/part_base.html:185 msgid "Available Stock" msgstr "可用库存" @@ -3793,19 +3817,19 @@ msgstr "此类别商品的默认关键字" msgid "Part Category" msgstr "商品类别" -#: part/models.py:96 part/templates/part/category.html:117 +#: part/models.py:96 part/templates/part/category.html:124 #: templates/InvenTree/search.html:101 templates/stats.html:84 #: users/models.py:40 msgid "Part Categories" msgstr "商品类别" #: part/models.py:358 part/templates/part/cat_link.html:3 -#: part/templates/part/category.html:13 part/templates/part/category.html:122 -#: part/templates/part/category.html:142 +#: part/templates/part/category.html:13 part/templates/part/category.html:129 +#: part/templates/part/category.html:149 #: part/templates/part/category_sidebar.html:9 #: templates/InvenTree/index.html:85 templates/InvenTree/search.html:88 #: templates/InvenTree/settings/sidebar.html:36 -#: templates/js/translated/part.js:1416 templates/navbar.html:19 +#: templates/js/translated/part.js:1597 templates/navbar.html:19 #: templates/stats.html:80 templates/stats.html:89 users/models.py:41 msgid "Parts" msgstr "商品" @@ -3859,8 +3883,8 @@ msgstr "" msgid "Part description" msgstr "商品描述" -#: part/models.py:770 part/templates/part/category.html:97 -#: part/templates/part/detail.html:73 +#: part/models.py:770 part/templates/part/category.html:82 +#: part/templates/part/part_base.html:302 msgid "Keywords" msgstr "关键词" @@ -3869,9 +3893,10 @@ msgid "Part keywords to improve visibility in search results" msgstr "提高搜索结果可见性的关键字" #: part/models.py:778 part/models.py:2223 part/models.py:2472 -#: part/templates/part/detail.html:36 part/templates/part/set_category.html:15 +#: part/templates/part/part_base.html:265 +#: part/templates/part/set_category.html:15 #: templates/InvenTree/settings/settings.html:163 -#: templates/js/translated/part.js:1021 +#: templates/js/translated/part.js:1202 msgid "Category" msgstr "类别" @@ -3879,9 +3904,9 @@ msgstr "类别" msgid "Part category" msgstr "商品类别" -#: part/models.py:784 part/templates/part/detail.html:45 -#: templates/js/translated/part.js:550 templates/js/translated/part.js:974 -#: templates/js/translated/stock.js:1134 +#: part/models.py:784 part/templates/part/part_base.html:274 +#: templates/js/translated/part.js:557 templates/js/translated/part.js:1155 +#: templates/js/translated/stock.js:1216 msgid "IPN" msgstr "" @@ -3893,8 +3918,8 @@ msgstr "内部商品编号" msgid "Part revision or version number" msgstr "商品版本号" -#: part/models.py:792 part/templates/part/detail.html:52 report/models.py:200 -#: templates/js/translated/part.js:554 +#: part/models.py:792 part/templates/part/part_base.html:281 +#: report/models.py:200 templates/js/translated/part.js:561 msgid "Revision" msgstr "" @@ -3902,7 +3927,7 @@ msgstr "" msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:861 part/templates/part/detail.html:113 +#: part/models.py:861 part/templates/part/part_base.html:347 msgid "Default Supplier" msgstr "" @@ -3918,7 +3943,7 @@ msgstr "" msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:875 part/templates/part/part_base.html:178 +#: part/models.py:875 part/templates/part/part_base.html:196 msgid "Minimum Stock" msgstr "最低库存" @@ -4001,8 +4026,8 @@ msgstr "" msgid "Test with this name already exists for this part" msgstr "" -#: part/models.py:2310 templates/js/translated/part.js:1467 -#: templates/js/translated/stock.js:858 +#: part/models.py:2310 templates/js/translated/part.js:1648 +#: templates/js/translated/stock.js:940 msgid "Test Name" msgstr "" @@ -4018,7 +4043,7 @@ msgstr "" msgid "Enter description for this test" msgstr "" -#: part/models.py:2322 templates/js/translated/part.js:1476 +#: part/models.py:2322 templates/js/translated/part.js:1657 #: templates/js/translated/table_filters.js:276 msgid "Required" msgstr "" @@ -4027,7 +4052,7 @@ msgstr "" msgid "Is this test required to pass?" msgstr "" -#: part/models.py:2328 templates/js/translated/part.js:1484 +#: part/models.py:2328 templates/js/translated/part.js:1665 msgid "Requires Value" msgstr "" @@ -4035,7 +4060,7 @@ msgstr "" msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:2334 templates/js/translated/part.js:1491 +#: part/models.py:2334 templates/js/translated/part.js:1672 msgid "Requires Attachment" msgstr "" @@ -4150,7 +4175,7 @@ msgstr "" msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:2686 stock/models.py:371 +#: part/models.py:2686 stock/models.py:361 msgid "Quantity must be integer value for trackable parts" msgstr "" @@ -4213,7 +4238,7 @@ msgstr "" msgid "The BOM for %(part)s has not been validated." msgstr "" -#: part/templates/part/bom.html:30 part/templates/part/detail.html:357 +#: part/templates/part/bom.html:30 part/templates/part/detail.html:250 msgid "BOM actions" msgstr "" @@ -4298,68 +4323,64 @@ msgstr "新建商品类别" msgid "New Category" msgstr "" -#: part/templates/part/category.html:67 -msgid "Top level part category" -msgstr "" - -#: part/templates/part/category.html:79 +#: part/templates/part/category.html:76 part/templates/part/category.html:89 msgid "Category Path" msgstr "类别路径" -#: part/templates/part/category.html:84 -msgid "Category Description" -msgstr "类别说明" +#: part/templates/part/category.html:90 +msgid "Top level part category" +msgstr "" -#: part/templates/part/category.html:103 part/templates/part/category.html:194 +#: part/templates/part/category.html:110 part/templates/part/category.html:201 #: part/templates/part/category_sidebar.html:7 msgid "Subcategories" msgstr "子类别" -#: part/templates/part/category.html:108 +#: part/templates/part/category.html:115 msgid "Parts (Including subcategories)" msgstr "商品 (包括子类别)" -#: part/templates/part/category.html:145 +#: part/templates/part/category.html:152 msgid "Export Part Data" msgstr "导出商品数据" -#: part/templates/part/category.html:146 part/templates/part/category.html:170 +#: part/templates/part/category.html:153 part/templates/part/category.html:177 msgid "Export" msgstr "导出" -#: part/templates/part/category.html:149 +#: part/templates/part/category.html:156 msgid "Create new part" msgstr "新建商品" -#: part/templates/part/category.html:150 templates/js/translated/bom.js:40 +#: part/templates/part/category.html:157 templates/js/translated/bom.js:40 msgid "New Part" msgstr "新商品" -#: part/templates/part/category.html:164 +#: part/templates/part/category.html:171 msgid "Set category" msgstr "设置类别" -#: part/templates/part/category.html:164 +#: part/templates/part/category.html:171 msgid "Set Category" msgstr "设置类别" -#: part/templates/part/category.html:168 +#: part/templates/part/category.html:175 msgid "Print Labels" msgstr "打印标签" -#: part/templates/part/category.html:170 +#: part/templates/part/category.html:177 msgid "Export Data" msgstr "导出数据" -#: part/templates/part/category.html:184 +#: part/templates/part/category.html:191 msgid "Part Parameters" msgstr "商品参数" -#: part/templates/part/category.html:261 +#: part/templates/part/category.html:268 msgid "Create Part Category" msgstr "创建商品类别" -#: part/templates/part/category.html:288 +#: part/templates/part/category.html:295 msgid "Create Part" msgstr "创建商品" @@ -4402,7 +4423,7 @@ msgstr "" msgid "Import Parts" msgstr "" -#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:366 +#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:373 msgid "Duplicate Part" msgstr "复制部件" @@ -4426,167 +4447,155 @@ msgstr "" msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)" msgstr "" -#: part/templates/part/detail.html:16 -msgid "Part Details" -msgstr "" - -#: part/templates/part/detail.html:66 -msgid "Minimum stock level" -msgstr "" - -#: part/templates/part/detail.html:97 -msgid "Latest Serial Number" -msgstr "" - -#: part/templates/part/detail.html:124 +#: part/templates/part/detail.html:17 msgid "Part Stock" msgstr "商品库存" -#: part/templates/part/detail.html:136 +#: part/templates/part/detail.html:29 #, python-format msgid "Showing stock for all variants of %(full_name)s" msgstr "" -#: part/templates/part/detail.html:146 +#: part/templates/part/detail.html:39 msgid "Part Test Templates" msgstr "" -#: part/templates/part/detail.html:151 +#: part/templates/part/detail.html:44 msgid "Add Test Template" msgstr "" -#: part/templates/part/detail.html:208 +#: part/templates/part/detail.html:101 msgid "Sales Order Allocations" msgstr "" -#: part/templates/part/detail.html:249 +#: part/templates/part/detail.html:142 msgid "Part Variants" msgstr "" -#: part/templates/part/detail.html:253 +#: part/templates/part/detail.html:146 msgid "Create new variant" msgstr "" -#: part/templates/part/detail.html:254 +#: part/templates/part/detail.html:147 msgid "New Variant" msgstr "" -#: part/templates/part/detail.html:281 +#: part/templates/part/detail.html:174 msgid "Add new parameter" msgstr "" -#: part/templates/part/detail.html:315 part/templates/part/part_sidebar.html:47 +#: part/templates/part/detail.html:208 part/templates/part/part_sidebar.html:45 msgid "Related Parts" msgstr "" -#: part/templates/part/detail.html:319 part/templates/part/detail.html:320 +#: part/templates/part/detail.html:212 part/templates/part/detail.html:213 msgid "Add Related" msgstr "" -#: part/templates/part/detail.html:340 part/templates/part/part_sidebar.html:19 +#: part/templates/part/detail.html:233 part/templates/part/part_sidebar.html:17 msgid "Bill of Materials" msgstr "" -#: part/templates/part/detail.html:345 +#: part/templates/part/detail.html:238 msgid "Export actions" msgstr "" -#: part/templates/part/detail.html:349 +#: part/templates/part/detail.html:242 msgid "Export BOM" msgstr "" -#: part/templates/part/detail.html:351 +#: part/templates/part/detail.html:244 msgid "Print BOM Report" msgstr "" -#: part/templates/part/detail.html:361 +#: part/templates/part/detail.html:254 msgid "Upload BOM" msgstr "" -#: part/templates/part/detail.html:363 templates/js/translated/part.js:267 +#: part/templates/part/detail.html:256 templates/js/translated/part.js:270 msgid "Copy BOM" msgstr "" -#: part/templates/part/detail.html:365 part/views.py:755 +#: part/templates/part/detail.html:258 part/views.py:755 msgid "Validate BOM" msgstr "" -#: part/templates/part/detail.html:370 +#: part/templates/part/detail.html:263 msgid "New BOM Item" msgstr "" -#: part/templates/part/detail.html:371 +#: part/templates/part/detail.html:264 msgid "Add BOM Item" msgstr "" -#: part/templates/part/detail.html:384 +#: part/templates/part/detail.html:277 msgid "Assemblies" msgstr "" -#: part/templates/part/detail.html:401 +#: part/templates/part/detail.html:294 msgid "Part Builds" msgstr "" -#: part/templates/part/detail.html:426 +#: part/templates/part/detail.html:319 msgid "Build Order Allocations" msgstr "" -#: part/templates/part/detail.html:436 +#: part/templates/part/detail.html:329 msgid "Part Suppliers" msgstr "商品供应商" -#: part/templates/part/detail.html:463 +#: part/templates/part/detail.html:356 msgid "Part Manufacturers" msgstr "商品制造商" -#: part/templates/part/detail.html:479 +#: part/templates/part/detail.html:372 msgid "Delete manufacturer parts" msgstr "删除制造商商品" -#: part/templates/part/detail.html:660 +#: part/templates/part/detail.html:553 msgid "Delete selected BOM items?" msgstr "" -#: part/templates/part/detail.html:661 +#: part/templates/part/detail.html:554 msgid "All selected BOM items will be deleted" msgstr "" -#: part/templates/part/detail.html:712 +#: part/templates/part/detail.html:605 msgid "Create BOM Item" msgstr "" -#: part/templates/part/detail.html:764 +#: part/templates/part/detail.html:657 msgid "Related Part" msgstr "" -#: part/templates/part/detail.html:772 +#: part/templates/part/detail.html:665 msgid "Add Related Part" msgstr "" -#: part/templates/part/detail.html:869 +#: part/templates/part/detail.html:760 msgid "Add Test Result Template" msgstr "" -#: part/templates/part/detail.html:926 +#: part/templates/part/detail.html:817 msgid "Edit Part Notes" msgstr "编辑商品注释" -#: part/templates/part/detail.html:1039 +#: part/templates/part/detail.html:930 #, python-format msgid "Purchase Unit Price - %(currency)s" msgstr "" -#: part/templates/part/detail.html:1051 +#: part/templates/part/detail.html:942 #, python-format msgid "Unit Price-Cost Difference - %(currency)s" msgstr "" -#: part/templates/part/detail.html:1063 +#: part/templates/part/detail.html:954 #, python-format msgid "Supplier Unit Cost - %(currency)s" msgstr "" -#: part/templates/part/detail.html:1152 +#: part/templates/part/detail.html:1043 #, python-format msgid "Unit Price - %(currency)s" msgstr "" @@ -4668,86 +4677,108 @@ msgstr "编辑商品" msgid "Delete part" msgstr "删除商品" -#: part/templates/part/part_base.html:109 +#: part/templates/part/part_base.html:112 msgid "Part is a template part (variants can be made from this part)" msgstr "" -#: part/templates/part/part_base.html:113 +#: part/templates/part/part_base.html:116 msgid "Part can be assembled from other parts" msgstr "商品可以由其他部件组装" -#: part/templates/part/part_base.html:117 +#: part/templates/part/part_base.html:120 msgid "Part can be used in assemblies" msgstr "商品可以用于组装成品" -#: part/templates/part/part_base.html:121 +#: part/templates/part/part_base.html:124 msgid "Part stock is tracked by serial number" msgstr "" -#: part/templates/part/part_base.html:125 +#: part/templates/part/part_base.html:128 msgid "Part can be purchased from external suppliers" msgstr "商品可以从外部供应商处购买" -#: part/templates/part/part_base.html:129 +#: part/templates/part/part_base.html:132 msgid "Part can be sold to customers" msgstr "商品可以销售给客户" -#: part/templates/part/part_base.html:135 -#: part/templates/part/part_base.html:143 +#: part/templates/part/part_base.html:138 +#: part/templates/part/part_base.html:146 msgid "Part is virtual (not a physical part)" msgstr "商品是虚拟的(不是实体零件)" -#: part/templates/part/part_base.html:136 +#: part/templates/part/part_base.html:139 #: templates/js/translated/company.js:505 #: templates/js/translated/company.js:762 #: templates/js/translated/model_renderers.js:175 -#: templates/js/translated/part.js:465 templates/js/translated/part.js:542 +#: templates/js/translated/part.js:472 templates/js/translated/part.js:549 msgid "Inactive" msgstr "" -#: part/templates/part/part_base.html:155 +#: part/templates/part/part_base.html:156 +#: part/templates/part/part_base.html:579 +msgid "Show Part Details" +msgstr "" + +#: part/templates/part/part_base.html:173 #, python-format msgid "This part is a variant of %(link)s" msgstr "" -#: part/templates/part/part_base.html:172 templates/js/translated/order.js:1546 +#: part/templates/part/part_base.html:190 templates/js/translated/order.js:1545 #: templates/js/translated/table_filters.js:188 msgid "In Stock" msgstr "" -#: part/templates/part/part_base.html:185 templates/js/translated/part.js:1054 +#: part/templates/part/part_base.html:203 templates/js/translated/part.js:1235 msgid "On Order" msgstr "" -#: part/templates/part/part_base.html:192 templates/InvenTree/index.html:178 +#: part/templates/part/part_base.html:210 templates/InvenTree/index.html:178 msgid "Required for Build Orders" msgstr "" -#: part/templates/part/part_base.html:199 +#: part/templates/part/part_base.html:217 msgid "Required for Sales Orders" msgstr "" -#: part/templates/part/part_base.html:206 +#: part/templates/part/part_base.html:224 msgid "Allocated to Orders" msgstr "" -#: part/templates/part/part_base.html:221 templates/js/translated/bom.js:566 +#: part/templates/part/part_base.html:239 templates/js/translated/bom.js:566 msgid "Can Build" msgstr "" -#: part/templates/part/part_base.html:227 templates/js/translated/part.js:885 -#: templates/js/translated/part.js:1058 +#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1066 +#: templates/js/translated/part.js:1239 msgid "Building" msgstr "" -#: part/templates/part/part_base.html:320 part/templates/part/prices.html:144 +#: part/templates/part/part_base.html:295 +msgid "Minimum stock level" +msgstr "" + +#: part/templates/part/part_base.html:324 +msgid "Latest Serial Number" +msgstr "" + +#: part/templates/part/part_base.html:328 +#: stock/templates/stock/item_base.html:159 +msgid "Search for serial number" +msgstr "" + +#: part/templates/part/part_base.html:449 part/templates/part/prices.html:144 msgid "Calculate" msgstr "" -#: part/templates/part/part_base.html:363 +#: part/templates/part/part_base.html:492 msgid "No matching images found" msgstr "" +#: part/templates/part/part_base.html:573 +msgid "Hide Part Details" +msgstr "" + #: part/templates/part/part_pricing.html:22 part/templates/part/prices.html:21 msgid "Supplier Pricing" msgstr "" @@ -4805,20 +4836,15 @@ msgstr "" msgid "No pricing information is available for this part." msgstr "此商品无价格信息可用。" -#: part/templates/part/part_sidebar.html:8 -#: templates/js/translated/stock.js:1949 -msgid "Details" -msgstr "详情" - -#: part/templates/part/part_sidebar.html:13 +#: part/templates/part/part_sidebar.html:11 msgid "Variants" msgstr "" -#: part/templates/part/part_sidebar.html:27 +#: part/templates/part/part_sidebar.html:25 msgid "Used In" msgstr "" -#: part/templates/part/part_sidebar.html:43 +#: part/templates/part/part_sidebar.html:41 msgid "Test Templates" msgstr "" @@ -4934,8 +4960,8 @@ msgid "Set category for the following parts" msgstr "为以下商品设置类别" #: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:476 -#: templates/js/translated/part.js:429 templates/js/translated/part.js:875 -#: templates/js/translated/part.js:1062 +#: templates/js/translated/part.js:436 templates/js/translated/part.js:1056 +#: templates/js/translated/part.js:1243 msgid "No Stock" msgstr "" @@ -5037,7 +5063,7 @@ msgstr "" msgid "Delete Part Parameter Template" msgstr "" -#: part/views.py:1489 templates/js/translated/part.js:310 +#: part/views.py:1489 templates/js/translated/part.js:313 msgid "Edit Part Category" msgstr "编辑商品类别" @@ -5171,11 +5197,12 @@ msgid "Stock Item Test Report" msgstr "" #: report/templates/report/inventree_test_report_base.html:79 -#: stock/models.py:530 stock/templates/stock/item_base.html:238 +#: stock/models.py:520 stock/templates/stock/item_base.html:149 #: templates/js/translated/build.js:233 templates/js/translated/build.js:637 #: templates/js/translated/build.js:1013 #: templates/js/translated/model_renderers.js:95 -#: templates/js/translated/order.js:1288 templates/js/translated/order.js:1377 +#: templates/js/translated/order.js:1287 templates/js/translated/order.js:1376 +#: templates/js/translated/stock.js:410 msgid "Serial Number" msgstr "序列号" @@ -5184,17 +5211,17 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:93 -#: stock/models.py:1855 +#: stock/models.py:1845 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:94 -#: stock/models.py:1861 +#: stock/models.py:1851 msgid "Result" msgstr "" #: report/templates/report/inventree_test_report_base.html:97 -#: templates/js/translated/order.js:685 templates/js/translated/stock.js:1917 +#: templates/js/translated/order.js:684 templates/js/translated/stock.js:1999 msgid "Date" msgstr "" @@ -5212,7 +5239,7 @@ msgid "Installed Items" msgstr "" #: report/templates/report/inventree_test_report_base.html:137 -#: templates/js/translated/stock.js:2177 +#: templates/js/translated/stock.js:2259 msgid "Serial" msgstr "" @@ -5220,9 +5247,9 @@ msgstr "" msgid "Quantity is required" msgstr "" -#: stock/forms.py:91 stock/forms.py:265 stock/models.py:587 -#: stock/templates/stock/item_base.html:382 -#: templates/js/translated/stock.js:1276 +#: stock/forms.py:91 stock/forms.py:265 stock/models.py:577 +#: stock/templates/stock/item_base.html:186 +#: templates/js/translated/stock.js:1358 msgid "Expiry Date" msgstr "" @@ -5270,241 +5297,241 @@ msgstr "" msgid "Confirm removal of installed stock items" msgstr "" -#: stock/models.py:60 stock/models.py:624 -#: stock/templates/stock/item_base.html:422 +#: stock/models.py:60 stock/models.py:614 +#: stock/templates/stock/item_base.html:417 msgid "Owner" msgstr "" -#: stock/models.py:61 stock/models.py:625 +#: stock/models.py:61 stock/models.py:615 msgid "Select Owner" msgstr "" -#: stock/models.py:352 +#: stock/models.py:342 msgid "StockItem with this serial number already exists" msgstr "" -#: stock/models.py:388 +#: stock/models.py:378 #, python-brace-format msgid "Part type ('{pf}') must be {pe}" msgstr "商品类型 ('{pf}') 必须是 {pe}" -#: stock/models.py:398 stock/models.py:407 +#: stock/models.py:388 stock/models.py:397 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:399 +#: stock/models.py:389 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:421 +#: stock/models.py:411 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:427 +#: stock/models.py:417 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:434 +#: stock/models.py:424 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:476 +#: stock/models.py:466 msgid "Parent Stock Item" msgstr "" -#: stock/models.py:485 +#: stock/models.py:475 msgid "Base part" msgstr "" -#: stock/models.py:493 +#: stock/models.py:483 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:498 stock/templates/stock/location.html:12 +#: stock/models.py:488 stock/templates/stock/location.html:12 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" msgstr "仓储地点" -#: stock/models.py:501 +#: stock/models.py:491 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:508 +#: stock/models.py:498 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:513 stock/templates/stock/item_base.html:271 +#: stock/models.py:503 stock/templates/stock/item_base.html:299 msgid "Installed In" msgstr "" -#: stock/models.py:516 +#: stock/models.py:506 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:532 +#: stock/models.py:522 msgid "Serial number for this item" msgstr "" -#: stock/models.py:546 +#: stock/models.py:536 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:550 +#: stock/models.py:540 msgid "Stock Quantity" msgstr "" -#: stock/models.py:559 +#: stock/models.py:549 msgid "Source Build" msgstr "" -#: stock/models.py:561 +#: stock/models.py:551 msgid "Build for this stock item" msgstr "" -#: stock/models.py:572 +#: stock/models.py:562 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:575 +#: stock/models.py:565 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:581 +#: stock/models.py:571 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:588 +#: stock/models.py:578 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:601 +#: stock/models.py:591 msgid "Delete on deplete" msgstr "" -#: stock/models.py:601 +#: stock/models.py:591 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:611 stock/templates/stock/item.html:111 +#: stock/models.py:601 stock/templates/stock/item.html:111 msgid "Stock Item Notes" msgstr "" -#: stock/models.py:620 +#: stock/models.py:610 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:630 +#: stock/models.py:620 msgid "Scheduled for deletion" msgstr "" -#: stock/models.py:631 +#: stock/models.py:621 msgid "This StockItem will be deleted by the background worker" msgstr "" -#: stock/models.py:1094 +#: stock/models.py:1084 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1100 +#: stock/models.py:1090 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1106 +#: stock/models.py:1096 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({n})" msgstr "" -#: stock/models.py:1109 +#: stock/models.py:1099 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1112 +#: stock/models.py:1102 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1119 +#: stock/models.py:1109 #, python-brace-format msgid "Serial numbers already exist: {exists}" msgstr "" -#: stock/models.py:1277 +#: stock/models.py:1267 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:1775 +#: stock/models.py:1765 msgid "Entry notes" msgstr "" -#: stock/models.py:1832 +#: stock/models.py:1822 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:1838 +#: stock/models.py:1828 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:1856 +#: stock/models.py:1846 msgid "Test name" msgstr "" -#: stock/models.py:1862 templates/js/translated/table_filters.js:266 +#: stock/models.py:1852 templates/js/translated/table_filters.js:266 msgid "Test result" msgstr "" -#: stock/models.py:1868 +#: stock/models.py:1858 msgid "Test output value" msgstr "" -#: stock/models.py:1875 +#: stock/models.py:1865 msgid "Test result attachment" msgstr "" -#: stock/models.py:1881 +#: stock/models.py:1871 msgid "Test notes" msgstr "" -#: stock/serializers.py:166 +#: stock/serializers.py:171 msgid "Purchase price of this stock item" msgstr "" -#: stock/serializers.py:173 +#: stock/serializers.py:178 msgid "Purchase currency of this stock item" msgstr "" -#: stock/serializers.py:287 +#: stock/serializers.py:292 msgid "Enter number of stock items to serialize" msgstr "" -#: stock/serializers.py:302 +#: stock/serializers.py:307 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "" -#: stock/serializers.py:308 +#: stock/serializers.py:313 msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:319 stock/serializers.py:686 +#: stock/serializers.py:324 stock/serializers.py:691 msgid "Destination stock location" msgstr "" -#: stock/serializers.py:326 +#: stock/serializers.py:331 msgid "Optional note field" msgstr "" -#: stock/serializers.py:339 +#: stock/serializers.py:344 msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:556 +#: stock/serializers.py:561 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:584 +#: stock/serializers.py:589 msgid "Stock transaction notes" msgstr "" -#: stock/serializers.py:594 +#: stock/serializers.py:599 msgid "A list of stock items must be provided" msgstr "" @@ -5629,125 +5656,131 @@ msgstr "" msgid "Install" msgstr "" -#: stock/templates/stock/item_base.html:106 +#: stock/templates/stock/item_base.html:108 msgid "Convert to variant" msgstr "" -#: stock/templates/stock/item_base.html:109 +#: stock/templates/stock/item_base.html:111 msgid "Duplicate stock item" msgstr "" -#: stock/templates/stock/item_base.html:111 +#: stock/templates/stock/item_base.html:113 msgid "Edit stock item" msgstr "" -#: stock/templates/stock/item_base.html:114 +#: stock/templates/stock/item_base.html:116 msgid "Delete stock item" msgstr "" -#: stock/templates/stock/item_base.html:136 -#: stock/templates/stock/item_base.html:386 -#: templates/js/translated/table_filters.js:247 -msgid "Expired" +#: stock/templates/stock/item_base.html:154 +msgid "previous page" msgstr "" -#: stock/templates/stock/item_base.html:146 -#: stock/templates/stock/item_base.html:388 -#: templates/js/translated/table_filters.js:253 -msgid "Stale" +#: stock/templates/stock/item_base.html:154 +msgid "Navigate to previous serial number" msgstr "" -#: stock/templates/stock/item_base.html:161 -msgid "You are not in the list of owners of this item. This stock item cannot be edited." +#: stock/templates/stock/item_base.html:163 +msgid "next page" msgstr "" -#: stock/templates/stock/item_base.html:168 -msgid "This stock item is in production and cannot be edited." -msgstr "此库存项目正在生产中,无法编辑。" - -#: stock/templates/stock/item_base.html:169 -msgid "Edit the stock item from the build view." -msgstr "" - -#: stock/templates/stock/item_base.html:182 -msgid "This stock item has not passed all required tests" +#: stock/templates/stock/item_base.html:163 +msgid "Navigate to next serial number" msgstr "" #: stock/templates/stock/item_base.html:190 #, python-format -msgid "This stock item is allocated to Sales Order %(link)s (Quantity: %(qty)s)" -msgstr "" - -#: stock/templates/stock/item_base.html:198 -#, python-format -msgid "This stock item is allocated to Build %(link)s (Quantity: %(qty)s)" -msgstr "" - -#: stock/templates/stock/item_base.html:204 -msgid "This stock item is serialized - it has a unique serial number and the quantity cannot be adjusted." -msgstr "" - -#: stock/templates/stock/item_base.html:208 -msgid "This stock item cannot be deleted as it has child items" -msgstr "" - -#: stock/templates/stock/item_base.html:212 -msgid "This stock item will be automatically deleted when all stock is depleted." -msgstr "" - -#: stock/templates/stock/item_base.html:241 -msgid "previous page" -msgstr "" - -#: stock/templates/stock/item_base.html:247 -msgid "next page" -msgstr "" - -#: stock/templates/stock/item_base.html:290 -#: templates/js/translated/build.js:1035 -msgid "No location set" -msgstr "未设置仓储地点" - -#: stock/templates/stock/item_base.html:297 -msgid "Barcode Identifier" -msgstr "" - -#: stock/templates/stock/item_base.html:339 -msgid "Parent Item" -msgstr "" - -#: stock/templates/stock/item_base.html:357 -msgid "No manufacturer set" -msgstr "" - -#: stock/templates/stock/item_base.html:386 -#, python-format msgid "This StockItem expired on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:388 +#: stock/templates/stock/item_base.html:190 +#: templates/js/translated/table_filters.js:247 +msgid "Expired" +msgstr "" + +#: stock/templates/stock/item_base.html:192 #, python-format msgid "This StockItem expires on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:395 -#: templates/js/translated/stock.js:1289 +#: stock/templates/stock/item_base.html:192 +#: templates/js/translated/table_filters.js:253 +msgid "Stale" +msgstr "" + +#: stock/templates/stock/item_base.html:199 +#: templates/js/translated/stock.js:1371 msgid "Last Updated" msgstr "" -#: stock/templates/stock/item_base.html:400 +#: stock/templates/stock/item_base.html:204 msgid "Last Stocktake" msgstr "" -#: stock/templates/stock/item_base.html:404 +#: stock/templates/stock/item_base.html:208 msgid "No stocktake performed" msgstr "" -#: stock/templates/stock/item_base.html:415 +#: stock/templates/stock/item_base.html:226 +msgid "You are not in the list of owners of this item. This stock item cannot be edited." +msgstr "" + +#: stock/templates/stock/item_base.html:233 +msgid "This stock item is in production and cannot be edited." +msgstr "此库存项目正在生产中,无法编辑。" + +#: stock/templates/stock/item_base.html:234 +msgid "Edit the stock item from the build view." +msgstr "" + +#: stock/templates/stock/item_base.html:247 +msgid "This stock item has not passed all required tests" +msgstr "" + +#: stock/templates/stock/item_base.html:255 +#, python-format +msgid "This stock item is allocated to Sales Order %(link)s (Quantity: %(qty)s)" +msgstr "" + +#: stock/templates/stock/item_base.html:263 +#, python-format +msgid "This stock item is allocated to Build %(link)s (Quantity: %(qty)s)" +msgstr "" + +#: stock/templates/stock/item_base.html:269 +msgid "This stock item is serialized - it has a unique serial number and the quantity cannot be adjusted." +msgstr "" + +#: stock/templates/stock/item_base.html:273 +msgid "This stock item cannot be deleted as it has child items" +msgstr "" + +#: stock/templates/stock/item_base.html:277 +msgid "This stock item will be automatically deleted when all stock is depleted." +msgstr "" + +#: stock/templates/stock/item_base.html:318 +#: templates/js/translated/build.js:1035 +msgid "No location set" +msgstr "未设置仓储地点" + +#: stock/templates/stock/item_base.html:325 +msgid "Barcode Identifier" +msgstr "" + +#: stock/templates/stock/item_base.html:367 +msgid "Parent Item" +msgstr "" + +#: stock/templates/stock/item_base.html:385 +msgid "No manufacturer set" +msgstr "" + +#: stock/templates/stock/item_base.html:410 msgid "Tests" msgstr "" -#: stock/templates/stock/item_base.html:505 +#: stock/templates/stock/item_base.html:500 msgid "Edit Stock Status" msgstr "" @@ -5825,30 +5858,35 @@ msgstr "新建仓储地点" msgid "New Location" msgstr "新建仓储地点" -#: stock/templates/stock/location.html:86 +#: stock/templates/stock/location.html:95 +#: stock/templates/stock/location.html:101 +msgid "Location Path" +msgstr "" + +#: stock/templates/stock/location.html:102 msgid "Top level stock location" msgstr "" -#: stock/templates/stock/location.html:95 +#: stock/templates/stock/location.html:115 msgid "You are not in the list of owners of this location. This stock location cannot be edited." msgstr "您不在此仓储地的所有者列表中,无法编辑此仓储地。" -#: stock/templates/stock/location.html:113 -#: stock/templates/stock/location.html:160 +#: stock/templates/stock/location.html:128 +#: stock/templates/stock/location.html:175 #: stock/templates/stock/location_sidebar.html:5 msgid "Sublocations" msgstr "" -#: stock/templates/stock/location.html:127 templates/InvenTree/search.html:170 +#: stock/templates/stock/location.html:142 templates/InvenTree/search.html:170 #: templates/stats.html:97 users/models.py:42 msgid "Stock Locations" msgstr "仓储地点" -#: stock/templates/stock/location.html:167 templates/stock_table.html:30 +#: stock/templates/stock/location.html:182 templates/stock_table.html:30 msgid "Printing Actions" msgstr "打印操作" -#: stock/templates/stock/location.html:171 templates/stock_table.html:34 +#: stock/templates/stock/location.html:186 templates/stock_table.html:34 msgid "Print labels" msgstr "打印标签" @@ -5942,7 +5980,7 @@ msgstr "" msgid "Uninstall Stock Items" msgstr "" -#: stock/views.py:760 templates/js/translated/stock.js:648 +#: stock/views.py:760 templates/js/translated/stock.js:730 msgid "Confirm stock adjustment" msgstr "" @@ -5950,7 +5988,7 @@ msgstr "" msgid "Uninstalled stock items" msgstr "" -#: stock/views.py:793 templates/js/translated/stock.js:318 +#: stock/views.py:793 templates/js/translated/stock.js:319 msgid "Edit Stock Item" msgstr "" @@ -5962,7 +6000,7 @@ msgstr "新建仓储地点" msgid "Create new Stock Item" msgstr "" -#: stock/views.py:1186 templates/js/translated/stock.js:298 +#: stock/views.py:1186 templates/js/translated/stock.js:299 msgid "Duplicate Stock Item" msgstr "" @@ -6868,7 +6906,7 @@ msgstr "" msgid "Unlink" msgstr "" -#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:600 +#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:682 msgid "Remove stock item" msgstr "" @@ -6963,7 +7001,7 @@ msgid "View BOM" msgstr "" #: templates/js/translated/bom.js:608 templates/js/translated/build.js:1183 -#: templates/js/translated/order.js:1320 +#: templates/js/translated/order.js:1319 msgid "Actions" msgstr "" @@ -7055,7 +7093,7 @@ msgstr "" msgid "No build order allocations found" msgstr "" -#: templates/js/translated/build.js:424 templates/js/translated/order.js:1194 +#: templates/js/translated/build.js:424 templates/js/translated/order.js:1193 msgid "Location not specified" msgstr "未指定仓储地点" @@ -7064,12 +7102,12 @@ msgid "No active build outputs found" msgstr "" #: templates/js/translated/build.js:1052 templates/js/translated/build.js:1760 -#: templates/js/translated/order.js:1327 +#: templates/js/translated/order.js:1326 msgid "Edit stock allocation" msgstr "" #: templates/js/translated/build.js:1054 templates/js/translated/build.js:1761 -#: templates/js/translated/order.js:1328 +#: templates/js/translated/order.js:1327 msgid "Delete stock allocation" msgstr "" @@ -7090,11 +7128,11 @@ msgid "Quantity Per" msgstr "" #: templates/js/translated/build.js:1134 templates/js/translated/build.js:1360 -#: templates/js/translated/build.js:1756 templates/js/translated/order.js:1557 +#: templates/js/translated/build.js:1756 templates/js/translated/order.js:1556 msgid "Allocated" msgstr "" -#: templates/js/translated/build.js:1190 templates/js/translated/order.js:1611 +#: templates/js/translated/build.js:1190 templates/js/translated/order.js:1610 msgid "Build stock" msgstr "" @@ -7102,7 +7140,7 @@ msgstr "" msgid "Order stock" msgstr "" -#: templates/js/translated/build.js:1197 templates/js/translated/order.js:1604 +#: templates/js/translated/build.js:1197 templates/js/translated/order.js:1603 msgid "Allocate stock" msgstr "" @@ -7143,9 +7181,9 @@ msgstr "" msgid "No builds matching query" msgstr "" -#: templates/js/translated/build.js:1593 templates/js/translated/part.js:966 -#: templates/js/translated/part.js:1377 templates/js/translated/stock.js:1094 -#: templates/js/translated/stock.js:1871 +#: templates/js/translated/build.js:1593 templates/js/translated/part.js:1147 +#: templates/js/translated/part.js:1558 templates/js/translated/stock.js:1176 +#: templates/js/translated/stock.js:1953 msgid "Select" msgstr "" @@ -7153,7 +7191,7 @@ msgstr "" msgid "Build order is overdue" msgstr "" -#: templates/js/translated/build.js:1674 templates/js/translated/stock.js:2090 +#: templates/js/translated/build.js:1674 templates/js/translated/stock.js:2172 msgid "No user information" msgstr "没有用户信息" @@ -7197,10 +7235,6 @@ msgstr "编辑供应商商品" msgid "Delete Supplier Part" msgstr "删除供应商商品" -#: templates/js/translated/company.js:265 -msgid "Edit Company" -msgstr "编辑公司信息" - #: templates/js/translated/company.js:286 msgid "Add new Company" msgstr "增加新的公司信息" @@ -7230,34 +7264,34 @@ msgid "No manufacturer parts found" msgstr "" #: templates/js/translated/company.js:497 -#: templates/js/translated/company.js:754 templates/js/translated/part.js:449 -#: templates/js/translated/part.js:534 +#: templates/js/translated/company.js:754 templates/js/translated/part.js:456 +#: templates/js/translated/part.js:541 msgid "Template part" msgstr "" #: templates/js/translated/company.js:501 -#: templates/js/translated/company.js:758 templates/js/translated/part.js:453 -#: templates/js/translated/part.js:538 +#: templates/js/translated/company.js:758 templates/js/translated/part.js:460 +#: templates/js/translated/part.js:545 msgid "Assembled part" msgstr "" -#: templates/js/translated/company.js:628 templates/js/translated/part.js:626 +#: templates/js/translated/company.js:628 templates/js/translated/part.js:633 msgid "No parameters found" msgstr "无指定参数" -#: templates/js/translated/company.js:665 templates/js/translated/part.js:668 +#: templates/js/translated/company.js:665 templates/js/translated/part.js:675 msgid "Edit parameter" msgstr "编辑参数" -#: templates/js/translated/company.js:666 templates/js/translated/part.js:669 +#: templates/js/translated/company.js:666 templates/js/translated/part.js:676 msgid "Delete parameter" msgstr "删除参数" -#: templates/js/translated/company.js:685 templates/js/translated/part.js:686 +#: templates/js/translated/company.js:685 templates/js/translated/part.js:693 msgid "Edit Parameter" msgstr "编辑参数" -#: templates/js/translated/company.js:696 templates/js/translated/part.js:698 +#: templates/js/translated/company.js:696 templates/js/translated/part.js:705 msgid "Delete Parameter" msgstr "删除参数" @@ -7346,7 +7380,7 @@ msgid "NO" msgstr "" #: templates/js/translated/label.js:29 templates/js/translated/report.js:118 -#: templates/js/translated/stock.js:624 +#: templates/js/translated/stock.js:706 msgid "Select Stock Items" msgstr "选择库存项" @@ -7502,11 +7536,11 @@ msgstr "" msgid "Export Order" msgstr "" -#: templates/js/translated/order.js:211 templates/js/translated/stock.js:423 +#: templates/js/translated/order.js:211 templates/js/translated/stock.js:505 msgid "Format" msgstr "" -#: templates/js/translated/order.js:212 templates/js/translated/stock.js:424 +#: templates/js/translated/order.js:212 templates/js/translated/stock.js:506 msgid "Select file format" msgstr "" @@ -7522,7 +7556,7 @@ msgstr "" msgid "Quantity to receive" msgstr "" -#: templates/js/translated/order.js:360 templates/js/translated/stock.js:1673 +#: templates/js/translated/order.js:360 templates/js/translated/stock.js:1755 msgid "Stock Status" msgstr "" @@ -7546,321 +7580,321 @@ msgstr "" msgid "Receive Purchase Order Items" msgstr "" -#: templates/js/translated/order.js:627 +#: templates/js/translated/order.js:627 templates/js/translated/part.js:746 msgid "No purchase orders found" msgstr "" -#: templates/js/translated/order.js:652 templates/js/translated/order.js:1063 +#: templates/js/translated/order.js:659 templates/js/translated/order.js:1062 msgid "Order is overdue" msgstr "" -#: templates/js/translated/order.js:772 templates/js/translated/order.js:1646 +#: templates/js/translated/order.js:771 templates/js/translated/order.js:1645 msgid "Edit Line Item" msgstr "" -#: templates/js/translated/order.js:784 templates/js/translated/order.js:1657 +#: templates/js/translated/order.js:783 templates/js/translated/order.js:1656 msgid "Delete Line Item" msgstr "" -#: templates/js/translated/order.js:823 +#: templates/js/translated/order.js:822 msgid "No line items found" msgstr "" -#: templates/js/translated/order.js:850 templates/js/translated/order.js:1467 +#: templates/js/translated/order.js:849 templates/js/translated/order.js:1466 msgid "Total" msgstr "" -#: templates/js/translated/order.js:904 templates/js/translated/order.js:1492 -#: templates/js/translated/part.js:1594 templates/js/translated/part.js:1805 +#: templates/js/translated/order.js:903 templates/js/translated/order.js:1491 +#: templates/js/translated/part.js:1775 templates/js/translated/part.js:1986 msgid "Unit Price" msgstr "单价" -#: templates/js/translated/order.js:919 templates/js/translated/order.js:1508 +#: templates/js/translated/order.js:918 templates/js/translated/order.js:1507 msgid "Total Price" msgstr "" -#: templates/js/translated/order.js:997 templates/js/translated/order.js:1617 +#: templates/js/translated/order.js:996 templates/js/translated/order.js:1616 msgid "Edit line item" msgstr "" -#: templates/js/translated/order.js:998 +#: templates/js/translated/order.js:997 msgid "Delete line item" msgstr "" -#: templates/js/translated/order.js:1002 +#: templates/js/translated/order.js:1001 templates/js/translated/part.js:878 msgid "Receive line item" msgstr "" -#: templates/js/translated/order.js:1039 +#: templates/js/translated/order.js:1038 msgid "No sales orders found" msgstr "" -#: templates/js/translated/order.js:1077 +#: templates/js/translated/order.js:1076 msgid "Invalid Customer" msgstr "" -#: templates/js/translated/order.js:1155 +#: templates/js/translated/order.js:1154 msgid "No sales order allocations found" msgstr "" -#: templates/js/translated/order.js:1248 +#: templates/js/translated/order.js:1247 msgid "Edit Stock Allocation" msgstr "" -#: templates/js/translated/order.js:1265 +#: templates/js/translated/order.js:1264 msgid "Confirm Delete Operation" msgstr "确认删除操作" -#: templates/js/translated/order.js:1266 +#: templates/js/translated/order.js:1265 msgid "Delete Stock Allocation" msgstr "" -#: templates/js/translated/order.js:1308 +#: templates/js/translated/order.js:1307 msgid "Stock location not specified" msgstr "" -#: templates/js/translated/order.js:1557 +#: templates/js/translated/order.js:1556 msgid "Fulfilled" msgstr "" -#: templates/js/translated/order.js:1601 +#: templates/js/translated/order.js:1600 msgid "Allocate serial numbers" msgstr "" -#: templates/js/translated/order.js:1607 +#: templates/js/translated/order.js:1606 msgid "Purchase stock" msgstr "" -#: templates/js/translated/order.js:1614 templates/js/translated/order.js:1793 +#: templates/js/translated/order.js:1613 templates/js/translated/order.js:1792 msgid "Calculate price" msgstr "" -#: templates/js/translated/order.js:1618 +#: templates/js/translated/order.js:1617 msgid "Delete line item " msgstr "" -#: templates/js/translated/order.js:1741 +#: templates/js/translated/order.js:1740 msgid "Allocate Stock Item" msgstr "" -#: templates/js/translated/order.js:1801 +#: templates/js/translated/order.js:1800 msgid "Update Unit Price" msgstr "" -#: templates/js/translated/order.js:1815 +#: templates/js/translated/order.js:1814 msgid "No matching line items" msgstr "" -#: templates/js/translated/part.js:51 +#: templates/js/translated/part.js:52 msgid "Part Attributes" msgstr "商品属性" -#: templates/js/translated/part.js:55 +#: templates/js/translated/part.js:56 msgid "Part Creation Options" msgstr "商品创建选项" -#: templates/js/translated/part.js:59 +#: templates/js/translated/part.js:60 msgid "Part Duplication Options" msgstr "商品重复选项" -#: templates/js/translated/part.js:63 +#: templates/js/translated/part.js:64 msgid "Supplier Options" msgstr "" -#: templates/js/translated/part.js:77 +#: templates/js/translated/part.js:78 msgid "Add Part Category" msgstr "增加商品类别" -#: templates/js/translated/part.js:166 +#: templates/js/translated/part.js:162 msgid "Create Initial Stock" msgstr "" -#: templates/js/translated/part.js:167 +#: templates/js/translated/part.js:163 msgid "Create an initial stock item for this part" msgstr "" -#: templates/js/translated/part.js:174 +#: templates/js/translated/part.js:170 msgid "Initial Stock Quantity" msgstr "" -#: templates/js/translated/part.js:175 +#: templates/js/translated/part.js:171 msgid "Specify initial stock quantity for this part" msgstr "" -#: templates/js/translated/part.js:182 +#: templates/js/translated/part.js:178 msgid "Select destination stock location" msgstr "" -#: templates/js/translated/part.js:193 +#: templates/js/translated/part.js:196 msgid "Copy Category Parameters" msgstr "复制类别参数" -#: templates/js/translated/part.js:194 +#: templates/js/translated/part.js:197 msgid "Copy parameter templates from selected part category" msgstr "" -#: templates/js/translated/part.js:202 +#: templates/js/translated/part.js:205 msgid "Add Supplier Data" msgstr "" -#: templates/js/translated/part.js:203 +#: templates/js/translated/part.js:206 msgid "Create initial supplier data for this part" msgstr "" -#: templates/js/translated/part.js:259 +#: templates/js/translated/part.js:262 msgid "Copy Image" msgstr "" -#: templates/js/translated/part.js:260 +#: templates/js/translated/part.js:263 msgid "Copy image from original part" msgstr "" -#: templates/js/translated/part.js:268 +#: templates/js/translated/part.js:271 msgid "Copy bill of materials from original part" msgstr "" -#: templates/js/translated/part.js:275 +#: templates/js/translated/part.js:278 msgid "Copy Parameters" msgstr "" -#: templates/js/translated/part.js:276 +#: templates/js/translated/part.js:279 msgid "Copy parameter data from original part" msgstr "" -#: templates/js/translated/part.js:289 +#: templates/js/translated/part.js:292 msgid "Parent part category" msgstr "" -#: templates/js/translated/part.js:333 +#: templates/js/translated/part.js:336 msgid "Edit Part" msgstr "编辑商品" -#: templates/js/translated/part.js:335 +#: templates/js/translated/part.js:338 msgid "Part edited" msgstr "" -#: templates/js/translated/part.js:403 +#: templates/js/translated/part.js:410 msgid "You are subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:405 +#: templates/js/translated/part.js:412 msgid "You have subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:410 +#: templates/js/translated/part.js:417 msgid "Subscribe to notifications for this item" msgstr "" -#: templates/js/translated/part.js:412 +#: templates/js/translated/part.js:419 msgid "You have unsubscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:441 templates/js/translated/part.js:526 +#: templates/js/translated/part.js:448 templates/js/translated/part.js:533 msgid "Trackable part" msgstr "可追溯商品" -#: templates/js/translated/part.js:445 templates/js/translated/part.js:530 +#: templates/js/translated/part.js:452 templates/js/translated/part.js:537 msgid "Virtual part" msgstr "虚拟商品" -#: templates/js/translated/part.js:457 +#: templates/js/translated/part.js:464 msgid "Subscribed part" msgstr "" -#: templates/js/translated/part.js:461 +#: templates/js/translated/part.js:468 msgid "Salable part" msgstr "可销售商品" -#: templates/js/translated/part.js:576 +#: templates/js/translated/part.js:583 msgid "No variants found" msgstr "" -#: templates/js/translated/part.js:765 +#: templates/js/translated/part.js:946 msgid "Delete part relationship" msgstr "" -#: templates/js/translated/part.js:789 +#: templates/js/translated/part.js:970 msgid "Delete Part Relationship" msgstr "" -#: templates/js/translated/part.js:856 templates/js/translated/part.js:1116 +#: templates/js/translated/part.js:1037 templates/js/translated/part.js:1297 msgid "No parts found" msgstr "" -#: templates/js/translated/part.js:1026 +#: templates/js/translated/part.js:1207 msgid "No category" msgstr "没有分类" -#: templates/js/translated/part.js:1049 +#: templates/js/translated/part.js:1230 #: templates/js/translated/table_filters.js:381 msgid "Low stock" msgstr "" -#: templates/js/translated/part.js:1140 templates/js/translated/part.js:1312 -#: templates/js/translated/stock.js:1832 +#: templates/js/translated/part.js:1321 templates/js/translated/part.js:1493 +#: templates/js/translated/stock.js:1914 msgid "Display as list" msgstr "" -#: templates/js/translated/part.js:1156 +#: templates/js/translated/part.js:1337 msgid "Display as grid" msgstr "" -#: templates/js/translated/part.js:1331 templates/js/translated/stock.js:1851 +#: templates/js/translated/part.js:1512 templates/js/translated/stock.js:1933 msgid "Display as tree" msgstr "" -#: templates/js/translated/part.js:1395 +#: templates/js/translated/part.js:1576 msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:1409 templates/js/translated/stock.js:1895 +#: templates/js/translated/part.js:1590 templates/js/translated/stock.js:1977 msgid "Path" msgstr "" -#: templates/js/translated/part.js:1453 +#: templates/js/translated/part.js:1634 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:1504 templates/js/translated/stock.js:816 +#: templates/js/translated/part.js:1685 templates/js/translated/stock.js:898 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:1505 templates/js/translated/stock.js:817 +#: templates/js/translated/part.js:1686 templates/js/translated/stock.js:899 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:1511 +#: templates/js/translated/part.js:1692 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:1533 +#: templates/js/translated/part.js:1714 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:1547 +#: templates/js/translated/part.js:1728 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:1572 +#: templates/js/translated/part.js:1753 #, python-brace-format msgid "No ${human_name} information found" msgstr "" -#: templates/js/translated/part.js:1627 +#: templates/js/translated/part.js:1808 #, python-brace-format msgid "Edit ${human_name}" msgstr "" -#: templates/js/translated/part.js:1628 +#: templates/js/translated/part.js:1809 #, python-brace-format msgid "Delete ${human_name}" msgstr "" -#: templates/js/translated/part.js:1729 +#: templates/js/translated/part.js:1910 msgid "Single Price" msgstr "" -#: templates/js/translated/part.js:1748 +#: templates/js/translated/part.js:1929 msgid "Single Price Difference" msgstr "" @@ -7930,276 +7964,300 @@ msgstr "" msgid "Sales Order(s) must be selected before printing report" msgstr "" -#: templates/js/translated/stock.js:70 +#: templates/js/translated/stock.js:71 msgid "Serialize Stock Item" msgstr "" -#: templates/js/translated/stock.js:88 templates/js/translated/stock.js:167 +#: templates/js/translated/stock.js:89 templates/js/translated/stock.js:168 msgid "Next available serial number" msgstr "" -#: templates/js/translated/stock.js:90 templates/js/translated/stock.js:169 +#: templates/js/translated/stock.js:91 templates/js/translated/stock.js:170 msgid "Latest serial number" msgstr "" -#: templates/js/translated/stock.js:104 +#: templates/js/translated/stock.js:105 msgid "Parent stock location" msgstr "" -#: templates/js/translated/stock.js:140 +#: templates/js/translated/stock.js:141 msgid "New Stock Location" msgstr "" -#: templates/js/translated/stock.js:180 +#: templates/js/translated/stock.js:181 msgid "This part cannot be serialized" msgstr "" -#: templates/js/translated/stock.js:219 +#: templates/js/translated/stock.js:220 msgid "Enter initial quantity for this stock item" msgstr "" -#: templates/js/translated/stock.js:225 +#: templates/js/translated/stock.js:226 msgid "Enter serial numbers for new stock (or leave blank)" msgstr "" -#: templates/js/translated/stock.js:368 +#: templates/js/translated/stock.js:369 msgid "Created new stock item" msgstr "" -#: templates/js/translated/stock.js:381 +#: templates/js/translated/stock.js:382 msgid "Created multiple stock items" msgstr "" -#: templates/js/translated/stock.js:420 +#: templates/js/translated/stock.js:407 +msgid "Find Serial Number" +msgstr "" + +#: templates/js/translated/stock.js:411 templates/js/translated/stock.js:412 +msgid "Enter serial number" +msgstr "" + +#: templates/js/translated/stock.js:428 +msgid "Enter a serial number" +msgstr "" + +#: templates/js/translated/stock.js:448 +msgid "No matching serial number" +msgstr "" + +#: templates/js/translated/stock.js:457 +msgid "More than one matching result found" +msgstr "" + +#: templates/js/translated/stock.js:502 msgid "Export Stock" msgstr "" -#: templates/js/translated/stock.js:431 +#: templates/js/translated/stock.js:513 msgid "Include Sublocations" msgstr "" -#: templates/js/translated/stock.js:432 +#: templates/js/translated/stock.js:514 msgid "Include stock items in sublocations" msgstr "" -#: templates/js/translated/stock.js:474 +#: templates/js/translated/stock.js:556 msgid "Transfer Stock" msgstr "" -#: templates/js/translated/stock.js:475 +#: templates/js/translated/stock.js:557 msgid "Move" msgstr "" -#: templates/js/translated/stock.js:481 +#: templates/js/translated/stock.js:563 msgid "Count Stock" msgstr "" -#: templates/js/translated/stock.js:482 +#: templates/js/translated/stock.js:564 msgid "Count" msgstr "" -#: templates/js/translated/stock.js:486 +#: templates/js/translated/stock.js:568 msgid "Remove Stock" msgstr "" -#: templates/js/translated/stock.js:487 +#: templates/js/translated/stock.js:569 msgid "Take" msgstr "" -#: templates/js/translated/stock.js:491 +#: templates/js/translated/stock.js:573 msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:492 users/models.py:200 +#: templates/js/translated/stock.js:574 users/models.py:200 msgid "Add" msgstr "添加" -#: templates/js/translated/stock.js:496 templates/stock_table.html:56 +#: templates/js/translated/stock.js:578 templates/stock_table.html:56 msgid "Delete Stock" msgstr "" -#: templates/js/translated/stock.js:585 +#: templates/js/translated/stock.js:667 msgid "Quantity cannot be adjusted for serialized stock" msgstr "" -#: templates/js/translated/stock.js:585 +#: templates/js/translated/stock.js:667 msgid "Specify stock quantity" msgstr "" -#: templates/js/translated/stock.js:625 +#: templates/js/translated/stock.js:707 msgid "You must select at least one available stock item" msgstr "" -#: templates/js/translated/stock.js:783 +#: templates/js/translated/stock.js:865 msgid "PASS" msgstr "" -#: templates/js/translated/stock.js:785 +#: templates/js/translated/stock.js:867 msgid "FAIL" msgstr "" -#: templates/js/translated/stock.js:790 +#: templates/js/translated/stock.js:872 msgid "NO RESULT" msgstr "" -#: templates/js/translated/stock.js:812 +#: templates/js/translated/stock.js:894 msgid "Add test result" msgstr "" -#: templates/js/translated/stock.js:838 +#: templates/js/translated/stock.js:920 msgid "No test results found" msgstr "" -#: templates/js/translated/stock.js:895 +#: templates/js/translated/stock.js:977 msgid "Test Date" msgstr "" -#: templates/js/translated/stock.js:1002 +#: templates/js/translated/stock.js:1084 msgid "In production" msgstr "正在生产" -#: templates/js/translated/stock.js:1006 +#: templates/js/translated/stock.js:1088 msgid "Installed in Stock Item" msgstr "" -#: templates/js/translated/stock.js:1010 +#: templates/js/translated/stock.js:1092 msgid "Shipped to customer" msgstr "" -#: templates/js/translated/stock.js:1014 +#: templates/js/translated/stock.js:1096 msgid "Assigned to Sales Order" msgstr "" -#: templates/js/translated/stock.js:1020 +#: templates/js/translated/stock.js:1102 msgid "No stock location set" msgstr "未设置仓储地点" -#: templates/js/translated/stock.js:1178 +#: templates/js/translated/stock.js:1260 msgid "Stock item is in production" msgstr "库存品正在生产" -#: templates/js/translated/stock.js:1183 +#: templates/js/translated/stock.js:1265 msgid "Stock item assigned to sales order" msgstr "" -#: templates/js/translated/stock.js:1186 +#: templates/js/translated/stock.js:1268 msgid "Stock item assigned to customer" msgstr "" -#: templates/js/translated/stock.js:1190 +#: templates/js/translated/stock.js:1272 msgid "Stock item has expired" msgstr "" -#: templates/js/translated/stock.js:1192 +#: templates/js/translated/stock.js:1274 msgid "Stock item will expire soon" msgstr "" -#: templates/js/translated/stock.js:1196 +#: templates/js/translated/stock.js:1278 msgid "Stock item has been allocated" msgstr "" -#: templates/js/translated/stock.js:1200 +#: templates/js/translated/stock.js:1282 msgid "Stock item has been installed in another item" msgstr "" -#: templates/js/translated/stock.js:1207 +#: templates/js/translated/stock.js:1289 msgid "Stock item has been rejected" msgstr "" -#: templates/js/translated/stock.js:1209 +#: templates/js/translated/stock.js:1291 msgid "Stock item is lost" msgstr "" -#: templates/js/translated/stock.js:1211 +#: templates/js/translated/stock.js:1293 msgid "Stock item is destroyed" msgstr "" -#: templates/js/translated/stock.js:1215 +#: templates/js/translated/stock.js:1297 #: templates/js/translated/table_filters.js:183 msgid "Depleted" msgstr "" -#: templates/js/translated/stock.js:1265 +#: templates/js/translated/stock.js:1347 msgid "Stocktake" msgstr "" -#: templates/js/translated/stock.js:1338 +#: templates/js/translated/stock.js:1420 msgid "Supplier part not specified" msgstr "" -#: templates/js/translated/stock.js:1376 +#: templates/js/translated/stock.js:1458 msgid "No stock items matching query" msgstr "" -#: templates/js/translated/stock.js:1397 templates/js/translated/stock.js:1445 +#: templates/js/translated/stock.js:1479 templates/js/translated/stock.js:1527 msgid "items" msgstr "" -#: templates/js/translated/stock.js:1485 +#: templates/js/translated/stock.js:1567 msgid "batches" msgstr "" -#: templates/js/translated/stock.js:1512 +#: templates/js/translated/stock.js:1594 msgid "locations" msgstr "" -#: templates/js/translated/stock.js:1514 +#: templates/js/translated/stock.js:1596 msgid "Undefined location" msgstr "" -#: templates/js/translated/stock.js:1688 +#: templates/js/translated/stock.js:1770 msgid "Set Stock Status" msgstr "" -#: templates/js/translated/stock.js:1702 +#: templates/js/translated/stock.js:1784 msgid "Select Status Code" msgstr "" -#: templates/js/translated/stock.js:1703 +#: templates/js/translated/stock.js:1785 msgid "Status code must be selected" msgstr "" -#: templates/js/translated/stock.js:1927 +#: templates/js/translated/stock.js:2009 msgid "Invalid date" msgstr "" -#: templates/js/translated/stock.js:1974 +#: templates/js/translated/stock.js:2031 +msgid "Details" +msgstr "详情" + +#: templates/js/translated/stock.js:2056 msgid "Location no longer exists" msgstr "" -#: templates/js/translated/stock.js:1993 +#: templates/js/translated/stock.js:2075 msgid "Purchase order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2012 +#: templates/js/translated/stock.js:2094 msgid "Customer no longer exists" msgstr "" -#: templates/js/translated/stock.js:2030 +#: templates/js/translated/stock.js:2112 msgid "Stock item no longer exists" msgstr "" -#: templates/js/translated/stock.js:2053 +#: templates/js/translated/stock.js:2135 msgid "Added" msgstr "" -#: templates/js/translated/stock.js:2061 +#: templates/js/translated/stock.js:2143 msgid "Removed" msgstr "" -#: templates/js/translated/stock.js:2102 +#: templates/js/translated/stock.js:2184 msgid "Edit tracking entry" msgstr "" -#: templates/js/translated/stock.js:2103 +#: templates/js/translated/stock.js:2185 msgid "Delete tracking entry" msgstr "" -#: templates/js/translated/stock.js:2154 +#: templates/js/translated/stock.js:2236 msgid "No installed items" msgstr "" -#: templates/js/translated/stock.js:2205 +#: templates/js/translated/stock.js:2287 msgid "Uninstall Stock Item" msgstr "" From cde85a51687ceb83e12678aba1a909d022f7604e Mon Sep 17 00:00:00 2001 From: Oliver Date: Sat, 4 Dec 2021 19:25:57 +1100 Subject: [PATCH 121/129] Add autocomplete fields to admin views for "stock" app: - StockItem - StockLocation - StockItemTestResult - StockItemAttachment - StockItemTracking --- InvenTree/stock/admin.py | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/InvenTree/stock/admin.py b/InvenTree/stock/admin.py index abd3db20cb..83de1d2484 100644 --- a/InvenTree/stock/admin.py +++ b/InvenTree/stock/admin.py @@ -63,6 +63,10 @@ class LocationAdmin(ImportExportModelAdmin): LocationInline, ] + autocomplete_fields = [ + 'parent', + ] + class StockItemResource(ModelResource): """ Class for managing StockItem data import/export """ @@ -136,20 +140,45 @@ class StockItemAdmin(ImportExportModelAdmin): 'batch', ] + autocomplete_fields = [ + 'belongs_to', + 'build', + 'customer', + 'location', + 'parent', + 'part', + 'purchase_order', + 'sales_order', + 'stocktake_user', + 'supplier_part', + ] + class StockAttachmentAdmin(admin.ModelAdmin): list_display = ('stock_item', 'attachment', 'comment') + autocomplete_fields = [ + 'stock_item', + ] + class StockTrackingAdmin(ImportExportModelAdmin): list_display = ('item', 'date', 'label') + autocomplete_fields = [ + 'item', + ] + class StockItemTestResultAdmin(admin.ModelAdmin): list_display = ('stock_item', 'test', 'result', 'value') + autocomplete_fields = [ + 'stock_item', + ] + admin.site.register(StockLocation, LocationAdmin) admin.site.register(StockItem, StockItemAdmin) From e83b5f9db05a5ede7bcc5955008bd3a1636d23fb Mon Sep 17 00:00:00 2001 From: Oliver Date: Sat, 4 Dec 2021 20:01:56 +1100 Subject: [PATCH 122/129] Add autocomplete admin fields for "part" app --- InvenTree/part/admin.py | 48 +++++++++++++++++++++++++++-------------- 1 file changed, 32 insertions(+), 16 deletions(-) diff --git a/InvenTree/part/admin.py b/InvenTree/part/admin.py index 63f48a4e07..c429603176 100644 --- a/InvenTree/part/admin.py +++ b/InvenTree/part/admin.py @@ -8,10 +8,9 @@ from import_export.resources import ModelResource from import_export.fields import Field import import_export.widgets as widgets -import part.models as models - -from stock.models import StockLocation from company.models import SupplierPart +import part.models as models +from stock.models import StockLocation class PartResource(ModelResource): @@ -76,6 +75,13 @@ class PartAdmin(ImportExportModelAdmin): search_fields = ('name', 'description', 'category__name', 'category__description', 'IPN') + autocomplete_fields = [ + 'variant_of', + 'category', + 'default_location', + 'default_supplier', + ] + class PartCategoryResource(ModelResource): """ Class for managing PartCategory data import/export """ @@ -105,13 +111,6 @@ class PartCategoryResource(ModelResource): models.PartCategory.objects.rebuild() -class PartCategoryInline(admin.TabularInline): - """ - Inline for PartCategory model - """ - model = models.PartCategory - - class PartCategoryAdmin(ImportExportModelAdmin): resource_class = PartCategoryResource @@ -120,35 +119,44 @@ class PartCategoryAdmin(ImportExportModelAdmin): search_fields = ('name', 'description') - inlines = [ - PartCategoryInline, - ] + autocomplete_fields = ('parent', 'default_location',) class PartRelatedAdmin(admin.ModelAdmin): - ''' Class to manage PartRelated objects ''' - pass + """ + Class to manage PartRelated objects + """ + + autocomplete_fields = ('part_1', 'part_2') class PartAttachmentAdmin(admin.ModelAdmin): list_display = ('part', 'attachment', 'comment') + autocomplete_fields = ('part',) + class PartStarAdmin(admin.ModelAdmin): list_display = ('part', 'user') + autocomplete_fields = ('part',) + class PartCategoryStarAdmin(admin.ModelAdmin): list_display = ('category', 'user') + + autocomplete_fields = ('category',) class PartTestTemplateAdmin(admin.ModelAdmin): list_display = ('part', 'test_name', 'required') + autocomplete_fields = ('part',) + class BomItemResource(ModelResource): """ Class for managing BomItem data import/export """ @@ -253,10 +261,14 @@ class BomItemAdmin(ImportExportModelAdmin): search_fields = ('part__name', 'part__description', 'sub_part__name', 'sub_part__description') + autocomplete_fields = ('part', 'sub_part',) + class ParameterTemplateAdmin(ImportExportModelAdmin): list_display = ('name', 'units') + search_fields = ('name', 'units') + class ParameterResource(ModelResource): """ Class for managing PartParameter data import/export """ @@ -282,10 +294,12 @@ class ParameterAdmin(ImportExportModelAdmin): list_display = ('part', 'template', 'data') + autocomplete_fields = ('part', 'template') + class PartCategoryParameterAdmin(admin.ModelAdmin): - pass + autocomplete_fields = ('category', 'parameter_template',) class PartSellPriceBreakAdmin(admin.ModelAdmin): @@ -303,6 +317,8 @@ class PartInternalPriceBreakAdmin(admin.ModelAdmin): list_display = ('part', 'quantity', 'price',) + autocomplete_fields = ('part',) + admin.site.register(models.Part, PartAdmin) admin.site.register(models.PartCategory, PartCategoryAdmin) From 1667af4c07d5ad2d9a42333784fbe9466d9c5db9 Mon Sep 17 00:00:00 2001 From: Oliver Date: Sat, 4 Dec 2021 20:09:39 +1100 Subject: [PATCH 123/129] Add autocomplete fields to "order" admin pages --- InvenTree/order/admin.py | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/InvenTree/order/admin.py b/InvenTree/order/admin.py index 07a8e0ad0a..e98b31939a 100644 --- a/InvenTree/order/admin.py +++ b/InvenTree/order/admin.py @@ -42,6 +42,8 @@ class PurchaseOrderAdmin(ImportExportModelAdmin): PurchaseOrderLineItemInlineAdmin ] + autocomplete_fields = ('supplier',) + class SalesOrderAdmin(ImportExportModelAdmin): @@ -63,6 +65,8 @@ class SalesOrderAdmin(ImportExportModelAdmin): 'description', ] + autocomplete_fields = ('customer',) + class POLineItemResource(ModelResource): """ Class for managing import / export of POLineItem data """ @@ -124,6 +128,10 @@ class PurchaseOrderLineItemAdmin(ImportExportModelAdmin): 'reference' ) + search_fields = ('reference',) + + autocomplete_fields = ('order', 'part', 'destination',) + class SalesOrderLineItemAdmin(ImportExportModelAdmin): @@ -136,6 +144,15 @@ class SalesOrderLineItemAdmin(ImportExportModelAdmin): 'reference' ) + search_fields = [ + 'part__name', + 'order__reference', + 'order__customer__name', + 'reference', + ] + + autocomplete_fields = ('order', 'part',) + class SalesOrderShipmentAdmin(ImportExportModelAdmin): @@ -145,6 +162,14 @@ class SalesOrderShipmentAdmin(ImportExportModelAdmin): 'reference', ] + search_fields = [ + 'reference', + 'order__reference', + 'order__customer__name', + ] + + autocomplete_fields = ('order',) + class SalesOrderAllocationAdmin(ImportExportModelAdmin): @@ -154,6 +179,8 @@ class SalesOrderAllocationAdmin(ImportExportModelAdmin): 'quantity' ) + autocomplete_fields = ('line', 'shipment', 'item',) + admin.site.register(PurchaseOrder, PurchaseOrderAdmin) admin.site.register(PurchaseOrderLineItem, PurchaseOrderLineItemAdmin) From 71aa6a910d4898edfa1e7fddf04eb8f50b46fa72 Mon Sep 17 00:00:00 2001 From: Oliver Date: Sat, 4 Dec 2021 20:14:12 +1100 Subject: [PATCH 124/129] Adds autocomplete fields to admin pages for "company" app --- InvenTree/company/admin.py | 28 +++++++--------------------- 1 file changed, 7 insertions(+), 21 deletions(-) diff --git a/InvenTree/company/admin.py b/InvenTree/company/admin.py index 2c3be87c84..97327a559a 100644 --- a/InvenTree/company/admin.py +++ b/InvenTree/company/admin.py @@ -71,6 +71,8 @@ class SupplierPartAdmin(ImportExportModelAdmin): 'SKU', ] + autocomplete_fields = ('part', 'supplier', 'manufacturer_part',) + class ManufacturerPartResource(ModelResource): """ @@ -92,23 +94,6 @@ class ManufacturerPartResource(ModelResource): 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 @@ -124,10 +109,7 @@ class ManufacturerPartAdmin(ImportExportModelAdmin): 'MPN', ] - inlines = [ - SupplierPartInline, - ManufacturerPartParameterInline, - ] + autocomplete_fields = ('part', 'manufacturer',) class ManufacturerPartParameterResource(ModelResource): @@ -157,6 +139,8 @@ class ManufacturerPartParameterAdmin(ImportExportModelAdmin): 'value' ] + autocomplete_fields = ('manufacturer_part',) + class SupplierPriceBreakResource(ModelResource): """ Class for managing SupplierPriceBreak data import/export """ @@ -186,6 +170,8 @@ class SupplierPriceBreakAdmin(ImportExportModelAdmin): list_display = ('part', 'quantity', 'price') + autocomplete_fields = ('part',) + admin.site.register(Company, CompanyAdmin) admin.site.register(SupplierPart, SupplierPartAdmin) From cdf63c43aae69973784f92d1bd16498e41c34c2a Mon Sep 17 00:00:00 2001 From: Oliver Date: Sat, 4 Dec 2021 20:16:53 +1100 Subject: [PATCH 125/129] Add autocomplete fields to admin views for "build" app --- InvenTree/build/admin.py | 15 +++++++++++++++ InvenTree/part/admin.py | 4 ++-- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/InvenTree/build/admin.py b/InvenTree/build/admin.py index a5ad838660..a612ad8460 100644 --- a/InvenTree/build/admin.py +++ b/InvenTree/build/admin.py @@ -29,6 +29,14 @@ class BuildAdmin(ImportExportModelAdmin): 'part__description', ] + autocomplete_fields = [ + 'parent', + 'part', + 'sales_order', + 'take_from', + 'destination', + ] + class BuildItemAdmin(admin.ModelAdmin): @@ -38,6 +46,13 @@ class BuildItemAdmin(admin.ModelAdmin): 'quantity' ) + autocomplete_fields = [ + 'build', + 'bom_item', + 'stock_item', + 'install_into', + ] + admin.site.register(Build, BuildAdmin) admin.site.register(BuildItem, BuildItemAdmin) diff --git a/InvenTree/part/admin.py b/InvenTree/part/admin.py index c429603176..fd0a16adc2 100644 --- a/InvenTree/part/admin.py +++ b/InvenTree/part/admin.py @@ -126,7 +126,7 @@ class PartRelatedAdmin(admin.ModelAdmin): """ Class to manage PartRelated objects """ - + autocomplete_fields = ('part_1', 'part_2') @@ -147,7 +147,7 @@ class PartStarAdmin(admin.ModelAdmin): class PartCategoryStarAdmin(admin.ModelAdmin): list_display = ('category', 'user') - + autocomplete_fields = ('category',) From 087ac0bd34a653874e72c5f8ee1674e4205c7ca5 Mon Sep 17 00:00:00 2001 From: Oliver Date: Sat, 4 Dec 2021 21:15:38 +1100 Subject: [PATCH 126/129] Adds filter to purchase order for "assigned to me" --- InvenTree/order/api.py | 40 ++++++++++++++++--- .../templates/js/translated/table_filters.js | 4 ++ InvenTree/users/models.py | 28 +++++++++++++ 3 files changed, 67 insertions(+), 5 deletions(-) diff --git a/InvenTree/order/api.py b/InvenTree/order/api.py index 1ae6ae0184..a1de19837f 100644 --- a/InvenTree/order/api.py +++ b/InvenTree/order/api.py @@ -8,6 +8,9 @@ from __future__ import unicode_literals from django.conf.urls import url, include from django.db.models import Q, F +from django.contrib.auth import get_user_model +from django.contrib.auth.models import Group + from django_filters import rest_framework as rest_filters from rest_framework import generics from rest_framework import filters, status @@ -22,8 +25,38 @@ from InvenTree.status_codes import PurchaseOrderStatus, SalesOrderStatus import order.models as models import order.serializers as serializers - from part.models import Part +from users.models import Owner + + +class POFilter(rest_filters.FilterSet): + """ + Custom API filters for the POList endpoint + """ + + assigned_to_me = rest_filters.BooleanFilter(label='assigned_to_me', method='filter_assigned_to_me') + + def filter_assigned_to_me(self, queryset, name, value): + """ + Filter by orders which are assigned to the current user + """ + + value = str2bool(value) + + # Work out who "me" is! + owners = Owner.get_owners_matching_user(self.request.user) + + if value: + queryset = queryset.filter(responsible__in=owners) + else: + queryset = queryset.exclude(responsible__in=owners) + + return queryset + + class Meta: + fields = [ + 'supplier', + ] class POList(generics.ListCreateAPIView): @@ -35,6 +68,7 @@ class POList(generics.ListCreateAPIView): queryset = models.PurchaseOrder.objects.all() serializer_class = serializers.POSerializer + filterset_class = POFilter def create(self, request, *args, **kwargs): """ @@ -150,10 +184,6 @@ class POList(generics.ListCreateAPIView): 'reference': ['reference_int', 'reference'], } - filter_fields = [ - 'supplier', - ] - search_fields = [ 'reference', 'supplier__name', diff --git a/InvenTree/templates/js/translated/table_filters.js b/InvenTree/templates/js/translated/table_filters.js index 6920626284..ac5331547d 100644 --- a/InvenTree/templates/js/translated/table_filters.js +++ b/InvenTree/templates/js/translated/table_filters.js @@ -327,6 +327,10 @@ function getAvailableTableFilters(tableKey) { type: 'bool', title: '{% trans "Overdue" %}', }, + assigned_to_me: { + type: 'bool', + title: '{% trans "Assigned to me" %}', + }, }; } diff --git a/InvenTree/users/models.py b/InvenTree/users/models.py index 2b16a9bb05..e9d0a62d8e 100644 --- a/InvenTree/users/models.py +++ b/InvenTree/users/models.py @@ -477,6 +477,34 @@ class Owner(models.Model): owner: Returns the Group or User instance combining the owner_type and owner_id fields """ + @classmethod + def get_owners_matching_user(cls, user): + """ + Return all "owner" objects matching the provided user: + + A) An exact match for the user + B) Any groups that the user is a part of + """ + + user_type = ContentType.objects.get(app_label='auth', model='user') + group_type = ContentType.objects.get(app_label='auth', model='group') + + owners = [] + + try: + owners.append(cls.objects.get(owner_id=user.pk, owner_type=user_type)) + except: + pass + + for group in user.groups.all(): + try: + owner = cls.objects.get(owner_id=group.pk, owner_type=group_type) + owners.append(owner) + except: + pass + + return owners + @staticmethod def get_api_url(): return reverse('api-owner-list') From 9e1251d78d904711a3c6a379638269c64bf28a25 Mon Sep 17 00:00:00 2001 From: Oliver Date: Sat, 4 Dec 2021 21:30:11 +1100 Subject: [PATCH 127/129] Adds "assigned_to_me" filtering to build orders --- InvenTree/build/api.py | 20 +++++++++++++++++++ InvenTree/part/api.py | 2 ++ InvenTree/templates/js/translated/build.js | 7 ++++++- .../templates/js/translated/table_filters.js | 4 ++++ 4 files changed, 32 insertions(+), 1 deletion(-) diff --git a/InvenTree/build/api.py b/InvenTree/build/api.py index 2ca9dd31dc..806acd0ccc 100644 --- a/InvenTree/build/api.py +++ b/InvenTree/build/api.py @@ -20,6 +20,7 @@ from InvenTree.status_codes import BuildStatus from .models import Build, BuildItem, BuildOrderAttachment from .serializers import BuildAttachmentSerializer, BuildCompleteSerializer, BuildSerializer, BuildItemSerializer from .serializers import BuildAllocationSerializer, BuildUnallocationSerializer +from users.models import Owner class BuildFilter(rest_filters.FilterSet): @@ -51,6 +52,25 @@ class BuildFilter(rest_filters.FilterSet): return queryset + assigned_to_me = rest_filters.BooleanFilter(label='assigned_to_me', method='filter_assigned_to_me') + + def filter_assigned_to_me(self, queryset, name, value): + """ + Filter by orders which are assigned to the current user + """ + + value = str2bool(value) + + # Work out who "me" is! + owners = Owner.get_owners_matching_user(self.request.user) + + if value: + queryset = queryset.filter(responsible__in=owners) + else: + queryset = queryset.exclude(responsible__in=owners) + + return queryset + class BuildList(generics.ListCreateAPIView): """ API endpoint for accessing a list of Build objects. diff --git a/InvenTree/part/api.py b/InvenTree/part/api.py index dbc1140214..c1b86b6528 100644 --- a/InvenTree/part/api.py +++ b/InvenTree/part/api.py @@ -583,6 +583,8 @@ class PartFilter(rest_filters.FilterSet): active = rest_filters.BooleanFilter() + virtual = rest_filters.BooleanFilter() + class PartList(generics.ListCreateAPIView): """ diff --git a/InvenTree/templates/js/translated/build.js b/InvenTree/templates/js/translated/build.js index 02b2ff5321..0deec4f859 100644 --- a/InvenTree/templates/js/translated/build.js +++ b/InvenTree/templates/js/translated/build.js @@ -34,7 +34,12 @@ function buildFormFields() { reference: { prefix: global_settings.BUILDORDER_REFERENCE_PREFIX, }, - part: {}, + part: { + filters: { + assembly: true, + virtual: false, + } + }, title: {}, quantity: {}, parent: { diff --git a/InvenTree/templates/js/translated/table_filters.js b/InvenTree/templates/js/translated/table_filters.js index ac5331547d..b7ba79e498 100644 --- a/InvenTree/templates/js/translated/table_filters.js +++ b/InvenTree/templates/js/translated/table_filters.js @@ -298,6 +298,10 @@ function getAvailableTableFilters(tableKey) { type: 'bool', title: '{% trans "Overdue" %}', }, + assigned_to_me: { + type: 'bool', + title: '{% trans "Assigned to me" %}', + }, }; } From 20dac08158697c9f41cf2663dd45e5a5e2ffc0b6 Mon Sep 17 00:00:00 2001 From: Oliver Date: Sat, 4 Dec 2021 21:31:39 +1100 Subject: [PATCH 128/129] PEP fixes --- InvenTree/build/api.py | 2 +- InvenTree/order/api.py | 5 +---- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/InvenTree/build/api.py b/InvenTree/build/api.py index 806acd0ccc..4d47cf9076 100644 --- a/InvenTree/build/api.py +++ b/InvenTree/build/api.py @@ -53,7 +53,7 @@ class BuildFilter(rest_filters.FilterSet): return queryset assigned_to_me = rest_filters.BooleanFilter(label='assigned_to_me', method='filter_assigned_to_me') - + def filter_assigned_to_me(self, queryset, name, value): """ Filter by orders which are assigned to the current user diff --git a/InvenTree/order/api.py b/InvenTree/order/api.py index a1de19837f..cb451b13df 100644 --- a/InvenTree/order/api.py +++ b/InvenTree/order/api.py @@ -8,9 +8,6 @@ from __future__ import unicode_literals from django.conf.urls import url, include from django.db.models import Q, F -from django.contrib.auth import get_user_model -from django.contrib.auth.models import Group - from django_filters import rest_framework as rest_filters from rest_framework import generics from rest_framework import filters, status @@ -35,7 +32,7 @@ class POFilter(rest_filters.FilterSet): """ assigned_to_me = rest_filters.BooleanFilter(label='assigned_to_me', method='filter_assigned_to_me') - + def filter_assigned_to_me(self, queryset, name, value): """ Filter by orders which are assigned to the current user From 66462d0a68370dbabf008e7c498d2b5f046fdd2c Mon Sep 17 00:00:00 2001 From: Oliver Date: Sat, 4 Dec 2021 22:07:55 +1100 Subject: [PATCH 129/129] Fix for APIFilter --- InvenTree/order/api.py | 1 + 1 file changed, 1 insertion(+) diff --git a/InvenTree/order/api.py b/InvenTree/order/api.py index cb451b13df..98b9bbe934 100644 --- a/InvenTree/order/api.py +++ b/InvenTree/order/api.py @@ -51,6 +51,7 @@ class POFilter(rest_filters.FilterSet): return queryset class Meta: + model = models.PurchaseOrder fields = [ 'supplier', ]