From 62c26c881d1bd7547ed93a078766440e52eb4f65 Mon Sep 17 00:00:00 2001 From: Oliver Walters Date: Wed, 2 Sep 2020 23:18:26 +1000 Subject: [PATCH 1/5] Add ability to filter part list by 'ancestor' --- InvenTree/part/api.py | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/InvenTree/part/api.py b/InvenTree/part/api.py index f866a08850..80e45523c9 100644 --- a/InvenTree/part/api.py +++ b/InvenTree/part/api.py @@ -275,6 +275,7 @@ class PartList(generics.ListCreateAPIView): - purchaseable: Filter by purcahseable field - salable: Filter by salable field - active: Filter by active field + - ancestor: Filter parts by 'ancestor' (template / variant tree) """ serializer_class = part_serializers.PartSerializer @@ -387,10 +388,24 @@ class PartList(generics.ListCreateAPIView): We overide the DRF filter_fields here because """ + params = self.request.query_params + queryset = super().filter_queryset(queryset) + # Filter by 'ancestor'? + ancestor = params.get('ancestor', None) + + if ancestor is not None: + # If an 'ancestor' part is provided, filter to match only children + try: + ancestor = Part.objects.get(pk=ancestor) + descendants = ancestor.get_descendants(include_self=False) + queryset = queryset.filter(pk__in=[d.pk for d in descendants]) + except (ValueError, Part.DoesNotExist): + pass + # Filter by 'starred' parts? - starred = self.request.query_params.get('starred', None) + starred = params.get('starred', None) if starred is not None: starred = str2bool(starred) @@ -402,10 +417,10 @@ class PartList(generics.ListCreateAPIView): queryset = queryset.exclude(pk__in=starred_parts) # Cascade? - cascade = str2bool(self.request.query_params.get('cascade', None)) + cascade = str2bool(params.get('cascade', None)) # Does the user wish to filter by category? - cat_id = self.request.query_params.get('category', None) + cat_id = params.get('category', None) if cat_id is None: # No category filtering if category is not specified @@ -437,7 +452,7 @@ class PartList(generics.ListCreateAPIView): queryset = part_serializers.PartSerializer.annotate_queryset(queryset) # Filter by whether the part has stock - has_stock = self.request.query_params.get("has_stock", None) + has_stock = params.get("has_stock", None) if has_stock is not None: has_stock = str2bool(has_stock) @@ -447,7 +462,7 @@ class PartList(generics.ListCreateAPIView): queryset = queryset.filter(Q(in_stock__lte=0)) # If we are filtering by 'low_stock' status - low_stock = self.request.query_params.get('low_stock', None) + low_stock = params.get('low_stock', None) if low_stock is not None: low_stock = str2bool(low_stock) From eaec85398f66002a3e8055a3abec21ef0162bda7 Mon Sep 17 00:00:00 2001 From: Oliver Walters Date: Wed, 2 Sep 2020 23:51:28 +1000 Subject: [PATCH 2/5] Treegrid display for part variants --- InvenTree/part/templates/part/variants.html | 44 ++++------ InvenTree/templates/js/part.html | 92 +++++++++++++++++++++ 2 files changed, 108 insertions(+), 28 deletions(-) diff --git a/InvenTree/part/templates/part/variants.html b/InvenTree/part/templates/part/variants.html index 00aa786da9..e31d6deee2 100644 --- a/InvenTree/part/templates/part/variants.html +++ b/InvenTree/part/templates/part/variants.html @@ -1,5 +1,6 @@ {% extends "part/part_base.html" %} {% load static %} +{% load i18n %} {% load inventree_extras %} {% block details %} @@ -7,7 +8,7 @@
-

Part Variants

+

{% trans "Part Variants" %}

@@ -17,45 +18,32 @@
{% if part.is_template and part.active %} - + {% endif %}
- - - - - - - - - - {% for variant in part.variants.all %} - - - - - - {% endfor %} - +
VariantDescriptionStock
- {% include "hover_image.html" with image=variant.image hover=True %} - {{ variant.full_name }} - {% if not variant.active %} - INACTIVE - {% endif %} - {{ variant.description }}{% decimal variant.total_stock %}
{% endblock %} +{% block js_load %} +{{ block.super }} + + + + + + + + +{% endblock %} {% block js_ready %} {{ block.super }} - - $('#variant-table').inventreeTable({ - }); + loadPartVariantTable($('#variants-table'), {{ part.pk }}); $('#new-variant').click(function() { launchModalForm( diff --git a/InvenTree/templates/js/part.html b/InvenTree/templates/js/part.html index a1c3283c1c..2fdcfd57f7 100644 --- a/InvenTree/templates/js/part.html +++ b/InvenTree/templates/js/part.html @@ -60,6 +60,98 @@ function toggleStar(options) { ); } + +function loadPartVariantTable(table, partId, options) { + /* Load part variant table + */ + + var params = { + ancestor: partId, + }; + + var cols = [ + { + field: 'pk', + title: 'ID', + visible: false, + switchable: false, + }, + { + field: 'name', + title: '{% trans "Name" %}', + switchable: false, + formatter: function(value, row, index, field) { + var html = ''; + + var name = ''; + + if (row.IPN) { + name += row.IPN; + name += ' | '; + } + + name += value; + + if (row.revision) { + name += ' | '; + name += row.revision; + } + + if (row.is_template) { + name = '' + name + ''; + } + + html += imageHoverIcon(row.thumbnail); + html += renderLink(name, `/part/${row.pk}/`); + + return html; + }, + }, + { + field: 'IPN', + title: '{% trans 'IPN' %}', + }, + { + field: 'revision', + title: '{% trans 'Revision' %}', + }, + { + field: 'description', + title: '{% trans "Description" %}', + }, + { + field: 'in_stock', + title: '{% trans "Stock" %}', + } + ]; + + table.inventreeTable({ + url: "{% url 'api-part-list' %}", + name: 'partvariants', + showColumns: true, + original: params, + queryParams: params, + formatNoMatches: function() { return "{% trans "No variants found" %}"; }, + columns: cols, + treeEnable: true, + rootParentId: partId, + parentIdField: 'variant_of', + idField: 'pk', + uniqueId: 'pk', + treeShowField: 'name', + sortable: true, + search: true, + onPostBody: function() { + table.treegrid({ + treeColumn: 0, + }); + + table.treegrid('collapseAll'); + } + }); +} + + function loadPartTable(table, url, options={}) { /* Load part listing data into specified table. * From e3d92e1390cdd9371d06e811962b503dd5fa638c Mon Sep 17 00:00:00 2001 From: Oliver Walters Date: Wed, 2 Sep 2020 23:54:35 +1000 Subject: [PATCH 3/5] Fixes for translation script --- InvenTree/locale/de/LC_MESSAGES/django.mo | Bin 50288 -> 50156 bytes InvenTree/locale/de/LC_MESSAGES/django.po | 991 +++++++++-------- InvenTree/locale/en/LC_MESSAGES/django.po | 1222 +++++++++++---------- InvenTree/locale/es/LC_MESSAGES/django.po | 1222 +++++++++++---------- tasks.py | 2 +- 5 files changed, 1859 insertions(+), 1578 deletions(-) diff --git a/InvenTree/locale/de/LC_MESSAGES/django.mo b/InvenTree/locale/de/LC_MESSAGES/django.mo index 758fa8c4cd300c45d252a01eb8f6f23e28b66a87..e05de8f1f54ac04ca54ef085ecc7f643773864bd 100644 GIT binary patch delta 14100 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 ax?x_ocTTTcIcDegeMV;NT(RL|=>Gw0ntQqc delta 14188 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\n" "Language-Team: C \n" @@ -53,22 +53,27 @@ msgstr "Keine gültige Menge" msgid "Empty serial number string" msgstr "Keine Seriennummer angegeben" -#: InvenTree/helpers.py:360 InvenTree/helpers.py:377 +#: InvenTree/helpers.py:360 #, python-brace-format msgid "Duplicate serial: {n}" msgstr "Doppelte Seriennummer: {n}" #: InvenTree/helpers.py:364 InvenTree/helpers.py:367 InvenTree/helpers.py:370 -#: InvenTree/helpers.py:381 #, python-brace-format msgid "Invalid group: {g}" msgstr "Ungültige Gruppe: {g}" -#: InvenTree/helpers.py:387 +#: InvenTree/helpers.py:375 +#, fuzzy, python-brace-format +#| msgid "Duplicate serial: {n}" +msgid "Duplicate serial: {g}" +msgstr "Doppelte Seriennummer: {n}" + +#: InvenTree/helpers.py:383 msgid "No serial numbers found" msgstr "Keine Seriennummern gefunden" -#: InvenTree/helpers.py:391 +#: InvenTree/helpers.py:387 #, python-brace-format msgid "Number of unique serial number ({s}) must match quantity ({q})" msgstr "" @@ -83,11 +88,12 @@ msgstr "Datei zum Anhängen auswählen" msgid "File comment" msgstr "Datei-Kommentar" -#: InvenTree/models.py:68 templates/js/stock.html:682 +#: InvenTree/models.py:68 templates/js/stock.html:686 msgid "User" msgstr "Benutzer" #: InvenTree/models.py:106 part/templates/part/params.html:20 +#: templates/js/part.html:81 msgid "Name" msgstr "Name" @@ -97,19 +103,19 @@ msgstr "Name" msgid "Description (optional)" msgstr "Firmenbeschreibung" -#: InvenTree/settings.py:335 +#: InvenTree/settings.py:338 msgid "English" msgstr "Englisch" -#: InvenTree/settings.py:336 +#: InvenTree/settings.py:339 msgid "German" msgstr "Deutsch" -#: InvenTree/settings.py:337 +#: InvenTree/settings.py:340 msgid "French" msgstr "Französisch" -#: InvenTree/settings.py:338 +#: InvenTree/settings.py:341 msgid "Polish" msgstr "Polnisch" @@ -166,8 +172,8 @@ msgid "Rejected" msgstr "" #: InvenTree/status_codes.py:223 build/templates/build/allocate.html:349 -#: order/templates/order/sales_order_detail.html:220 -#: part/templates/part/tabs.html:23 templates/js/build.html:120 +#: order/templates/order/sales_order_detail.html:221 +#: part/templates/part/tabs.html:23 templates/js/build.html:122 msgid "Allocated" msgstr "Zugeordnet" @@ -256,7 +262,7 @@ msgstr "Standort-Details" msgid "Serial numbers" msgstr "Seriennummer" -#: build/forms.py:64 stock/forms.py:105 +#: build/forms.py:64 stock/forms.py:107 msgid "Enter unique serial numbers (or leave blank)" msgstr "Eindeutige Seriennummern eingeben (oder leer lassen)" @@ -291,13 +297,13 @@ msgstr "Eltern-Bau, dem dieser Bau zugewiesen ist" #: build/templates/build/build_base.html:70 #: build/templates/build/detail.html:22 order/models.py:501 #: order/templates/order/order_wizard/select_parts.html:30 -#: order/templates/order/purchase_order_detail.html:145 -#: order/templates/order/receive_parts.html:19 part/models.py:240 +#: order/templates/order/purchase_order_detail.html:147 +#: order/templates/order/receive_parts.html:19 part/models.py:239 #: part/templates/part/part_app_base.html:7 #: part/templates/part/set_category.html:13 templates/js/barcode.html:336 -#: templates/js/bom.html:135 templates/js/build.html:41 -#: templates/js/company.html:109 templates/js/part.html:120 -#: templates/js/stock.html:425 +#: templates/js/bom.html:135 templates/js/build.html:43 +#: templates/js/company.html:115 templates/js/part.html:212 +#: templates/js/stock.html:429 msgid "Part" msgstr "Teil" @@ -352,8 +358,8 @@ msgstr "Chargennummer für diese Bau-Ausgabe" #: build/models.py:155 build/templates/build/detail.html:55 #: company/templates/company/supplier_part_base.html:60 #: company/templates/company/supplier_part_detail.html:24 -#: part/templates/part/detail.html:74 part/templates/part/part_base.html:86 -#: stock/models.py:365 stock/templates/stock/item_base.html:234 +#: part/templates/part/detail.html:80 part/templates/part/part_base.html:86 +#: stock/models.py:365 stock/templates/stock/item_base.html:232 msgid "External Link" msgstr "Externer Link" @@ -363,11 +369,11 @@ msgstr "Link zu einer externen URL" #: build/models.py:160 build/templates/build/tabs.html:14 company/models.py:310 #: company/templates/company/tabs.html:33 order/templates/order/po_tabs.html:15 -#: order/templates/order/purchase_order_detail.html:200 +#: order/templates/order/purchase_order_detail.html:202 #: order/templates/order/so_tabs.html:23 part/templates/part/tabs.html:64 -#: stock/models.py:433 stock/models.py:1282 stock/templates/stock/tabs.html:26 -#: templates/js/barcode.html:391 templates/js/bom.html:229 -#: templates/js/stock.html:114 templates/js/stock.html:526 +#: stock/models.py:433 stock/models.py:1279 stock/templates/stock/tabs.html:26 +#: templates/js/barcode.html:391 templates/js/bom.html:230 +#: templates/js/stock.html:116 templates/js/stock.html:530 msgid "Notes" msgstr "Notizen" @@ -434,7 +440,7 @@ msgstr "Neues Lagerobjekt" #: build/templates/build/allocate.html:161 #: order/templates/order/sales_order_detail.html:68 #: order/templates/order/sales_order_detail.html:150 stock/models.py:359 -#: stock/templates/stock/item_base.html:150 +#: stock/templates/stock/item_base.html:148 msgid "Serial Number" msgstr "Seriennummer" @@ -444,62 +450,63 @@ msgstr "Seriennummer" #: build/templates/build/detail.html:27 #: company/templates/company/supplier_part_pricing.html:27 #: order/templates/order/order_wizard/select_parts.html:32 -#: order/templates/order/purchase_order_detail.html:175 +#: order/templates/order/purchase_order_detail.html:177 #: order/templates/order/sales_order_detail.html:70 #: order/templates/order/sales_order_detail.html:152 #: part/templates/part/allocation.html:16 #: part/templates/part/allocation.html:49 #: stock/templates/stock/item_base.html:26 #: stock/templates/stock/item_base.html:32 -#: stock/templates/stock/item_base.html:156 +#: stock/templates/stock/item_base.html:154 #: stock/templates/stock/stock_adjust.html:18 templates/js/barcode.html:338 -#: templates/js/bom.html:172 templates/js/build.html:52 -#: templates/js/stock.html:673 +#: templates/js/bom.html:173 templates/js/build.html:54 +#: templates/js/stock.html:677 msgid "Quantity" msgstr "Anzahl" #: build/templates/build/allocate.html:177 #: build/templates/build/auto_allocate.html:20 -#: stock/templates/stock/item_base.html:188 +#: stock/templates/stock/item_base.html:186 #: stock/templates/stock/stock_adjust.html:17 templates/js/barcode.html:337 -#: templates/js/stock.html:508 +#: templates/js/stock.html:512 msgid "Location" msgstr "Standort" #: build/templates/build/allocate.html:201 -#: order/templates/order/sales_order_detail.html:92 templates/js/build.html:124 +#: order/templates/order/sales_order_detail.html:92 templates/js/build.html:126 msgid "Edit stock allocation" msgstr "Lagerobjekt-Standort bearbeiten" #: build/templates/build/allocate.html:202 -#: order/templates/order/sales_order_detail.html:93 templates/js/build.html:125 +#: order/templates/order/sales_order_detail.html:93 templates/js/build.html:127 msgid "Delete stock allocation" msgstr "Zuweisung löschen" -#: build/templates/build/allocate.html:229 templates/js/bom.html:288 +#: build/templates/build/allocate.html:229 templates/js/bom.html:334 msgid "No BOM items found" msgstr "Keine BOM-Einträge gefunden" #: build/templates/build/allocate.html:328 #: company/templates/company/supplier_part_base.html:53 #: company/templates/company/supplier_part_detail.html:27 -#: order/templates/order/purchase_order_detail.html:157 -#: part/templates/part/detail.html:45 part/templates/part/set_category.html:14 -#: templates/js/bom.html:157 templates/js/company.html:60 -#: templates/js/order.html:157 templates/js/order.html:230 -#: templates/js/part.html:176 templates/js/part.html:355 -#: templates/js/stock.html:440 templates/js/stock.html:654 +#: order/templates/order/purchase_order_detail.html:159 +#: part/templates/part/detail.html:51 part/templates/part/set_category.html:14 +#: templates/js/bom.html:158 templates/js/company.html:64 +#: templates/js/order.html:159 templates/js/order.html:234 +#: templates/js/part.html:120 templates/js/part.html:268 +#: templates/js/part.html:449 templates/js/stock.html:444 +#: templates/js/stock.html:658 msgid "Description" msgstr "Beschreibung" #: build/templates/build/allocate.html:333 -#: order/templates/order/purchase_order_detail.html:170 -#: templates/js/bom.html:164 +#: order/templates/order/purchase_order_detail.html:172 +#: templates/js/bom.html:165 msgid "Reference" msgstr "Referenz" -#: build/templates/build/allocate.html:338 part/models.py:1271 -#: templates/js/part.html:359 templates/js/table_filters.html:100 +#: build/templates/build/allocate.html:338 part/models.py:1320 +#: templates/js/part.html:453 templates/js/table_filters.html:100 msgid "Required" msgstr "benötigt" @@ -508,12 +515,12 @@ msgid "Assigned" msgstr "Zugewiesen" #: build/templates/build/allocate.html:385 -#: order/templates/order/sales_order_detail.html:270 +#: order/templates/order/sales_order_detail.html:271 msgid "Buy parts" msgstr "Teile kaufen" #: build/templates/build/allocate.html:389 -#: order/templates/order/sales_order_detail.html:274 +#: order/templates/order/sales_order_detail.html:275 msgid "Build parts" msgstr "Bauteile" @@ -543,8 +550,8 @@ msgstr "Keine Lagerobjekt gefunden, die diesem Bau zugewiesen werden können" #: build/templates/build/build_base.html:8 #: build/templates/build/build_base.html:34 #: build/templates/build/complete.html:6 -#: stock/templates/stock/item_base.html:213 templates/js/build.html:33 -#: templates/navbar.html:12 +#: stock/templates/stock/item_base.html:211 templates/js/build.html:35 +#: templates/navbar.html:20 msgid "Build" msgstr "Bau" @@ -563,9 +570,9 @@ msgstr "Bau-Status" #: build/templates/build/build_base.html:80 #: build/templates/build/detail.html:42 #: order/templates/order/receive_parts.html:24 -#: stock/templates/stock/item_base.html:266 templates/js/barcode.html:42 -#: templates/js/build.html:57 templates/js/order.html:162 -#: templates/js/order.html:235 templates/js/stock.html:495 +#: stock/templates/stock/item_base.html:264 templates/js/barcode.html:42 +#: templates/js/build.html:59 templates/js/order.html:164 +#: templates/js/order.html:239 templates/js/stock.html:499 msgid "Status" msgstr "Status" @@ -575,7 +582,7 @@ msgstr "Status" #: order/templates/order/sales_order_notes.html:10 #: order/templates/order/sales_order_ship.html:25 #: part/templates/part/allocation.html:27 -#: stock/templates/stock/item_base.html:176 templates/js/order.html:209 +#: stock/templates/stock/item_base.html:174 templates/js/order.html:213 msgid "Sales Order" msgstr "Bestellung" @@ -644,13 +651,13 @@ msgid "Stock can be taken from any available location." msgstr "Bestand kann jedem verfügbaren Lagerort entnommen werden." #: build/templates/build/detail.html:48 -#: stock/templates/stock/item_base.html:206 templates/js/stock.html:503 +#: stock/templates/stock/item_base.html:204 templates/js/stock.html:507 msgid "Batch" msgstr "Los" #: build/templates/build/detail.html:61 #: order/templates/order/order_base.html:93 -#: order/templates/order/sales_order_base.html:92 templates/js/build.html:65 +#: order/templates/order/sales_order_base.html:92 templates/js/build.html:67 msgid "Created" msgstr "Erstellt" @@ -666,7 +673,7 @@ msgstr "Ja" msgid "No" msgstr "Nein" -#: build/templates/build/detail.html:80 templates/js/build.html:70 +#: build/templates/build/detail.html:80 templates/js/build.html:72 msgid "Completed" msgstr "Fertig" @@ -740,7 +747,7 @@ msgstr "Lagerbestandszuordnung bestätigen" msgid "Check the confirmation box at the bottom of the list" msgstr "Bestätigunsbox am Ende der Liste bestätigen" -#: build/views.py:148 build/views.py:456 +#: build/views.py:148 build/views.py:452 msgid "Unallocate Stock" msgstr "Zuweisung aufheben" @@ -748,7 +755,7 @@ msgstr "Zuweisung aufheben" msgid "Confirm unallocation of build stock" msgstr "Zuweisungsaufhebung bestätigen" -#: build/views.py:162 stock/views.py:404 +#: build/views.py:162 stock/views.py:405 msgid "Check the confirmation box" msgstr "Bestätigungsbox bestätigen" @@ -756,66 +763,56 @@ msgstr "Bestätigungsbox bestätigen" msgid "Complete Build" msgstr "Bau fertigstellen" -#: build/views.py:201 stock/views.py:1236 stock/views.py:1350 -msgid "Next available serial number is" -msgstr "" - -#: build/views.py:203 -#, fuzzy -#| msgid "No serial numbers found" -msgid "Next available serial numbers are" -msgstr "Keine Seriennummern gefunden" - -#: build/views.py:268 +#: build/views.py:264 msgid "Confirm completion of build" msgstr "Baufertigstellung bestätigen" -#: build/views.py:275 +#: build/views.py:271 msgid "Invalid location selected" msgstr "Ungültige Ortsauswahl" -#: build/views.py:300 stock/views.py:1386 +#: build/views.py:296 stock/views.py:1389 #, python-brace-format msgid "The following serial numbers already exist: ({sn})" msgstr "Die folgende Seriennummer existiert bereits: ({sn})" -#: build/views.py:321 +#: build/views.py:317 msgid "Build marked as COMPLETE" msgstr "Bau als FERTIG markiert" -#: build/views.py:397 +#: build/views.py:393 msgid "Start new Build" msgstr "Neuen Bau beginnen" -#: build/views.py:422 +#: build/views.py:418 msgid "Created new build" msgstr "Neuen Bau angelegt" -#: build/views.py:432 +#: build/views.py:428 msgid "Edit Build Details" msgstr "Baudetails bearbeiten" -#: build/views.py:437 +#: build/views.py:433 msgid "Edited build" msgstr "Bau bearbeitet" -#: build/views.py:446 +#: build/views.py:442 msgid "Delete Build" msgstr "Bau entfernt" -#: build/views.py:461 +#: build/views.py:457 msgid "Removed parts from build allocation" msgstr "Teile von Bauzuordnung entfernt" -#: build/views.py:471 +#: build/views.py:467 msgid "Allocate new Part" msgstr "Neues Teil zuordnen" -#: build/views.py:624 +#: build/views.py:620 msgid "Edit Stock Allocation" msgstr "Teilzuordnung bearbeiten" -#: build/views.py:628 +#: build/views.py:624 msgid "Updated Build Item" msgstr "Bauobjekt aktualisiert" @@ -884,7 +881,7 @@ msgid "Description of the company" msgstr "Firmenbeschreibung" #: company/models.py:91 company/templates/company/company_base.html:48 -#: templates/js/company.html:65 +#: templates/js/company.html:69 msgid "Website" msgstr "Website" @@ -943,7 +940,7 @@ msgid "Does this company manufacture parts?" msgstr "Produziert diese Firma Teile?" #: company/models.py:279 stock/models.py:319 -#: stock/templates/stock/item_base.html:142 +#: stock/templates/stock/item_base.html:140 msgid "Base Part" msgstr "Basisteil" @@ -991,7 +988,7 @@ msgid "Assigned Stock" msgstr "Zugewiesen" #: company/templates/company/company_base.html:7 -#: company/templates/company/company_base.html:22 templates/js/company.html:38 +#: company/templates/company/company_base.html:22 templates/js/company.html:41 msgid "Company" msgstr "Firma" @@ -1006,25 +1003,25 @@ msgstr "Telefon" #: company/templates/company/detail.html:16 #: company/templates/company/supplier_part_base.html:76 -#: company/templates/company/supplier_part_detail.html:30 -#: templates/js/company.html:48 templates/js/company.html:158 +#: company/templates/company/supplier_part_detail.html:30 part/bom.py:172 +#: templates/js/company.html:52 templates/js/company.html:164 msgid "Manufacturer" msgstr "Hersteller" #: company/templates/company/detail.html:21 #: company/templates/company/supplier_part_base.html:66 -#: company/templates/company/supplier_part_detail.html:21 order/models.py:148 +#: company/templates/company/supplier_part_detail.html:21 #: order/templates/order/order_base.html:74 -#: order/templates/order/order_wizard/select_pos.html:30 -#: stock/templates/stock/item_base.html:241 templates/js/company.html:52 -#: templates/js/company.html:134 templates/js/order.html:144 +#: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:170 +#: stock/templates/stock/item_base.html:239 templates/js/company.html:56 +#: templates/js/company.html:140 templates/js/order.html:146 msgid "Supplier" msgstr "Zulieferer" -#: company/templates/company/detail.html:26 order/models.py:314 +#: company/templates/company/detail.html:26 #: order/templates/order/sales_order_base.html:73 stock/models.py:354 -#: stock/models.py:355 stock/templates/stock/item_base.html:163 -#: templates/js/company.html:44 templates/js/order.html:217 +#: stock/models.py:355 stock/templates/stock/item_base.html:161 +#: templates/js/company.html:48 templates/js/order.html:221 msgid "Customer" msgstr "Kunde" @@ -1034,7 +1031,7 @@ msgstr "Zulieferer-Teile" #: company/templates/company/detail_part.html:13 #: order/templates/order/purchase_order_detail.html:67 -#: part/templates/part/stock.html:81 part/templates/part/supplier.html:12 +#: part/templates/part/supplier.html:12 templates/js/stock.html:784 msgid "New Supplier Part" msgstr "Neues Zulieferer-Teil" @@ -1047,8 +1044,7 @@ msgstr "Optionen" msgid "Delete Parts" msgstr "Teile löschen" -#: company/templates/company/detail_part.html:43 -#: part/templates/part/stock.html:75 +#: company/templates/company/detail_part.html:43 templates/js/stock.html:778 msgid "New Part" msgstr "Neues Teil" @@ -1080,7 +1076,7 @@ msgstr "Zuliefererbestand" #: company/templates/company/detail_stock.html:35 #: company/templates/company/supplier_part_stock.html:33 -#: part/templates/part/stock.html:53 templates/stock_table.html:5 +#: part/templates/part/stock.html:51 templates/stock_table.html:5 msgid "Export" msgstr "Exportieren" @@ -1103,7 +1099,7 @@ msgstr "" #: order/templates/order/purchase_orders.html:7 #: order/templates/order/purchase_orders.html:12 #: part/templates/part/orders.html:9 part/templates/part/tabs.html:45 -#: templates/navbar.html:18 +#: templates/navbar.html:26 msgid "Purchase Orders" msgstr "Bestellungen" @@ -1122,7 +1118,7 @@ msgstr "Neue Bestellung" #: order/templates/order/sales_orders.html:7 #: order/templates/order/sales_orders.html:12 #: part/templates/part/sales_orders.html:9 part/templates/part/tabs.html:50 -#: templates/navbar.html:25 +#: templates/navbar.html:33 msgid "Sales Orders" msgstr "Bestellungen" @@ -1138,7 +1134,7 @@ msgstr "Neuer Auftrag" #: company/templates/company/supplier_part_base.html:6 #: company/templates/company/supplier_part_base.html:19 stock/models.py:328 -#: stock/templates/stock/item_base.html:246 templates/js/company.html:150 +#: stock/templates/stock/item_base.html:244 templates/js/company.html:156 msgid "Supplier Part" msgstr "Zulieferer-Teil" @@ -1166,13 +1162,13 @@ msgid "Internal Part" msgstr "Internes Teil" #: company/templates/company/supplier_part_base.html:70 -#: company/templates/company/supplier_part_detail.html:22 +#: company/templates/company/supplier_part_detail.html:22 part/bom.py:171 msgid "SKU" msgstr "SKU" #: company/templates/company/supplier_part_base.html:80 -#: company/templates/company/supplier_part_detail.html:31 -#: templates/js/company.html:174 +#: company/templates/company/supplier_part_detail.html:31 part/bom.py:173 +#: templates/js/company.html:180 msgid "MPN" msgstr "MPN" @@ -1206,7 +1202,7 @@ msgid "New Price Break" msgstr "Neue Preisstaffelung" #: company/templates/company/supplier_part_pricing.html:28 -#: templates/js/bom.html:213 +#: templates/js/bom.html:214 msgid "Price" msgstr "Preis" @@ -1218,26 +1214,15 @@ msgstr "Keine Preisstaffelung für dieses Teil" msgid "Supplier Part Stock" msgstr "Zuliefererbestand" -#: company/templates/company/supplier_part_stock.html:56 -#: order/templates/order/purchase_order_detail.html:38 -#: order/templates/order/purchase_order_detail.html:118 -#: part/templates/part/stock.html:90 -msgid "New Location" -msgstr "Neuer Standort" - -#: company/templates/company/supplier_part_stock.html:57 -#: part/templates/part/stock.html:91 -msgid "Create New Location" -msgstr "Neuen Standort anlegen" - #: company/templates/company/supplier_part_tabs.html:5 msgid "Pricing" msgstr "Bepreisung" #: company/templates/company/supplier_part_tabs.html:8 #: company/templates/company/tabs.html:12 part/templates/part/tabs.html:18 -#: stock/templates/stock/location.html:12 templates/js/part.html:203 -#: templates/js/stock.html:448 templates/navbar.html:11 +#: stock/templates/stock/location.html:12 templates/js/part.html:124 +#: templates/js/part.html:295 templates/js/stock.html:452 +#: templates/navbar.html:19 msgid "Stock" msgstr "Lagerbestand" @@ -1246,22 +1231,22 @@ msgid "Orders" msgstr "Bestellungen" #: company/templates/company/tabs.html:9 -#: order/templates/order/receive_parts.html:14 part/models.py:241 -#: part/templates/part/category.html:83 templates/navbar.html:10 +#: order/templates/order/receive_parts.html:14 part/models.py:240 +#: part/templates/part/category.html:83 templates/navbar.html:18 #: templates/stats.html:8 templates/stats.html:17 msgid "Parts" msgstr "Teile" #: company/views.py:50 part/templates/part/tabs.html:39 -#: templates/navbar.html:16 +#: templates/navbar.html:24 msgid "Suppliers" msgstr "Zulieferer" -#: company/views.py:56 templates/navbar.html:17 +#: company/views.py:56 templates/navbar.html:25 msgid "Manufacturers" msgstr "Hersteller" -#: company/views.py:62 templates/navbar.html:24 +#: company/views.py:62 templates/navbar.html:32 msgid "Customers" msgstr "Kunden" @@ -1317,7 +1302,7 @@ msgstr "Firma gelöscht" msgid "Edit Supplier Part" msgstr "Zuliefererteil bearbeiten" -#: company/views.py:265 part/templates/part/stock.html:82 +#: company/views.py:265 templates/js/stock.html:785 msgid "Create new Supplier Part" msgstr "Neues Zuliefererteil anlegen" @@ -1357,6 +1342,14 @@ msgstr "" msgid "Query filters (comma-separated list of key=value pairs" msgstr "" +#: label/models.py:75 +msgid "Label template is enabled" +msgstr "" + +#: label/models.py:76 report/models.py:153 +msgid "Enabled" +msgstr "" + #: order/forms.py:24 msgid "Place order" msgstr "Bestellung aufgeben" @@ -1406,10 +1399,30 @@ msgstr "Link auf externe Seite" msgid "Order notes" msgstr "Bestell-Notizen" +#: order/models.py:140 order/models.py:318 +#, fuzzy +#| msgid "Purchase Order Details" +msgid "Purchase order status" +msgstr "Bestelldetails" + +#: order/models.py:148 +msgid "Company from which the items are being ordered" +msgstr "" + #: order/models.py:151 msgid "Supplier order reference code" msgstr "Bestellreferenz" +#: order/models.py:160 +msgid "Date order was issued" +msgstr "" + +#: order/models.py:162 +#, fuzzy +#| msgid "Mark order as complete" +msgid "Date order was completed" +msgstr "Bestellung als vollständig markieren" + #: order/models.py:185 order/models.py:259 part/views.py:1250 #: stock/models.py:239 stock/models.py:682 msgid "Quantity must be greater than zero" @@ -1423,6 +1436,10 @@ msgstr "Teile-Zulieferer muss dem Zulieferer des Kaufvertrags entsprechen" msgid "Lines can only be received against an order marked as 'Placed'" msgstr "Nur Teile aufgegebener Bestllungen können empfangen werden" +#: order/models.py:314 +msgid "Company to which the items are being sold" +msgstr "" + #: order/models.py:320 msgid "Customer order reference code" msgstr "Bestellreferenz" @@ -1445,7 +1462,7 @@ msgstr "Position - Notizen" #: order/models.py:466 order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:23 -#: stock/templates/stock/item_base.html:220 templates/js/order.html:136 +#: stock/templates/stock/item_base.html:218 templates/js/order.html:138 msgid "Purchase Order" msgstr "Kaufvertrag" @@ -1501,7 +1518,7 @@ msgstr "Bestellreferenz" msgid "Order Status" msgstr "Bestellstatus" -#: order/templates/order/order_base.html:80 templates/js/order.html:151 +#: order/templates/order/order_base.html:80 templates/js/order.html:153 msgid "Supplier Reference" msgstr "Zuliefererreferenz" @@ -1510,7 +1527,7 @@ msgid "Issued" msgstr "Aufgegeben" #: order/templates/order/order_base.html:106 -#: order/templates/order/purchase_order_detail.html:180 +#: order/templates/order/purchase_order_detail.html:182 #: order/templates/order/receive_parts.html:22 #: order/templates/order/sales_order_base.html:105 msgid "Received" @@ -1558,8 +1575,8 @@ msgid "Select existing purchase orders, or create new orders." msgstr "Bestellungen auswählen oder anlegen." #: order/templates/order/order_wizard/select_pos.html:31 -#: order/templates/order/po_tabs.html:5 templates/js/order.html:175 -#: templates/js/order.html:253 +#: order/templates/order/po_tabs.html:5 templates/js/order.html:177 +#: templates/js/order.html:257 msgid "Items" msgstr "Positionen" @@ -1590,6 +1607,12 @@ msgstr "Position hinzufügen" msgid "Purchase Order Items" msgstr "Bestellpositionen" +#: order/templates/order/purchase_order_detail.html:38 +#: order/templates/order/purchase_order_detail.html:118 +#: templates/js/stock.html:790 +msgid "New Location" +msgstr "Neuer Standort" + #: order/templates/order/purchase_order_detail.html:39 #: order/templates/order/purchase_order_detail.html:119 #: stock/templates/stock/location.html:16 @@ -1600,25 +1623,25 @@ msgstr "Neuen Lagerort anlegen" msgid "Create new supplier part" msgstr "Neues Zuliefererteil anlegen" -#: order/templates/order/purchase_order_detail.html:130 +#: order/templates/order/purchase_order_detail.html:131 msgid "No line items found" msgstr "Keine Positionen gefunden" -#: order/templates/order/purchase_order_detail.html:162 +#: order/templates/order/purchase_order_detail.html:164 #: order/templates/order/receive_parts.html:20 msgid "Order Code" msgstr "Bestellnummer" -#: order/templates/order/purchase_order_detail.html:211 -#: order/templates/order/sales_order_detail.html:280 +#: order/templates/order/purchase_order_detail.html:213 +#: order/templates/order/sales_order_detail.html:281 msgid "Edit line item" msgstr "Position bearbeiten" -#: order/templates/order/purchase_order_detail.html:212 +#: order/templates/order/purchase_order_detail.html:214 msgid "Delete line item" msgstr "Position löschen" -#: order/templates/order/purchase_order_detail.html:217 +#: order/templates/order/purchase_order_detail.html:219 msgid "Receive line item" msgstr "Position empfangen" @@ -1631,7 +1654,7 @@ msgid "Select parts to receive against this order" msgstr "" #: order/templates/order/receive_parts.html:21 -#: part/templates/part/part_base.html:129 templates/js/part.html:219 +#: part/templates/part/part_base.html:129 templates/js/part.html:311 msgid "On Order" msgstr "bestellt" @@ -1657,7 +1680,7 @@ msgstr "Packliste" msgid "Sales Order Details" msgstr "Auftragsdetails" -#: order/templates/order/sales_order_base.html:79 templates/js/order.html:224 +#: order/templates/order/sales_order_base.html:79 templates/js/order.html:228 msgid "Customer Reference" msgstr "Kundenreferenz" @@ -1671,15 +1694,15 @@ msgstr "Warnung" msgid "Sales Order Items" msgstr "Auftragspositionen" -#: order/templates/order/sales_order_detail.html:222 +#: order/templates/order/sales_order_detail.html:223 msgid "Fulfilled" msgstr "Erledigt" -#: order/templates/order/sales_order_detail.html:277 +#: order/templates/order/sales_order_detail.html:278 msgid "Allocate parts" msgstr "Teile zuordnen" -#: order/templates/order/sales_order_detail.html:281 +#: order/templates/order/sales_order_detail.html:282 msgid "Delete line item " msgstr "Position löschen" @@ -1869,24 +1892,33 @@ msgstr "Zuordnung bearbeiten" msgid "Remove allocation" msgstr "Zuordnung entfernen" -#: part/bom.py:144 +#: part/bom.py:138 part/templates/part/category.html:50 +#: part/templates/part/detail.html:87 +msgid "Default Location" +msgstr "Standard-Lagerort" + +#: part/bom.py:139 part/templates/part/part_base.html:102 +msgid "Available Stock" +msgstr "Verfügbarer Lagerbestand" + +#: part/bom.py:274 #, python-brace-format msgid "Unsupported file format: {f}" msgstr "Nicht unterstütztes Dateiformat: {f}" -#: part/bom.py:149 +#: part/bom.py:279 msgid "Error reading BOM file (invalid data)" msgstr "Fehler beim Lesen der Stückliste (ungültige Daten)" -#: part/bom.py:151 +#: part/bom.py:281 msgid "Error reading BOM file (incorrect row size)" msgstr "Fehler beim Lesen der Stückliste (ungültige Zeilengröße)" -#: part/forms.py:55 stock/forms.py:243 +#: part/forms.py:55 stock/forms.py:250 msgid "File Format" msgstr "Dateiformat" -#: part/forms.py:55 stock/forms.py:243 +#: part/forms.py:55 stock/forms.py:250 msgid "Select output file format" msgstr "Ausgabe-Dateiformat auswählen" @@ -1906,152 +1938,205 @@ msgstr "" msgid "Select maximum number of BOM levels to export (0 = all levels)" msgstr "" -#: part/forms.py:78 +#: part/forms.py:61 +#, fuzzy +#| msgid "New Parameter" +msgid "Include Parameter Data" +msgstr "Neuer Parameter" + +#: part/forms.py:61 +msgid "Include part parameters data in exported BOM" +msgstr "" + +#: part/forms.py:63 +#, fuzzy +#| msgid "Include stock in sublocations" +msgid "Include Stock Data" +msgstr "Bestand in Unterlagerorten einschließen" + +#: part/forms.py:63 +#, fuzzy +#| msgid "Include parts in subcategories" +msgid "Include part stock data in exported BOM" +msgstr "Teile in Unterkategorien einschließen" + +#: part/forms.py:65 +#, fuzzy +#| msgid "New Supplier Part" +msgid "Include Supplier Data" +msgstr "Neues Zulieferer-Teil" + +#: part/forms.py:65 +msgid "Include part supplier data in exported BOM" +msgstr "" + +#: part/forms.py:84 msgid "Confirm that the BOM is correct" msgstr "Bestätigen, dass die Stückliste korrekt ist" -#: part/forms.py:90 +#: part/forms.py:96 msgid "Select BOM file to upload" msgstr "Stücklisten-Datei zum Upload auswählen" -#: part/forms.py:114 +#: part/forms.py:120 msgid "Select part category" msgstr "Teilekategorie wählen" -#: part/forms.py:128 +#: part/forms.py:134 msgid "Perform 'deep copy' which will duplicate all BOM data for this part" msgstr "" "Tiefe Kopie ausführen. Dies wird alle Daten der Stückliste für dieses Teil " "duplizieren" -#: part/forms.py:133 +#: part/forms.py:139 msgid "Confirm part creation" msgstr "Erstellen des Teils bestätigen" -#: part/forms.py:223 +#: part/forms.py:237 msgid "Input quantity for price calculation" msgstr "Eintragsmenge zur Preisberechnung" -#: part/forms.py:226 +#: part/forms.py:240 msgid "Select currency for price calculation" msgstr "Währung zur Preisberechnung wählen" -#: part/models.py:65 +#: part/models.py:64 msgid "Default location for parts in this category" msgstr "Standard-Standort für Teile dieser Kategorie" -#: part/models.py:68 +#: part/models.py:67 msgid "Default keywords for parts in this category" msgstr "Standard-Stichworte für Teile dieser Kategorie" -#: part/models.py:74 part/templates/part/part_app_base.html:9 +#: part/models.py:73 part/templates/part/part_app_base.html:9 msgid "Part Category" msgstr "Teilkategorie" -#: part/models.py:75 part/templates/part/category.html:13 +#: part/models.py:74 part/templates/part/category.html:13 #: part/templates/part/category.html:78 templates/stats.html:12 msgid "Part Categories" msgstr "Teile-Kategorien" -#: part/models.py:428 +#: part/models.py:291 part/models.py:301 +#, python-brace-format +msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)" +msgstr "Teil '{p1}' wird in Stückliste für Teil '{p2}' benutzt (rekursiv)" + +#: part/models.py:381 +#, fuzzy +#| msgid "No serial numbers found" +msgid "Next available serial numbers are" +msgstr "Keine Seriennummern gefunden" + +#: part/models.py:385 +msgid "Next available serial number is" +msgstr "" + +#: part/models.py:390 +#, fuzzy +#| msgid "Empty serial number string" +msgid "Most recent serial number is" +msgstr "Keine Seriennummer angegeben" + +#: part/models.py:468 msgid "Part must be unique for name, IPN and revision" msgstr "Namen, Teile- und Revisionsnummern müssen eindeutig sein" -#: part/models.py:443 part/templates/part/detail.html:19 +#: part/models.py:483 part/templates/part/detail.html:19 msgid "Part name" msgstr "Name des Teils" -#: part/models.py:447 +#: part/models.py:487 msgid "Is this part a template part?" msgstr "Ist dieses Teil eine Vorlage?" -#: part/models.py:456 +#: part/models.py:496 msgid "Is this part a variant of another part?" msgstr "Ist dieses Teil eine Variante eines anderen Teils?" -#: part/models.py:458 +#: part/models.py:498 msgid "Part description" msgstr "Beschreibung des Teils" -#: part/models.py:460 +#: part/models.py:500 msgid "Part keywords to improve visibility in search results" msgstr "Schlüsselworte um die Sichtbarkeit in Suchergebnissen zu verbessern" -#: part/models.py:465 +#: part/models.py:505 msgid "Part category" msgstr "Teile-Kategorie" -#: part/models.py:467 +#: part/models.py:507 msgid "Internal Part Number" msgstr "Interne Teilenummer" -#: part/models.py:469 +#: part/models.py:509 msgid "Part revision or version number" msgstr "Revisions- oder Versionsnummer" -#: part/models.py:471 +#: part/models.py:511 msgid "Link to extenal URL" msgstr "Link zu einer Externen URL" -#: part/models.py:483 +#: part/models.py:523 msgid "Where is this item normally stored?" msgstr "Wo wird dieses Teil normalerweise gelagert?" -#: part/models.py:527 +#: part/models.py:567 msgid "Default supplier part" msgstr "Standard-Zulieferer?" -#: part/models.py:530 +#: part/models.py:570 msgid "Minimum allowed stock level" msgstr "Minimal zulässiger Lagerbestand" -#: part/models.py:532 +#: part/models.py:572 msgid "Stock keeping units for this part" msgstr "Stock Keeping Units (SKU) für dieses Teil" -#: part/models.py:534 +#: part/models.py:574 msgid "Can this part be built from other parts?" msgstr "Kann dieses Teil aus anderen Teilen angefertigt werden?" -#: part/models.py:536 +#: part/models.py:576 msgid "Can this part be used to build other parts?" msgstr "Kann dieses Teil zum Bau von anderen genutzt werden?" -#: part/models.py:538 +#: part/models.py:578 msgid "Does this part have tracking for unique items?" msgstr "Hat dieses Teil Tracking für einzelne Objekte?" -#: part/models.py:540 +#: part/models.py:580 msgid "Can this part be purchased from external suppliers?" msgstr "Kann dieses Teil von externen Zulieferern gekauft werden?" -#: part/models.py:542 +#: part/models.py:582 msgid "Can this part be sold to customers?" msgstr "Kann dieses Teil an Kunden verkauft werden?" -#: part/models.py:544 +#: part/models.py:584 msgid "Is this part active?" msgstr "Ist dieses Teil aktiv?" -#: part/models.py:546 +#: part/models.py:586 msgid "Is this a virtual part, such as a software product or license?" msgstr "Ist dieses Teil virtuell, wie zum Beispiel eine Software oder Lizenz?" -#: part/models.py:548 +#: part/models.py:588 msgid "Part notes - supports Markdown formatting" msgstr "Bemerkungen - unterstüzt Markdown-Formatierung" -#: part/models.py:550 +#: part/models.py:590 msgid "Stored BOM checksum" msgstr "Prüfsumme der Stückliste gespeichert" -#: part/models.py:1223 +#: part/models.py:1272 #, fuzzy #| msgid "Stock item cannot be created for a template Part" msgid "Test templates can only be created for trackable parts" msgstr "Lagerobjekt kann nicht für Vorlagen-Teile angelegt werden" -#: part/models.py:1240 +#: part/models.py:1289 #, fuzzy #| msgid "" #| "A stock item with this serial number already exists for template part " @@ -2061,123 +2146,114 @@ msgstr "" "Ein Teil mit dieser Seriennummer existiert bereits für die Teilevorlage " "{part}" -#: part/models.py:1259 templates/js/part.html:350 templates/js/stock.html:90 +#: part/models.py:1308 templates/js/part.html:444 templates/js/stock.html:92 #, fuzzy #| msgid "Instance Name" msgid "Test Name" msgstr "Instanzname" -#: part/models.py:1260 +#: part/models.py:1309 #, fuzzy #| msgid "Serial number for this item" msgid "Enter a name for the test" msgstr "Seriennummer für dieses Teil" -#: part/models.py:1265 +#: part/models.py:1314 #, fuzzy #| msgid "Description" msgid "Test Description" msgstr "Beschreibung" -#: part/models.py:1266 +#: part/models.py:1315 #, fuzzy #| msgid "Brief description of the build" msgid "Enter description for this test" msgstr "Kurze Beschreibung des Baus" -#: part/models.py:1272 +#: part/models.py:1321 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:1277 templates/js/part.html:367 +#: part/models.py:1326 templates/js/part.html:461 #, fuzzy #| msgid "Required Parts" msgid "Requires Value" msgstr "benötigte Teile" -#: part/models.py:1278 +#: part/models.py:1327 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:1283 templates/js/part.html:374 +#: part/models.py:1332 templates/js/part.html:468 #, fuzzy #| msgid "Delete Attachment" msgid "Requires Attachment" msgstr "Anhang löschen" -#: part/models.py:1284 +#: part/models.py:1333 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:1317 +#: part/models.py:1366 msgid "Parameter template name must be unique" msgstr "Vorlagen-Name des Parameters muss eindeutig sein" -#: part/models.py:1322 +#: part/models.py:1371 msgid "Parameter Name" msgstr "Name des Parameters" -#: part/models.py:1324 +#: part/models.py:1373 msgid "Parameter Units" msgstr "Parameter Einheit" -#: part/models.py:1350 +#: part/models.py:1399 msgid "Parent Part" msgstr "Ausgangsteil" -#: part/models.py:1352 +#: part/models.py:1401 msgid "Parameter Template" msgstr "Parameter Vorlage" -#: part/models.py:1354 +#: part/models.py:1403 msgid "Parameter Value" msgstr "Parameter Wert" -#: part/models.py:1383 +#: part/models.py:1432 msgid "Select parent part" msgstr "Ausgangsteil auswählen" -#: part/models.py:1391 +#: part/models.py:1440 msgid "Select part to be used in BOM" msgstr "Teil für die Nutzung in der Stückliste auswählen" -#: part/models.py:1397 +#: part/models.py:1446 msgid "BOM quantity for this BOM item" msgstr "Stücklisten-Anzahl für dieses Stücklisten-Teil" -#: part/models.py:1400 +#: part/models.py:1449 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "Geschätzter Ausschuss (absolut oder prozentual)" -#: part/models.py:1403 +#: part/models.py:1452 msgid "BOM item reference" msgstr "Referenz des Objekts auf der Stückliste" -#: part/models.py:1406 +#: part/models.py:1455 msgid "BOM item notes" msgstr "Notizen zum Stücklisten-Objekt" -#: part/models.py:1408 +#: part/models.py:1457 msgid "BOM line checksum" msgstr "Prüfsumme der Stückliste" -#: part/models.py:1472 part/views.py:1256 part/views.py:1308 +#: part/models.py:1521 part/views.py:1256 part/views.py:1308 #: stock/models.py:229 #, fuzzy #| msgid "Overage must be an integer value or a percentage" msgid "Quantity must be integer value for trackable parts" msgstr "Überschuss muss eine Ganzzahl oder ein Prozentwert sein" -#: part/models.py:1481 -msgid "Part cannot be added to its own Bill of Materials" -msgstr "Teil kann nicht zu seiner eigenen Stückliste hinzugefügt werden" - -#: part/models.py:1488 -#, python-brace-format -msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)" -msgstr "Teil '{p1}' wird in Stückliste für Teil '{p2}' benutzt (rekursiv)" - -#: part/models.py:1495 +#: part/models.py:1530 #, fuzzy #| msgid "New BOM Item" msgid "BOM Item" @@ -2198,14 +2274,14 @@ msgstr "Bestellung" #: part/templates/part/allocation.html:45 #: stock/templates/stock/item_base.html:8 #: stock/templates/stock/item_base.html:58 -#: stock/templates/stock/item_base.html:228 -#: stock/templates/stock/stock_adjust.html:16 templates/js/build.html:106 -#: templates/js/stock.html:643 +#: stock/templates/stock/item_base.html:226 +#: stock/templates/stock/stock_adjust.html:16 templates/js/build.html:108 +#: templates/js/stock.html:647 msgid "Stock Item" msgstr "Lagerobjekt" #: part/templates/part/allocation.html:20 -#: stock/templates/stock/item_base.html:182 +#: stock/templates/stock/item_base.html:180 msgid "Build Order" msgstr "Bauauftrag" @@ -2241,7 +2317,7 @@ msgstr "Stückliste bearbeiten" msgid "Validate Bill of Materials" msgstr "Stückliste validieren" -#: part/templates/part/bom.html:46 part/views.py:1523 +#: part/templates/part/bom.html:46 part/views.py:1543 msgid "Export Bill of Materials" msgstr "Stückliste exportieren" @@ -2345,11 +2421,7 @@ msgstr "Pfad zur Kategorie" msgid "Category Description" msgstr "Kategorie-Beschreibung" -#: part/templates/part/category.html:50 part/templates/part/detail.html:81 -msgid "Default Location" -msgstr "Standard-Lagerort" - -#: part/templates/part/category.html:57 part/templates/part/detail.html:58 +#: part/templates/part/category.html:57 part/templates/part/detail.html:64 msgid "Keywords" msgstr "Schlüsselwörter" @@ -2366,148 +2438,155 @@ msgid "Part Details" msgstr "Teile-Details" #: part/templates/part/detail.html:25 part/templates/part/part_base.html:79 +#: templates/js/part.html:112 msgid "IPN" msgstr "IPN (Interne Produktnummer)" -#: part/templates/part/detail.html:32 +#: part/templates/part/detail.html:32 templates/js/part.html:116 msgid "Revision" msgstr "Revision" #: part/templates/part/detail.html:39 #, fuzzy #| msgid "Serial Number" -msgid "Next Serial Number" +msgid "Latest Serial Number" msgstr "Seriennummer" -#: part/templates/part/detail.html:51 +#: part/templates/part/detail.html:44 +#, fuzzy +#| msgid "No serial numbers found" +msgid "No serial numbers recorded" +msgstr "Keine Seriennummern gefunden" + +#: part/templates/part/detail.html:57 msgid "Variant Of" msgstr "Variante von" -#: part/templates/part/detail.html:64 part/templates/part/set_category.html:15 -#: templates/js/part.html:190 +#: part/templates/part/detail.html:70 part/templates/part/set_category.html:15 +#: templates/js/part.html:282 msgid "Category" msgstr "Kategorie" -#: part/templates/part/detail.html:88 +#: part/templates/part/detail.html:94 msgid "Default Supplier" msgstr "Standard-Zulieferer" -#: part/templates/part/detail.html:96 part/templates/part/params.html:22 +#: part/templates/part/detail.html:102 part/templates/part/params.html:22 msgid "Units" msgstr "Einheiten" -#: part/templates/part/detail.html:102 +#: part/templates/part/detail.html:108 msgid "Minimum Stock" msgstr "Minimaler Lagerbestand" -#: part/templates/part/detail.html:108 templates/js/order.html:243 +#: part/templates/part/detail.html:114 templates/js/order.html:247 msgid "Creation Date" msgstr "Erstelldatum" -#: part/templates/part/detail.html:114 +#: part/templates/part/detail.html:120 msgid "Created By" msgstr "Erstellt von" -#: part/templates/part/detail.html:121 +#: part/templates/part/detail.html:127 msgid "Responsible User" msgstr "Verantwortlicher Benutzer" -#: part/templates/part/detail.html:130 +#: part/templates/part/detail.html:136 msgid "Virtual" msgstr "Virtuell" -#: part/templates/part/detail.html:133 +#: part/templates/part/detail.html:139 msgid "Part is virtual (not a physical part)" msgstr "Teil ist virtuell (kein physisches Teil)" -#: part/templates/part/detail.html:135 +#: part/templates/part/detail.html:141 msgid "Part is not a virtual part" msgstr "Teil ist nicht virtuell" -#: part/templates/part/detail.html:139 stock/forms.py:237 +#: part/templates/part/detail.html:145 stock/forms.py:244 #: templates/js/table_filters.html:159 msgid "Template" msgstr "Vorlage" -#: part/templates/part/detail.html:142 +#: part/templates/part/detail.html:148 #, fuzzy #| msgid "Part cannot be a template part if it is a variant of another part" msgid "Part is a template part (variants can be made from this part)" msgstr "Teil kann keine Vorlage sein wenn es Variante eines anderen Teils ist" -#: part/templates/part/detail.html:144 +#: part/templates/part/detail.html:150 #, fuzzy #| msgid "Part is not a virtual part" msgid "Part is not a template part" msgstr "Teil ist nicht virtuell" -#: part/templates/part/detail.html:148 templates/js/table_filters.html:171 +#: part/templates/part/detail.html:154 templates/js/table_filters.html:171 msgid "Assembly" msgstr "Baugruppe" -#: part/templates/part/detail.html:151 +#: part/templates/part/detail.html:157 msgid "Part can be assembled from other parts" msgstr "Teil kann aus anderen Teilen angefertigt werden" -#: part/templates/part/detail.html:153 +#: part/templates/part/detail.html:159 msgid "Part cannot be assembled from other parts" msgstr "Teil kann nicht aus anderen Teilen angefertigt werden" -#: part/templates/part/detail.html:157 templates/js/table_filters.html:175 +#: part/templates/part/detail.html:163 templates/js/table_filters.html:175 msgid "Component" msgstr "Komponente" -#: part/templates/part/detail.html:160 +#: part/templates/part/detail.html:166 msgid "Part can be used in assemblies" msgstr "Teil kann in Baugruppen benutzt werden" -#: part/templates/part/detail.html:162 +#: part/templates/part/detail.html:168 msgid "Part cannot be used in assemblies" msgstr "Teil kann nicht in Baugruppen benutzt werden" -#: part/templates/part/detail.html:166 templates/js/table_filters.html:187 +#: part/templates/part/detail.html:172 templates/js/table_filters.html:187 msgid "Trackable" msgstr "nachverfolgbar" -#: part/templates/part/detail.html:169 +#: part/templates/part/detail.html:175 msgid "Part stock is tracked by serial number" msgstr "Teilebestand in der Seriennummer hinterlegt" -#: part/templates/part/detail.html:171 +#: part/templates/part/detail.html:177 msgid "Part stock is not tracked by serial number" msgstr "Teilebestand ist nicht in der Seriennummer hinterlegt" -#: part/templates/part/detail.html:175 +#: part/templates/part/detail.html:181 msgid "Purchaseable" msgstr "Kaufbar" -#: part/templates/part/detail.html:178 part/templates/part/detail.html:180 +#: part/templates/part/detail.html:184 part/templates/part/detail.html:186 msgid "Part can be purchased from external suppliers" msgstr "Teil kann von externen Zulieferern gekauft werden" -#: part/templates/part/detail.html:184 templates/js/table_filters.html:183 +#: part/templates/part/detail.html:190 templates/js/table_filters.html:183 msgid "Salable" msgstr "Verkäuflich" -#: part/templates/part/detail.html:187 +#: part/templates/part/detail.html:193 msgid "Part can be sold to customers" msgstr "Teil kann an Kunden verkauft werden" -#: part/templates/part/detail.html:189 +#: part/templates/part/detail.html:195 msgid "Part cannot be sold to customers" msgstr "Teil kann nicht an Kunden verkauft werden" -#: part/templates/part/detail.html:193 templates/js/table_filters.html:154 +#: part/templates/part/detail.html:199 templates/js/table_filters.html:154 msgid "Active" msgstr "Aktiv" -#: part/templates/part/detail.html:196 +#: part/templates/part/detail.html:202 #, fuzzy #| msgid "This part is not active" msgid "Part is active" msgstr "Dieses Teil ist nicht aktiv" -#: part/templates/part/detail.html:198 +#: part/templates/part/detail.html:204 #, fuzzy #| msgid "This part is not active" msgid "Part is not active" @@ -2533,8 +2612,8 @@ msgstr "Parameter hinzufügen" msgid "New Parameter" msgstr "Neuer Parameter" -#: part/templates/part/params.html:21 stock/models.py:1269 -#: templates/js/stock.html:110 +#: part/templates/part/params.html:21 stock/models.py:1266 +#: templates/js/stock.html:112 msgid "Value" msgstr "Wert" @@ -2564,8 +2643,8 @@ msgstr "Dieses Teil ist eine Vorlage." msgid "This part is a variant of" msgstr "Dieses Teil ist eine Variante von" -#: part/templates/part/part_base.html:33 templates/js/company.html:125 -#: templates/js/part.html:167 +#: part/templates/part/part_base.html:33 templates/js/company.html:131 +#: templates/js/part.html:259 msgid "Inactive" msgstr "Inaktiv" @@ -2623,10 +2702,6 @@ msgstr "Vorlage bearbeiten" msgid "Delete part" msgstr "Teile löschen" -#: part/templates/part/part_base.html:102 -msgid "Available Stock" -msgstr "Verfügbarer Lagerbestand" - #: part/templates/part/part_base.html:108 templates/js/table_filters.html:57 msgid "In Stock" msgstr "Auf Lager" @@ -2687,12 +2762,8 @@ msgstr "Teil entfernen" msgid "Part Stock" msgstr "Teilbestand" -#: part/templates/part/stock.html:76 -msgid "Create New Part" -msgstr "Neues Teil anlegen" - -#: part/templates/part/stock_count.html:7 templates/js/bom.html:203 -#: templates/js/part.html:227 +#: part/templates/part/stock_count.html:7 templates/js/bom.html:204 +#: templates/js/part.html:319 msgid "No Stock" msgstr "Kein Bestand" @@ -2740,7 +2811,7 @@ msgstr "Stückliste" msgid "Used In" msgstr "Benutzt in" -#: part/templates/part/tabs.html:55 stock/templates/stock/item_base.html:272 +#: part/templates/part/tabs.html:55 stock/templates/stock/item_base.html:270 msgid "Tests" msgstr "" @@ -2752,10 +2823,28 @@ msgstr "Teilverfolgung" msgid "Assemblies" msgstr "Baugruppen" -#: part/templates/part/used_in.html:42 +#: part/templates/part/used_in.html:43 msgid "INACTIVE" msgstr "INAKTIV" +#: part/templates/part/variants.html:11 +#, fuzzy +#| msgid "Variants" +msgid "Part Variants" +msgstr "Varianten" + +#: part/templates/part/variants.html:21 +#, fuzzy +#| msgid "Create new Part" +msgid "Create new variant" +msgstr "Neues Teil hinzufügen" + +#: part/templates/part/variants.html:21 +#, fuzzy +#| msgid "Variants" +msgid "New Variant" +msgstr "Varianten" + #: part/views.py:75 msgid "Add part attachment" msgstr "Teilanhang hinzufügen" @@ -2867,131 +2956,143 @@ msgstr "Bitte ein gültiges Teil auswählen" msgid "Duplicate part selected" msgstr "Teil doppelt ausgewählt" -#: part/views.py:1329 +#: part/views.py:1331 msgid "Select a part" msgstr "Teil auswählen" -#: part/views.py:1333 +#: part/views.py:1337 +#, fuzzy +#| msgid "Select part to be used in BOM" +msgid "Selected part creates a circular BOM" +msgstr "Teil für die Nutzung in der Stückliste auswählen" + +#: part/views.py:1341 msgid "Specify quantity" msgstr "Anzahl angeben" -#: part/views.py:1565 +#: part/views.py:1591 msgid "Confirm Part Deletion" msgstr "Löschen des Teils bestätigen" -#: part/views.py:1572 +#: part/views.py:1598 msgid "Part was deleted" msgstr "Teil wurde gelöscht" -#: part/views.py:1581 +#: part/views.py:1607 msgid "Part Pricing" msgstr "Teilbepreisung" -#: part/views.py:1703 +#: part/views.py:1729 msgid "Create Part Parameter Template" msgstr "Teilparametervorlage anlegen" -#: part/views.py:1711 +#: part/views.py:1737 msgid "Edit Part Parameter Template" msgstr "Teilparametervorlage bearbeiten" -#: part/views.py:1718 +#: part/views.py:1744 msgid "Delete Part Parameter Template" msgstr "Teilparametervorlage löschen" -#: part/views.py:1726 +#: part/views.py:1752 msgid "Create Part Parameter" msgstr "Teilparameter anlegen" -#: part/views.py:1776 +#: part/views.py:1802 msgid "Edit Part Parameter" msgstr "Teilparameter bearbeiten" -#: part/views.py:1790 +#: part/views.py:1816 msgid "Delete Part Parameter" msgstr "Teilparameter löschen" -#: part/views.py:1806 +#: part/views.py:1832 msgid "Edit Part Category" msgstr "Teilkategorie bearbeiten" -#: part/views.py:1841 +#: part/views.py:1867 msgid "Delete Part Category" msgstr "Teilkategorie löschen" -#: part/views.py:1847 +#: part/views.py:1873 msgid "Part category was deleted" msgstr "Teilekategorie wurde gelöscht" -#: part/views.py:1855 +#: part/views.py:1881 msgid "Create new part category" msgstr "Teilkategorie anlegen" -#: part/views.py:1906 +#: part/views.py:1932 msgid "Create BOM item" msgstr "BOM-Position anlegen" -#: part/views.py:1972 +#: part/views.py:1998 msgid "Edit BOM item" msgstr "BOM-Position beaarbeiten" -#: part/views.py:2020 +#: part/views.py:2046 msgid "Confim BOM item deletion" msgstr "Löschung von BOM-Position bestätigen" -#: report/models.py:167 +#: report/models.py:138 #, fuzzy #| msgid "Template part" msgid "Template name" msgstr "Vorlagenteil" -#: report/models.py:173 +#: report/models.py:144 msgid "Report template file" msgstr "" -#: report/models.py:177 +#: report/models.py:148 #, fuzzy #| msgid "Supplier part description" msgid "Report template description" msgstr "Zuliefererbeschreibung des Teils" -#: report/models.py:221 +#: report/models.py:152 +#, fuzzy +#| msgid "Supplier part description" +msgid "Report template is enabled" +msgstr "Zuliefererbeschreibung des Teils" + +#: report/models.py:159 msgid "Part query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:266 +#: report/models.py:218 msgid "Report asset file" msgstr "" -#: report/models.py:269 +#: report/models.py:221 #, fuzzy #| msgid "Settings description" msgid "Asset file description" msgstr "Einstellungs-Beschreibung" -#: stock/forms.py:185 +#: stock/forms.py:187 msgid "Label" msgstr "" -#: stock/forms.py:186 stock/forms.py:237 +#: stock/forms.py:188 stock/forms.py:244 #, fuzzy #| msgid "Select stock item to allocate" msgid "Select test report template" msgstr "Lagerobjekt für Zuordnung auswählen" -#: stock/forms.py:245 +#: stock/forms.py:252 msgid "Include stock items in sub locations" msgstr "Lagerobjekte in untergeordneten Lagerorten einschließen" -#: stock/forms.py:278 +#: stock/forms.py:285 msgid "Destination stock location" msgstr "Ziel-Lagerbestand" -#: stock/forms.py:284 +#: stock/forms.py:291 msgid "Confirm movement of stock items" msgstr "Bewegung der Lagerobjekte bestätigen" -#: stock/forms.py:286 +#: stock/forms.py:293 msgid "Set the destination as the default location for selected parts" msgstr "Setze das Ziel als Standard-Ziel für ausgewählte Teile" @@ -3131,90 +3232,90 @@ msgstr "Anzahl muss eine Ganzzahl sein" msgid "Quantity must not exceed available stock quantity ({n})" msgstr "Anzahl darf nicht die verfügbare Anzahl überschreiten ({n})" -#: stock/models.py:688 stock/models.py:691 +#: stock/models.py:688 msgid "Serial numbers must be a list of integers" msgstr "Seriennummern muss eine Liste von Ganzzahlen sein" -#: stock/models.py:694 +#: stock/models.py:691 msgid "Quantity does not match serial numbers" msgstr "Anzahl stimmt nicht mit den Seriennummern überein" -#: stock/models.py:704 +#: stock/models.py:701 msgid "Serial numbers already exist: " msgstr "Seriennummern existieren bereits:" -#: stock/models.py:729 +#: stock/models.py:726 msgid "Add serial number" msgstr "Seriennummer hinzufügen" -#: stock/models.py:732 +#: stock/models.py:729 #, python-brace-format msgid "Serialized {n} items" msgstr "{n} Teile serialisiert" -#: stock/models.py:843 +#: stock/models.py:840 msgid "StockItem cannot be moved as it is not in stock" msgstr "Lagerobjekt kann nicht bewegt werden, da kein Bestand vorhanden ist" -#: stock/models.py:1170 +#: stock/models.py:1167 msgid "Tracking entry title" msgstr "Name des Eintrags-Trackings" -#: stock/models.py:1172 +#: stock/models.py:1169 msgid "Entry notes" msgstr "Eintrags-Notizen" -#: stock/models.py:1174 +#: stock/models.py:1171 msgid "Link to external page for further information" msgstr "Link auf externe Seite für weitere Informationen" -#: stock/models.py:1234 +#: stock/models.py:1231 #, fuzzy #| msgid "Serial number for this item" msgid "Value must be provided for this test" msgstr "Seriennummer für dieses Teil" -#: stock/models.py:1240 +#: stock/models.py:1237 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:1257 +#: stock/models.py:1254 msgid "Test" msgstr "" -#: stock/models.py:1258 +#: stock/models.py:1255 #, fuzzy #| msgid "Part name" msgid "Test name" msgstr "Name des Teils" -#: stock/models.py:1263 +#: stock/models.py:1260 #, fuzzy #| msgid "Search Results" msgid "Result" msgstr "Suchergebnisse" -#: stock/models.py:1264 templates/js/table_filters.html:90 +#: stock/models.py:1261 templates/js/table_filters.html:90 msgid "Test result" msgstr "" -#: stock/models.py:1270 +#: stock/models.py:1267 msgid "Test output value" msgstr "" -#: stock/models.py:1276 +#: stock/models.py:1273 #, fuzzy #| msgid "Attachments" msgid "Attachment" msgstr "Anhänge" -#: stock/models.py:1277 +#: stock/models.py:1274 #, fuzzy #| msgid "Delete attachment" msgid "Test result attachment" msgstr "Anhang löschen" -#: stock/models.py:1283 +#: stock/models.py:1280 #, fuzzy #| msgid "Edit notes" msgid "Test notes" @@ -3346,41 +3447,41 @@ msgstr "Lagerobjekt bearbeiten" msgid "Delete stock item" msgstr "Lagerobjekt löschen" -#: stock/templates/stock/item_base.html:128 +#: stock/templates/stock/item_base.html:127 msgid "Generate test report" msgstr "" -#: stock/templates/stock/item_base.html:137 +#: stock/templates/stock/item_base.html:135 msgid "Stock Item Details" msgstr "Lagerbestands-Details" -#: stock/templates/stock/item_base.html:170 +#: stock/templates/stock/item_base.html:168 msgid "Belongs To" msgstr "Gehört zu" -#: stock/templates/stock/item_base.html:192 +#: stock/templates/stock/item_base.html:190 #, fuzzy #| msgid "No stock location set" msgid "No location set" msgstr "Kein Lagerort gesetzt" -#: stock/templates/stock/item_base.html:199 +#: stock/templates/stock/item_base.html:197 msgid "Unique Identifier" msgstr "Eindeutiger Bezeichner" -#: stock/templates/stock/item_base.html:227 +#: stock/templates/stock/item_base.html:225 msgid "Parent Item" msgstr "Elternposition" -#: stock/templates/stock/item_base.html:252 +#: stock/templates/stock/item_base.html:250 msgid "Last Updated" msgstr "Zuletzt aktualisiert" -#: stock/templates/stock/item_base.html:257 +#: stock/templates/stock/item_base.html:255 msgid "Last Stocktake" msgstr "Letzte Inventur" -#: stock/templates/stock/item_base.html:261 +#: stock/templates/stock/item_base.html:259 msgid "No stocktake performed" msgstr "Keine Inventur ausgeführt" @@ -3412,7 +3513,7 @@ msgstr "Vorlage löschen" msgid "Add Test Data" msgstr "" -#: stock/templates/stock/item_tests.html:21 +#: stock/templates/stock/item_tests.html:20 msgid "Test Report" msgstr "" @@ -3481,17 +3582,7 @@ msgstr "Lagerobjekt-Standorte" msgid "Are you sure you want to delete this stock location?" msgstr "Sind Sie sicher, dass Sie diesen Anhang löschen wollen?" -#: stock/templates/stock/stock_adjust.html:35 -#, fuzzy -#| msgid "" -#| "This stock item is serialized - it has a unique serial number and the " -#| "quantity cannot be adjusted." -msgid "Stock item is serialized and quantity cannot be adjusted" -msgstr "" -"Dieses Lagerobjekt ist serialisiert. Es hat eine eindeutige Seriennummer und " -"die Anzahl kann nicht angepasst werden." - -#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:1052 +#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:1053 #, fuzzy #| msgid "Count Stock Items" msgid "Convert Stock Item" @@ -3577,192 +3668,192 @@ msgstr "" msgid "Select Label Template" msgstr "Bitte ein gültiges Teil auswählen" -#: stock/views.py:326 +#: stock/views.py:327 #, fuzzy #| msgid "Select valid part" msgid "Select valid label" msgstr "Bitte ein gültiges Teil auswählen" -#: stock/views.py:388 +#: stock/views.py:389 #, fuzzy #| msgid "Delete Template" msgid "Delete All Test Data" msgstr "Vorlage löschen" -#: stock/views.py:403 +#: stock/views.py:404 #, fuzzy #| msgid "Confirm Part Deletion" msgid "Confirm test data deletion" msgstr "Löschen des Teils bestätigen" -#: stock/views.py:423 +#: stock/views.py:424 msgid "Add Test Result" msgstr "" -#: stock/views.py:460 +#: stock/views.py:461 #, fuzzy #| msgid "Edit Template" msgid "Edit Test Result" msgstr "Vorlage bearbeiten" -#: stock/views.py:477 +#: stock/views.py:478 #, fuzzy #| msgid "Delete Template" msgid "Delete Test Result" msgstr "Vorlage löschen" -#: stock/views.py:488 +#: stock/views.py:489 #, fuzzy #| msgid "Delete Template" msgid "Select Test Report Template" msgstr "Vorlage löschen" -#: stock/views.py:502 +#: stock/views.py:503 #, fuzzy #| msgid "Select valid part" msgid "Select valid template" msgstr "Bitte ein gültiges Teil auswählen" -#: stock/views.py:554 +#: stock/views.py:555 msgid "Stock Export Options" msgstr "Lagerbestandsexportoptionen" -#: stock/views.py:674 +#: stock/views.py:675 msgid "Stock Item QR Code" msgstr "Lagerobjekt-QR-Code" -#: stock/views.py:697 +#: stock/views.py:698 msgid "Adjust Stock" msgstr "Lagerbestand anpassen" -#: stock/views.py:806 +#: stock/views.py:807 msgid "Move Stock Items" msgstr "Lagerobjekte bewegen" -#: stock/views.py:807 +#: stock/views.py:808 msgid "Count Stock Items" msgstr "Lagerobjekte zählen" -#: stock/views.py:808 +#: stock/views.py:809 msgid "Remove From Stock" msgstr "Aus Lagerbestand entfernen" -#: stock/views.py:809 +#: stock/views.py:810 msgid "Add Stock Items" msgstr "Lagerobjekte hinzufügen" -#: stock/views.py:810 +#: stock/views.py:811 msgid "Delete Stock Items" msgstr "Lagerobjekte löschen" -#: stock/views.py:838 +#: stock/views.py:839 msgid "Must enter integer value" msgstr "Nur Ganzzahl eingeben" -#: stock/views.py:843 +#: stock/views.py:844 msgid "Quantity must be positive" msgstr "Anzahl muss positiv sein" -#: stock/views.py:850 +#: stock/views.py:851 #, python-brace-format msgid "Quantity must not exceed {x}" msgstr "Anzahl darf {x} nicht überschreiten" -#: stock/views.py:858 +#: stock/views.py:859 msgid "Confirm stock adjustment" msgstr "Bestands-Anpassung bestätigen" -#: stock/views.py:929 +#: stock/views.py:930 #, python-brace-format msgid "Added stock to {n} items" msgstr "Vorrat zu {n} Lagerobjekten hinzugefügt" -#: stock/views.py:944 +#: stock/views.py:945 #, python-brace-format msgid "Removed stock from {n} items" msgstr "Vorrat von {n} Lagerobjekten entfernt" -#: stock/views.py:957 +#: stock/views.py:958 #, python-brace-format msgid "Counted stock for {n} items" msgstr "Bestand für {n} Objekte erfasst" -#: stock/views.py:985 +#: stock/views.py:986 msgid "No items were moved" msgstr "Keine Lagerobjekte wurden bewegt" -#: stock/views.py:988 +#: stock/views.py:989 #, python-brace-format msgid "Moved {n} items to {dest}" msgstr "{n} Teile nach {dest} bewegt" -#: stock/views.py:1007 +#: stock/views.py:1008 #, python-brace-format msgid "Deleted {n} stock items" msgstr "{n} Teile im Lager gelöscht" -#: stock/views.py:1019 +#: stock/views.py:1020 msgid "Edit Stock Item" msgstr "Lagerobjekt bearbeiten" -#: stock/views.py:1079 +#: stock/views.py:1080 msgid "Create new Stock Location" msgstr "Neuen Lager-Standort erstellen" -#: stock/views.py:1100 +#: stock/views.py:1101 msgid "Serialize Stock" msgstr "Lagerbestand erfassen" -#: stock/views.py:1192 +#: stock/views.py:1194 msgid "Create new Stock Item" msgstr "Neues Lagerobjekt hinzufügen" -#: stock/views.py:1285 +#: stock/views.py:1293 #, fuzzy #| msgid "Count stock items" msgid "Duplicate Stock Item" msgstr "Lagerobjekte zählen" -#: stock/views.py:1358 +#: stock/views.py:1361 msgid "Invalid quantity" msgstr "Ungültige Menge" -#: stock/views.py:1361 +#: stock/views.py:1364 #, fuzzy #| msgid "Quantity must be greater than zero" msgid "Quantity cannot be less than zero" msgstr "Anzahl muss größer Null sein" -#: stock/views.py:1365 +#: stock/views.py:1368 msgid "Invalid part selection" msgstr "Ungültige Teileauswahl" -#: stock/views.py:1414 +#: stock/views.py:1417 #, python-brace-format msgid "Created {n} new stock items" msgstr "{n} neue Lagerobjekte erstellt" -#: stock/views.py:1433 stock/views.py:1449 +#: stock/views.py:1436 stock/views.py:1452 msgid "Created new stock item" msgstr "Neues Lagerobjekt erstellt" -#: stock/views.py:1468 +#: stock/views.py:1471 msgid "Delete Stock Location" msgstr "Standort löschen" -#: stock/views.py:1481 +#: stock/views.py:1484 msgid "Delete Stock Item" msgstr "Lagerobjekt löschen" -#: stock/views.py:1492 +#: stock/views.py:1495 msgid "Delete Stock Tracking Entry" msgstr "Lagerbestands-Tracking-Eintrag löschen" -#: stock/views.py:1509 +#: stock/views.py:1512 msgid "Edit Stock Tracking Entry" msgstr "Lagerbestands-Tracking-Eintrag bearbeiten" -#: stock/views.py:1518 +#: stock/views.py:1521 msgid "Add Stock Tracking Entry" msgstr "Lagerbestands-Tracking-Eintrag hinzufügen" @@ -3784,11 +3875,11 @@ msgstr "Teilparametervorlage bearbeiten" msgid "No part parameter templates found" msgstr "Keine Teilparametervorlagen gefunden" -#: templates/InvenTree/settings/part.html:47 +#: templates/InvenTree/settings/part.html:48 msgid "Edit Template" msgstr "Vorlage bearbeiten" -#: templates/InvenTree/settings/part.html:48 +#: templates/InvenTree/settings/part.html:49 msgid "Delete Template" msgstr "Vorlage löschen" @@ -3959,27 +4050,27 @@ msgstr "Neues Lagerobjekt hinzufügen" msgid "Open subassembly" msgstr "Unterbaugruppe öffnen" -#: templates/js/bom.html:194 templates/js/build.html:113 +#: templates/js/bom.html:195 templates/js/build.html:115 msgid "Available" msgstr "verfügbar" -#: templates/js/bom.html:219 +#: templates/js/bom.html:220 msgid "No pricing available" msgstr "Keine Preisinformation verfügbar" -#: templates/js/bom.html:239 +#: templates/js/bom.html:242 msgid "Validate BOM Item" msgstr "BOM-Position validieren" -#: templates/js/bom.html:240 +#: templates/js/bom.html:243 msgid "This line has been validated" msgstr "Diese Position wurde validiert" -#: templates/js/bom.html:242 +#: templates/js/bom.html:245 msgid "Edit BOM Item" msgstr "BOM-Position bearbeiten" -#: templates/js/bom.html:243 +#: templates/js/bom.html:246 msgid "Delete BOM Item" msgstr "BOM-Position löschen" @@ -3987,7 +4078,7 @@ msgstr "BOM-Position löschen" msgid "No builds matching query" msgstr "Keine Baue passen zur Anfrage" -#: templates/js/build.html:102 +#: templates/js/build.html:104 msgid "No parts allocated for" msgstr "Keine Teile zugeordnet zu" @@ -3995,93 +4086,99 @@ msgstr "Keine Teile zugeordnet zu" msgid "No company information found" msgstr "Keine Firmeninformation gefunden" -#: templates/js/company.html:101 +#: templates/js/company.html:106 msgid "No supplier parts found" msgstr "Keine Zuliefererteile gefunden" -#: templates/js/company.html:117 templates/js/part.html:145 +#: templates/js/company.html:123 templates/js/part.html:237 msgid "Template part" msgstr "Vorlagenteil" -#: templates/js/company.html:121 templates/js/part.html:149 +#: templates/js/company.html:127 templates/js/part.html:241 msgid "Assembled part" msgstr "Baugruppe" -#: templates/js/company.html:178 +#: templates/js/company.html:184 msgid "Link" msgstr "Link" -#: templates/js/order.html:126 +#: templates/js/order.html:127 msgid "No purchase orders found" msgstr "Keine Bestellungen gefunden" -#: templates/js/order.html:170 templates/js/stock.html:625 +#: templates/js/order.html:172 templates/js/stock.html:629 msgid "Date" msgstr "Datum" -#: templates/js/order.html:199 +#: templates/js/order.html:202 msgid "No sales orders found" msgstr "Keine Aufträge gefunden" -#: templates/js/order.html:248 +#: templates/js/order.html:252 msgid "Shipment Date" msgstr "Versanddatum" -#: templates/js/part.html:106 templates/js/stock.html:406 +#: templates/js/part.html:134 +#, fuzzy +#| msgid "No parts found" +msgid "No variants found" +msgstr "Keine Teile gefunden" + +#: templates/js/part.html:198 templates/js/stock.html:409 msgid "Select" msgstr "Auswählen" -#: templates/js/part.html:153 +#: templates/js/part.html:245 msgid "Starred part" msgstr "Favoritenteil" -#: templates/js/part.html:157 +#: templates/js/part.html:249 msgid "Salable part" msgstr "Verkäufliches Teil" -#: templates/js/part.html:196 +#: templates/js/part.html:288 msgid "No category" msgstr "Keine Kategorie" -#: templates/js/part.html:214 templates/js/table_filters.html:167 +#: templates/js/part.html:306 templates/js/table_filters.html:167 msgid "Low stock" msgstr "Bestand niedrig" -#: templates/js/part.html:223 +#: templates/js/part.html:315 msgid "Building" msgstr "Im Bau" -#: templates/js/part.html:241 +#: templates/js/part.html:334 msgid "No parts found" msgstr "Keine Teile gefunden" -#: templates/js/part.html:301 +#: templates/js/part.html:394 msgid "YES" msgstr "" -#: templates/js/part.html:303 +#: templates/js/part.html:396 msgid "NO" msgstr "" -#: templates/js/part.html:337 +#: templates/js/part.html:430 #, fuzzy #| msgid "No stock items matching query" msgid "No test templates matching query" msgstr "Keine zur Anfrage passenden Lagerobjekte" -#: templates/js/part.html:387 templates/js/stock.html:63 +#: templates/js/part.html:481 templates/js/stock.html:63 #, fuzzy #| msgid "Edit Sales Order" msgid "Edit test result" msgstr "Auftrag bearbeiten" -#: templates/js/part.html:388 templates/js/stock.html:64 +#: templates/js/part.html:482 templates/js/stock.html:64 #, fuzzy #| msgid "Delete attachment" msgid "Delete test result" msgstr "Anhang löschen" -#: templates/js/part.html:394 +#: templates/js/part.html:488 msgid "This test is defined for a parent part" msgstr "" @@ -4103,84 +4200,92 @@ msgstr "" msgid "Add test result" msgstr "Auftrag bearbeiten" -#: templates/js/stock.html:77 +#: templates/js/stock.html:78 #, fuzzy #| msgid "No results found" msgid "No test results found" msgstr "Keine Ergebnisse gefunden" -#: templates/js/stock.html:118 +#: templates/js/stock.html:120 #, fuzzy #| msgid "Shipment Date" msgid "Test Date" msgstr "Versanddatum" -#: templates/js/stock.html:261 +#: templates/js/stock.html:263 msgid "No stock items matching query" msgstr "Keine zur Anfrage passenden Lagerobjekte" -#: templates/js/stock.html:358 templates/js/stock.html:373 +#: templates/js/stock.html:361 templates/js/stock.html:376 #, fuzzy #| msgid "Include sublocations" msgid "Undefined location" msgstr "Unterlagerorte einschließen" -#: templates/js/stock.html:464 +#: templates/js/stock.html:468 #, fuzzy #| msgid "StockItem has been allocated" msgid "Stock item has been allocated" msgstr "Lagerobjekt wurde zugewiesen" -#: templates/js/stock.html:468 +#: templates/js/stock.html:472 #, fuzzy #| msgid "StockItem has been allocated" msgid "Stock item has been assigned to customer" msgstr "Lagerobjekt wurde zugewiesen" -#: templates/js/stock.html:470 +#: templates/js/stock.html:474 #, fuzzy #| msgid "This stock item is allocated to Sales Order" msgid "Stock item was assigned to a build order" msgstr "Dieses Lagerobjekt ist dem Auftrag zugewiesen" -#: templates/js/stock.html:472 +#: templates/js/stock.html:476 #, fuzzy #| msgid "This stock item is allocated to Sales Order" msgid "Stock item was assigned to a sales order" msgstr "Dieses Lagerobjekt ist dem Auftrag zugewiesen" -#: templates/js/stock.html:479 +#: templates/js/stock.html:483 #, fuzzy #| msgid "StockItem has been allocated" msgid "Stock item has been rejected" msgstr "Lagerobjekt wurde zugewiesen" -#: templates/js/stock.html:483 +#: templates/js/stock.html:487 #, fuzzy #| msgid "StockItem is lost" msgid "Stock item is lost" msgstr "Lagerobjekt verloren" -#: templates/js/stock.html:487 templates/js/table_filters.html:52 +#: templates/js/stock.html:491 templates/js/table_filters.html:52 #, fuzzy #| msgid "Delete" msgid "Depleted" msgstr "Löschen" -#: templates/js/stock.html:516 +#: templates/js/stock.html:520 #, fuzzy #| msgid "Item assigned to customer?" msgid "Shipped to customer" msgstr "Ist dieses Objekt einem Kunden zugeteilt?" -#: templates/js/stock.html:519 +#: templates/js/stock.html:523 msgid "No stock location set" msgstr "Kein Lagerort gesetzt" -#: templates/js/stock.html:691 +#: templates/js/stock.html:695 msgid "No user information" msgstr "Keine Benutzerinformation" +#: templates/js/stock.html:779 +msgid "Create New Part" +msgstr "Neues Teil anlegen" + +#: templates/js/stock.html:791 +msgid "Create New Location" +msgstr "Neuen Standort anlegen" + #: templates/js/table_filters.html:19 templates/js/table_filters.html:67 #, fuzzy #| msgid "Serialize Stock" @@ -4297,39 +4402,39 @@ msgstr "Favorit" msgid "Purchasable" msgstr "Käuflich" -#: templates/navbar.html:14 +#: templates/navbar.html:22 msgid "Buy" msgstr "Kaufen" -#: templates/navbar.html:22 +#: templates/navbar.html:30 msgid "Sell" msgstr "Verkaufen" -#: templates/navbar.html:32 +#: templates/navbar.html:40 msgid "Scan Barcode" msgstr "" -#: templates/navbar.html:41 +#: templates/navbar.html:49 msgid "Admin" msgstr "Admin" -#: templates/navbar.html:44 +#: templates/navbar.html:52 msgid "Settings" msgstr "Einstellungen" -#: templates/navbar.html:45 +#: templates/navbar.html:53 msgid "Logout" msgstr "Ausloggen" -#: templates/navbar.html:47 +#: templates/navbar.html:55 msgid "Login" msgstr "Einloggen" -#: templates/navbar.html:50 +#: templates/navbar.html:58 msgid "About InvenTree" msgstr "Über InvenBaum" -#: templates/navbar.html:51 +#: templates/navbar.html:59 msgid "Statistics" msgstr "Statistiken" @@ -4349,6 +4454,18 @@ msgstr "Bestand bestellen" msgid "Delete Stock" msgstr "Bestand löschen" +#~ msgid "Part cannot be added to its own Bill of Materials" +#~ msgstr "Teil kann nicht zu seiner eigenen Stückliste hinzugefügt werden" + +#, fuzzy +#~| msgid "" +#~| "This stock item is serialized - it has a unique serial number and the " +#~| "quantity cannot be adjusted." +#~ msgid "Stock item is serialized and quantity cannot be adjusted" +#~ msgstr "" +#~ "Dieses Lagerobjekt ist serialisiert. Es hat eine eindeutige Seriennummer " +#~ "und die Anzahl kann nicht angepasst werden." + #~ msgid "Used for Build" #~ msgstr "Verwendet für Bau" diff --git a/InvenTree/locale/en/LC_MESSAGES/django.po b/InvenTree/locale/en/LC_MESSAGES/django.po index 8103534f63..bddb8825ea 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: 2020-08-18 04:01+0000\n" +"POT-Creation-Date: 2020-09-02 13:54+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -50,22 +50,26 @@ msgstr "" msgid "Empty serial number string" msgstr "" -#: InvenTree/helpers.py:360 InvenTree/helpers.py:377 +#: InvenTree/helpers.py:360 #, python-brace-format msgid "Duplicate serial: {n}" msgstr "" #: InvenTree/helpers.py:364 InvenTree/helpers.py:367 InvenTree/helpers.py:370 -#: InvenTree/helpers.py:381 #, python-brace-format msgid "Invalid group: {g}" msgstr "" -#: InvenTree/helpers.py:387 +#: InvenTree/helpers.py:375 +#, python-brace-format +msgid "Duplicate serial: {g}" +msgstr "" + +#: InvenTree/helpers.py:383 msgid "No serial numbers found" msgstr "" -#: InvenTree/helpers.py:391 +#: InvenTree/helpers.py:387 #, python-brace-format msgid "Number of unique serial number ({s}) must match quantity ({q})" msgstr "" @@ -78,11 +82,12 @@ msgstr "" msgid "File comment" msgstr "" -#: InvenTree/models.py:68 templates/js/stock.html:682 +#: InvenTree/models.py:68 templates/js/stock.html:686 msgid "User" msgstr "" #: InvenTree/models.py:106 part/templates/part/params.html:20 +#: templates/js/part.html:81 msgid "Name" msgstr "" @@ -90,19 +95,19 @@ msgstr "" msgid "Description (optional)" msgstr "" -#: InvenTree/settings.py:335 +#: InvenTree/settings.py:338 msgid "English" msgstr "" -#: InvenTree/settings.py:336 +#: InvenTree/settings.py:339 msgid "German" msgstr "" -#: InvenTree/settings.py:337 +#: InvenTree/settings.py:340 msgid "French" msgstr "" -#: InvenTree/settings.py:338 +#: InvenTree/settings.py:341 msgid "Polish" msgstr "" @@ -159,8 +164,8 @@ msgid "Rejected" msgstr "" #: InvenTree/status_codes.py:223 build/templates/build/allocate.html:349 -#: order/templates/order/sales_order_detail.html:220 -#: part/templates/part/tabs.html:23 templates/js/build.html:120 +#: order/templates/order/sales_order_detail.html:221 +#: part/templates/part/tabs.html:23 templates/js/build.html:122 msgid "Allocated" msgstr "" @@ -241,7 +246,7 @@ msgstr "" msgid "Serial numbers" msgstr "" -#: build/forms.py:64 stock/forms.py:105 +#: build/forms.py:64 stock/forms.py:107 msgid "Enter unique serial numbers (or leave blank)" msgstr "" @@ -274,13 +279,13 @@ msgstr "" #: build/templates/build/build_base.html:70 #: build/templates/build/detail.html:22 order/models.py:501 #: order/templates/order/order_wizard/select_parts.html:30 -#: order/templates/order/purchase_order_detail.html:145 -#: order/templates/order/receive_parts.html:19 part/models.py:240 +#: order/templates/order/purchase_order_detail.html:147 +#: order/templates/order/receive_parts.html:19 part/models.py:239 #: part/templates/part/part_app_base.html:7 #: part/templates/part/set_category.html:13 templates/js/barcode.html:336 -#: templates/js/bom.html:135 templates/js/build.html:41 -#: templates/js/company.html:109 templates/js/part.html:120 -#: templates/js/stock.html:425 +#: templates/js/bom.html:135 templates/js/build.html:43 +#: templates/js/company.html:115 templates/js/part.html:212 +#: templates/js/stock.html:429 msgid "Part" msgstr "" @@ -333,8 +338,8 @@ msgstr "" #: build/models.py:155 build/templates/build/detail.html:55 #: company/templates/company/supplier_part_base.html:60 #: company/templates/company/supplier_part_detail.html:24 -#: part/templates/part/detail.html:74 part/templates/part/part_base.html:86 -#: stock/models.py:365 stock/templates/stock/item_base.html:234 +#: part/templates/part/detail.html:80 part/templates/part/part_base.html:86 +#: stock/models.py:365 stock/templates/stock/item_base.html:232 msgid "External Link" msgstr "" @@ -344,11 +349,11 @@ msgstr "" #: build/models.py:160 build/templates/build/tabs.html:14 company/models.py:310 #: company/templates/company/tabs.html:33 order/templates/order/po_tabs.html:15 -#: order/templates/order/purchase_order_detail.html:200 +#: order/templates/order/purchase_order_detail.html:202 #: order/templates/order/so_tabs.html:23 part/templates/part/tabs.html:64 -#: stock/models.py:433 stock/models.py:1282 stock/templates/stock/tabs.html:26 -#: templates/js/barcode.html:391 templates/js/bom.html:229 -#: templates/js/stock.html:114 templates/js/stock.html:526 +#: stock/models.py:433 stock/models.py:1279 stock/templates/stock/tabs.html:26 +#: templates/js/barcode.html:391 templates/js/bom.html:230 +#: templates/js/stock.html:116 templates/js/stock.html:530 msgid "Notes" msgstr "" @@ -414,7 +419,7 @@ msgstr "" #: build/templates/build/allocate.html:161 #: order/templates/order/sales_order_detail.html:68 #: order/templates/order/sales_order_detail.html:150 stock/models.py:359 -#: stock/templates/stock/item_base.html:150 +#: stock/templates/stock/item_base.html:148 msgid "Serial Number" msgstr "" @@ -424,62 +429,63 @@ msgstr "" #: build/templates/build/detail.html:27 #: company/templates/company/supplier_part_pricing.html:27 #: order/templates/order/order_wizard/select_parts.html:32 -#: order/templates/order/purchase_order_detail.html:175 +#: order/templates/order/purchase_order_detail.html:177 #: order/templates/order/sales_order_detail.html:70 #: order/templates/order/sales_order_detail.html:152 #: part/templates/part/allocation.html:16 #: part/templates/part/allocation.html:49 #: stock/templates/stock/item_base.html:26 #: stock/templates/stock/item_base.html:32 -#: stock/templates/stock/item_base.html:156 +#: stock/templates/stock/item_base.html:154 #: stock/templates/stock/stock_adjust.html:18 templates/js/barcode.html:338 -#: templates/js/bom.html:172 templates/js/build.html:52 -#: templates/js/stock.html:673 +#: templates/js/bom.html:173 templates/js/build.html:54 +#: templates/js/stock.html:677 msgid "Quantity" msgstr "" #: build/templates/build/allocate.html:177 #: build/templates/build/auto_allocate.html:20 -#: stock/templates/stock/item_base.html:188 +#: stock/templates/stock/item_base.html:186 #: stock/templates/stock/stock_adjust.html:17 templates/js/barcode.html:337 -#: templates/js/stock.html:508 +#: templates/js/stock.html:512 msgid "Location" msgstr "" #: build/templates/build/allocate.html:201 -#: order/templates/order/sales_order_detail.html:92 templates/js/build.html:124 +#: order/templates/order/sales_order_detail.html:92 templates/js/build.html:126 msgid "Edit stock allocation" msgstr "" #: build/templates/build/allocate.html:202 -#: order/templates/order/sales_order_detail.html:93 templates/js/build.html:125 +#: order/templates/order/sales_order_detail.html:93 templates/js/build.html:127 msgid "Delete stock allocation" msgstr "" -#: build/templates/build/allocate.html:229 templates/js/bom.html:288 +#: build/templates/build/allocate.html:229 templates/js/bom.html:334 msgid "No BOM items found" msgstr "" #: build/templates/build/allocate.html:328 #: company/templates/company/supplier_part_base.html:53 #: company/templates/company/supplier_part_detail.html:27 -#: order/templates/order/purchase_order_detail.html:157 -#: part/templates/part/detail.html:45 part/templates/part/set_category.html:14 -#: templates/js/bom.html:157 templates/js/company.html:60 -#: templates/js/order.html:157 templates/js/order.html:230 -#: templates/js/part.html:176 templates/js/part.html:355 -#: templates/js/stock.html:440 templates/js/stock.html:654 +#: order/templates/order/purchase_order_detail.html:159 +#: part/templates/part/detail.html:51 part/templates/part/set_category.html:14 +#: templates/js/bom.html:158 templates/js/company.html:64 +#: templates/js/order.html:159 templates/js/order.html:234 +#: templates/js/part.html:120 templates/js/part.html:268 +#: templates/js/part.html:449 templates/js/stock.html:444 +#: templates/js/stock.html:658 msgid "Description" msgstr "" #: build/templates/build/allocate.html:333 -#: order/templates/order/purchase_order_detail.html:170 -#: templates/js/bom.html:164 +#: order/templates/order/purchase_order_detail.html:172 +#: templates/js/bom.html:165 msgid "Reference" msgstr "" -#: build/templates/build/allocate.html:338 part/models.py:1271 -#: templates/js/part.html:359 templates/js/table_filters.html:100 +#: build/templates/build/allocate.html:338 part/models.py:1320 +#: templates/js/part.html:453 templates/js/table_filters.html:100 msgid "Required" msgstr "" @@ -488,12 +494,12 @@ msgid "Assigned" msgstr "" #: build/templates/build/allocate.html:385 -#: order/templates/order/sales_order_detail.html:270 +#: order/templates/order/sales_order_detail.html:271 msgid "Buy parts" msgstr "" #: build/templates/build/allocate.html:389 -#: order/templates/order/sales_order_detail.html:274 +#: order/templates/order/sales_order_detail.html:275 msgid "Build parts" msgstr "" @@ -522,8 +528,8 @@ msgstr "" #: build/templates/build/build_base.html:8 #: build/templates/build/build_base.html:34 #: build/templates/build/complete.html:6 -#: stock/templates/stock/item_base.html:213 templates/js/build.html:33 -#: templates/navbar.html:12 +#: stock/templates/stock/item_base.html:211 templates/js/build.html:35 +#: templates/navbar.html:20 msgid "Build" msgstr "" @@ -542,9 +548,9 @@ msgstr "" #: build/templates/build/build_base.html:80 #: build/templates/build/detail.html:42 #: order/templates/order/receive_parts.html:24 -#: stock/templates/stock/item_base.html:266 templates/js/barcode.html:42 -#: templates/js/build.html:57 templates/js/order.html:162 -#: templates/js/order.html:235 templates/js/stock.html:495 +#: stock/templates/stock/item_base.html:264 templates/js/barcode.html:42 +#: templates/js/build.html:59 templates/js/order.html:164 +#: templates/js/order.html:239 templates/js/stock.html:499 msgid "Status" msgstr "" @@ -554,7 +560,7 @@ msgstr "" #: order/templates/order/sales_order_notes.html:10 #: order/templates/order/sales_order_ship.html:25 #: part/templates/part/allocation.html:27 -#: stock/templates/stock/item_base.html:176 templates/js/order.html:209 +#: stock/templates/stock/item_base.html:174 templates/js/order.html:213 msgid "Sales Order" msgstr "" @@ -621,13 +627,13 @@ msgid "Stock can be taken from any available location." msgstr "" #: build/templates/build/detail.html:48 -#: stock/templates/stock/item_base.html:206 templates/js/stock.html:503 +#: stock/templates/stock/item_base.html:204 templates/js/stock.html:507 msgid "Batch" msgstr "" #: build/templates/build/detail.html:61 #: order/templates/order/order_base.html:93 -#: order/templates/order/sales_order_base.html:92 templates/js/build.html:65 +#: order/templates/order/sales_order_base.html:92 templates/js/build.html:67 msgid "Created" msgstr "" @@ -643,7 +649,7 @@ msgstr "" msgid "No" msgstr "" -#: build/templates/build/detail.html:80 templates/js/build.html:70 +#: build/templates/build/detail.html:80 templates/js/build.html:72 msgid "Completed" msgstr "" @@ -716,7 +722,7 @@ msgstr "" msgid "Check the confirmation box at the bottom of the list" msgstr "" -#: build/views.py:148 build/views.py:456 +#: build/views.py:148 build/views.py:452 msgid "Unallocate Stock" msgstr "" @@ -724,7 +730,7 @@ msgstr "" msgid "Confirm unallocation of build stock" msgstr "" -#: build/views.py:162 stock/views.py:404 +#: build/views.py:162 stock/views.py:405 msgid "Check the confirmation box" msgstr "" @@ -732,64 +738,56 @@ msgstr "" msgid "Complete Build" msgstr "" -#: build/views.py:201 stock/views.py:1236 stock/views.py:1350 -msgid "Next available serial number is" -msgstr "" - -#: build/views.py:203 -msgid "Next available serial numbers are" -msgstr "" - -#: build/views.py:268 +#: build/views.py:264 msgid "Confirm completion of build" msgstr "" -#: build/views.py:275 +#: build/views.py:271 msgid "Invalid location selected" msgstr "" -#: build/views.py:300 stock/views.py:1386 +#: build/views.py:296 stock/views.py:1389 #, python-brace-format msgid "The following serial numbers already exist: ({sn})" msgstr "" -#: build/views.py:321 +#: build/views.py:317 msgid "Build marked as COMPLETE" msgstr "" -#: build/views.py:397 +#: build/views.py:393 msgid "Start new Build" msgstr "" -#: build/views.py:422 +#: build/views.py:418 msgid "Created new build" msgstr "" -#: build/views.py:432 +#: build/views.py:428 msgid "Edit Build Details" msgstr "" -#: build/views.py:437 +#: build/views.py:433 msgid "Edited build" msgstr "" -#: build/views.py:446 +#: build/views.py:442 msgid "Delete Build" msgstr "" -#: build/views.py:461 +#: build/views.py:457 msgid "Removed parts from build allocation" msgstr "" -#: build/views.py:471 +#: build/views.py:467 msgid "Allocate new Part" msgstr "" -#: build/views.py:624 +#: build/views.py:620 msgid "Edit Stock Allocation" msgstr "" -#: build/views.py:628 +#: build/views.py:624 msgid "Updated Build Item" msgstr "" @@ -854,7 +852,7 @@ msgid "Description of the company" msgstr "" #: company/models.py:91 company/templates/company/company_base.html:48 -#: templates/js/company.html:65 +#: templates/js/company.html:69 msgid "Website" msgstr "" @@ -911,7 +909,7 @@ msgid "Does this company manufacture parts?" msgstr "" #: company/models.py:279 stock/models.py:319 -#: stock/templates/stock/item_base.html:142 +#: stock/templates/stock/item_base.html:140 msgid "Base Part" msgstr "" @@ -957,7 +955,7 @@ msgid "Assigned Stock" msgstr "" #: company/templates/company/company_base.html:7 -#: company/templates/company/company_base.html:22 templates/js/company.html:38 +#: company/templates/company/company_base.html:22 templates/js/company.html:41 msgid "Company" msgstr "" @@ -972,25 +970,25 @@ msgstr "" #: company/templates/company/detail.html:16 #: company/templates/company/supplier_part_base.html:76 -#: company/templates/company/supplier_part_detail.html:30 -#: templates/js/company.html:48 templates/js/company.html:158 +#: company/templates/company/supplier_part_detail.html:30 part/bom.py:172 +#: templates/js/company.html:52 templates/js/company.html:164 msgid "Manufacturer" msgstr "" #: company/templates/company/detail.html:21 #: company/templates/company/supplier_part_base.html:66 -#: company/templates/company/supplier_part_detail.html:21 order/models.py:148 +#: company/templates/company/supplier_part_detail.html:21 #: order/templates/order/order_base.html:74 -#: order/templates/order/order_wizard/select_pos.html:30 -#: stock/templates/stock/item_base.html:241 templates/js/company.html:52 -#: templates/js/company.html:134 templates/js/order.html:144 +#: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:170 +#: stock/templates/stock/item_base.html:239 templates/js/company.html:56 +#: templates/js/company.html:140 templates/js/order.html:146 msgid "Supplier" msgstr "" -#: company/templates/company/detail.html:26 order/models.py:314 +#: company/templates/company/detail.html:26 #: order/templates/order/sales_order_base.html:73 stock/models.py:354 -#: stock/models.py:355 stock/templates/stock/item_base.html:163 -#: templates/js/company.html:44 templates/js/order.html:217 +#: stock/models.py:355 stock/templates/stock/item_base.html:161 +#: templates/js/company.html:48 templates/js/order.html:221 msgid "Customer" msgstr "" @@ -1000,7 +998,7 @@ msgstr "" #: company/templates/company/detail_part.html:13 #: order/templates/order/purchase_order_detail.html:67 -#: part/templates/part/stock.html:81 part/templates/part/supplier.html:12 +#: part/templates/part/supplier.html:12 templates/js/stock.html:784 msgid "New Supplier Part" msgstr "" @@ -1013,8 +1011,7 @@ msgstr "" msgid "Delete Parts" msgstr "" -#: company/templates/company/detail_part.html:43 -#: part/templates/part/stock.html:75 +#: company/templates/company/detail_part.html:43 templates/js/stock.html:778 msgid "New Part" msgstr "" @@ -1046,7 +1043,7 @@ msgstr "" #: company/templates/company/detail_stock.html:35 #: company/templates/company/supplier_part_stock.html:33 -#: part/templates/part/stock.html:53 templates/stock_table.html:5 +#: part/templates/part/stock.html:51 templates/stock_table.html:5 msgid "Export" msgstr "" @@ -1068,7 +1065,7 @@ msgstr "" #: order/templates/order/purchase_orders.html:7 #: order/templates/order/purchase_orders.html:12 #: part/templates/part/orders.html:9 part/templates/part/tabs.html:45 -#: templates/navbar.html:18 +#: templates/navbar.html:26 msgid "Purchase Orders" msgstr "" @@ -1087,7 +1084,7 @@ msgstr "" #: order/templates/order/sales_orders.html:7 #: order/templates/order/sales_orders.html:12 #: part/templates/part/sales_orders.html:9 part/templates/part/tabs.html:50 -#: templates/navbar.html:25 +#: templates/navbar.html:33 msgid "Sales Orders" msgstr "" @@ -1103,7 +1100,7 @@ msgstr "" #: company/templates/company/supplier_part_base.html:6 #: company/templates/company/supplier_part_base.html:19 stock/models.py:328 -#: stock/templates/stock/item_base.html:246 templates/js/company.html:150 +#: stock/templates/stock/item_base.html:244 templates/js/company.html:156 msgid "Supplier Part" msgstr "" @@ -1131,13 +1128,13 @@ msgid "Internal Part" msgstr "" #: company/templates/company/supplier_part_base.html:70 -#: company/templates/company/supplier_part_detail.html:22 +#: company/templates/company/supplier_part_detail.html:22 part/bom.py:171 msgid "SKU" msgstr "" #: company/templates/company/supplier_part_base.html:80 -#: company/templates/company/supplier_part_detail.html:31 -#: templates/js/company.html:174 +#: company/templates/company/supplier_part_detail.html:31 part/bom.py:173 +#: templates/js/company.html:180 msgid "MPN" msgstr "" @@ -1171,7 +1168,7 @@ msgid "New Price Break" msgstr "" #: company/templates/company/supplier_part_pricing.html:28 -#: templates/js/bom.html:213 +#: templates/js/bom.html:214 msgid "Price" msgstr "" @@ -1183,26 +1180,15 @@ msgstr "" msgid "Supplier Part Stock" msgstr "" -#: company/templates/company/supplier_part_stock.html:56 -#: order/templates/order/purchase_order_detail.html:38 -#: order/templates/order/purchase_order_detail.html:118 -#: part/templates/part/stock.html:90 -msgid "New Location" -msgstr "" - -#: company/templates/company/supplier_part_stock.html:57 -#: part/templates/part/stock.html:91 -msgid "Create New Location" -msgstr "" - #: company/templates/company/supplier_part_tabs.html:5 msgid "Pricing" msgstr "" #: company/templates/company/supplier_part_tabs.html:8 #: company/templates/company/tabs.html:12 part/templates/part/tabs.html:18 -#: stock/templates/stock/location.html:12 templates/js/part.html:203 -#: templates/js/stock.html:448 templates/navbar.html:11 +#: stock/templates/stock/location.html:12 templates/js/part.html:124 +#: templates/js/part.html:295 templates/js/stock.html:452 +#: templates/navbar.html:19 msgid "Stock" msgstr "" @@ -1211,22 +1197,22 @@ msgid "Orders" msgstr "" #: company/templates/company/tabs.html:9 -#: order/templates/order/receive_parts.html:14 part/models.py:241 -#: part/templates/part/category.html:83 templates/navbar.html:10 +#: order/templates/order/receive_parts.html:14 part/models.py:240 +#: part/templates/part/category.html:83 templates/navbar.html:18 #: templates/stats.html:8 templates/stats.html:17 msgid "Parts" msgstr "" #: company/views.py:50 part/templates/part/tabs.html:39 -#: templates/navbar.html:16 +#: templates/navbar.html:24 msgid "Suppliers" msgstr "" -#: company/views.py:56 templates/navbar.html:17 +#: company/views.py:56 templates/navbar.html:25 msgid "Manufacturers" msgstr "" -#: company/views.py:62 templates/navbar.html:24 +#: company/views.py:62 templates/navbar.html:32 msgid "Customers" msgstr "" @@ -1282,7 +1268,7 @@ msgstr "" msgid "Edit Supplier Part" msgstr "" -#: company/views.py:265 part/templates/part/stock.html:82 +#: company/views.py:265 templates/js/stock.html:785 msgid "Create new Supplier Part" msgstr "" @@ -1318,6 +1304,14 @@ msgstr "" msgid "Query filters (comma-separated list of key=value pairs" msgstr "" +#: label/models.py:75 +msgid "Label template is enabled" +msgstr "" + +#: label/models.py:76 report/models.py:153 +msgid "Enabled" +msgstr "" + #: order/forms.py:24 msgid "Place order" msgstr "" @@ -1363,10 +1357,26 @@ msgstr "" msgid "Order notes" msgstr "" +#: order/models.py:140 order/models.py:318 +msgid "Purchase order status" +msgstr "" + +#: order/models.py:148 +msgid "Company from which the items are being ordered" +msgstr "" + #: order/models.py:151 msgid "Supplier order reference code" msgstr "" +#: order/models.py:160 +msgid "Date order was issued" +msgstr "" + +#: order/models.py:162 +msgid "Date order was completed" +msgstr "" + #: order/models.py:185 order/models.py:259 part/views.py:1250 #: stock/models.py:239 stock/models.py:682 msgid "Quantity must be greater than zero" @@ -1380,6 +1390,10 @@ msgstr "" msgid "Lines can only be received against an order marked as 'Placed'" msgstr "" +#: order/models.py:314 +msgid "Company to which the items are being sold" +msgstr "" + #: order/models.py:320 msgid "Customer order reference code" msgstr "" @@ -1402,7 +1416,7 @@ msgstr "" #: order/models.py:466 order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:23 -#: stock/templates/stock/item_base.html:220 templates/js/order.html:136 +#: stock/templates/stock/item_base.html:218 templates/js/order.html:138 msgid "Purchase Order" msgstr "" @@ -1458,7 +1472,7 @@ msgstr "" msgid "Order Status" msgstr "" -#: order/templates/order/order_base.html:80 templates/js/order.html:151 +#: order/templates/order/order_base.html:80 templates/js/order.html:153 msgid "Supplier Reference" msgstr "" @@ -1467,7 +1481,7 @@ msgid "Issued" msgstr "" #: order/templates/order/order_base.html:106 -#: order/templates/order/purchase_order_detail.html:180 +#: order/templates/order/purchase_order_detail.html:182 #: order/templates/order/receive_parts.html:22 #: order/templates/order/sales_order_base.html:105 msgid "Received" @@ -1514,8 +1528,8 @@ msgid "Select existing purchase orders, or create new orders." msgstr "" #: order/templates/order/order_wizard/select_pos.html:31 -#: order/templates/order/po_tabs.html:5 templates/js/order.html:175 -#: templates/js/order.html:253 +#: order/templates/order/po_tabs.html:5 templates/js/order.html:177 +#: templates/js/order.html:257 msgid "Items" msgstr "" @@ -1546,6 +1560,12 @@ msgstr "" msgid "Purchase Order Items" msgstr "" +#: order/templates/order/purchase_order_detail.html:38 +#: order/templates/order/purchase_order_detail.html:118 +#: templates/js/stock.html:790 +msgid "New Location" +msgstr "" + #: order/templates/order/purchase_order_detail.html:39 #: order/templates/order/purchase_order_detail.html:119 #: stock/templates/stock/location.html:16 @@ -1556,25 +1576,25 @@ msgstr "" msgid "Create new supplier part" msgstr "" -#: order/templates/order/purchase_order_detail.html:130 +#: order/templates/order/purchase_order_detail.html:131 msgid "No line items found" msgstr "" -#: order/templates/order/purchase_order_detail.html:162 +#: order/templates/order/purchase_order_detail.html:164 #: order/templates/order/receive_parts.html:20 msgid "Order Code" msgstr "" -#: order/templates/order/purchase_order_detail.html:211 -#: order/templates/order/sales_order_detail.html:280 +#: order/templates/order/purchase_order_detail.html:213 +#: order/templates/order/sales_order_detail.html:281 msgid "Edit line item" msgstr "" -#: order/templates/order/purchase_order_detail.html:212 +#: order/templates/order/purchase_order_detail.html:214 msgid "Delete line item" msgstr "" -#: order/templates/order/purchase_order_detail.html:217 +#: order/templates/order/purchase_order_detail.html:219 msgid "Receive line item" msgstr "" @@ -1587,7 +1607,7 @@ msgid "Select parts to receive against this order" msgstr "" #: order/templates/order/receive_parts.html:21 -#: part/templates/part/part_base.html:129 templates/js/part.html:219 +#: part/templates/part/part_base.html:129 templates/js/part.html:311 msgid "On Order" msgstr "" @@ -1611,7 +1631,7 @@ msgstr "" msgid "Sales Order Details" msgstr "" -#: order/templates/order/sales_order_base.html:79 templates/js/order.html:224 +#: order/templates/order/sales_order_base.html:79 templates/js/order.html:228 msgid "Customer Reference" msgstr "" @@ -1625,15 +1645,15 @@ msgstr "" msgid "Sales Order Items" msgstr "" -#: order/templates/order/sales_order_detail.html:222 +#: order/templates/order/sales_order_detail.html:223 msgid "Fulfilled" msgstr "" -#: order/templates/order/sales_order_detail.html:277 +#: order/templates/order/sales_order_detail.html:278 msgid "Allocate parts" msgstr "" -#: order/templates/order/sales_order_detail.html:281 +#: order/templates/order/sales_order_detail.html:282 msgid "Delete line item " msgstr "" @@ -1819,24 +1839,33 @@ msgstr "" msgid "Remove allocation" msgstr "" -#: part/bom.py:144 +#: part/bom.py:138 part/templates/part/category.html:50 +#: part/templates/part/detail.html:87 +msgid "Default Location" +msgstr "" + +#: part/bom.py:139 part/templates/part/part_base.html:102 +msgid "Available Stock" +msgstr "" + +#: part/bom.py:274 #, python-brace-format msgid "Unsupported file format: {f}" msgstr "" -#: part/bom.py:149 +#: part/bom.py:279 msgid "Error reading BOM file (invalid data)" msgstr "" -#: part/bom.py:151 +#: part/bom.py:281 msgid "Error reading BOM file (incorrect row size)" msgstr "" -#: part/forms.py:55 stock/forms.py:243 +#: part/forms.py:55 stock/forms.py:250 msgid "File Format" msgstr "" -#: part/forms.py:55 stock/forms.py:243 +#: part/forms.py:55 stock/forms.py:250 msgid "Select output file format" msgstr "" @@ -1856,254 +1885,286 @@ msgstr "" msgid "Select maximum number of BOM levels to export (0 = all levels)" msgstr "" -#: part/forms.py:78 +#: part/forms.py:61 +msgid "Include Parameter Data" +msgstr "" + +#: part/forms.py:61 +msgid "Include part parameters data in exported BOM" +msgstr "" + +#: part/forms.py:63 +msgid "Include Stock Data" +msgstr "" + +#: part/forms.py:63 +msgid "Include part stock data in exported BOM" +msgstr "" + +#: part/forms.py:65 +msgid "Include Supplier Data" +msgstr "" + +#: part/forms.py:65 +msgid "Include part supplier data in exported BOM" +msgstr "" + +#: part/forms.py:84 msgid "Confirm that the BOM is correct" msgstr "" -#: part/forms.py:90 +#: part/forms.py:96 msgid "Select BOM file to upload" msgstr "" -#: part/forms.py:114 +#: part/forms.py:120 msgid "Select part category" msgstr "" -#: part/forms.py:128 +#: part/forms.py:134 msgid "Perform 'deep copy' which will duplicate all BOM data for this part" msgstr "" -#: part/forms.py:133 +#: part/forms.py:139 msgid "Confirm part creation" msgstr "" -#: part/forms.py:223 +#: part/forms.py:237 msgid "Input quantity for price calculation" msgstr "" -#: part/forms.py:226 +#: part/forms.py:240 msgid "Select currency for price calculation" msgstr "" -#: part/models.py:65 +#: part/models.py:64 msgid "Default location for parts in this category" msgstr "" -#: part/models.py:68 +#: part/models.py:67 msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:74 part/templates/part/part_app_base.html:9 +#: part/models.py:73 part/templates/part/part_app_base.html:9 msgid "Part Category" msgstr "" -#: part/models.py:75 part/templates/part/category.html:13 +#: part/models.py:74 part/templates/part/category.html:13 #: part/templates/part/category.html:78 templates/stats.html:12 msgid "Part Categories" msgstr "" -#: part/models.py:428 -msgid "Part must be unique for name, IPN and revision" -msgstr "" - -#: part/models.py:443 part/templates/part/detail.html:19 -msgid "Part name" -msgstr "" - -#: part/models.py:447 -msgid "Is this part a template part?" -msgstr "" - -#: part/models.py:456 -msgid "Is this part a variant of another part?" -msgstr "" - -#: part/models.py:458 -msgid "Part description" -msgstr "" - -#: part/models.py:460 -msgid "Part keywords to improve visibility in search results" -msgstr "" - -#: part/models.py:465 -msgid "Part category" -msgstr "" - -#: part/models.py:467 -msgid "Internal Part Number" -msgstr "" - -#: part/models.py:469 -msgid "Part revision or version number" -msgstr "" - -#: part/models.py:471 -msgid "Link to extenal URL" -msgstr "" - -#: part/models.py:483 -msgid "Where is this item normally stored?" -msgstr "" - -#: part/models.py:527 -msgid "Default supplier part" -msgstr "" - -#: part/models.py:530 -msgid "Minimum allowed stock level" -msgstr "" - -#: part/models.py:532 -msgid "Stock keeping units for this part" -msgstr "" - -#: part/models.py:534 -msgid "Can this part be built from other parts?" -msgstr "" - -#: part/models.py:536 -msgid "Can this part be used to build other parts?" -msgstr "" - -#: part/models.py:538 -msgid "Does this part have tracking for unique items?" -msgstr "" - -#: part/models.py:540 -msgid "Can this part be purchased from external suppliers?" -msgstr "" - -#: part/models.py:542 -msgid "Can this part be sold to customers?" -msgstr "" - -#: part/models.py:544 -msgid "Is this part active?" -msgstr "" - -#: part/models.py:546 -msgid "Is this a virtual part, such as a software product or license?" -msgstr "" - -#: part/models.py:548 -msgid "Part notes - supports Markdown formatting" -msgstr "" - -#: part/models.py:550 -msgid "Stored BOM checksum" -msgstr "" - -#: part/models.py:1223 -msgid "Test templates can only be created for trackable parts" -msgstr "" - -#: part/models.py:1240 -msgid "Test with this name already exists for this part" -msgstr "" - -#: part/models.py:1259 templates/js/part.html:350 templates/js/stock.html:90 -msgid "Test Name" -msgstr "" - -#: part/models.py:1260 -msgid "Enter a name for the test" -msgstr "" - -#: part/models.py:1265 -msgid "Test Description" -msgstr "" - -#: part/models.py:1266 -msgid "Enter description for this test" -msgstr "" - -#: part/models.py:1272 -msgid "Is this test required to pass?" -msgstr "" - -#: part/models.py:1277 templates/js/part.html:367 -msgid "Requires Value" -msgstr "" - -#: part/models.py:1278 -msgid "Does this test require a value when adding a test result?" -msgstr "" - -#: part/models.py:1283 templates/js/part.html:374 -msgid "Requires Attachment" -msgstr "" - -#: part/models.py:1284 -msgid "Does this test require a file attachment when adding a test result?" -msgstr "" - -#: part/models.py:1317 -msgid "Parameter template name must be unique" -msgstr "" - -#: part/models.py:1322 -msgid "Parameter Name" -msgstr "" - -#: part/models.py:1324 -msgid "Parameter Units" -msgstr "" - -#: part/models.py:1350 -msgid "Parent Part" -msgstr "" - -#: part/models.py:1352 -msgid "Parameter Template" -msgstr "" - -#: part/models.py:1354 -msgid "Parameter Value" -msgstr "" - -#: part/models.py:1383 -msgid "Select parent part" -msgstr "" - -#: part/models.py:1391 -msgid "Select part to be used in BOM" -msgstr "" - -#: part/models.py:1397 -msgid "BOM quantity for this BOM item" -msgstr "" - -#: part/models.py:1400 -msgid "Estimated build wastage quantity (absolute or percentage)" -msgstr "" - -#: part/models.py:1403 -msgid "BOM item reference" -msgstr "" - -#: part/models.py:1406 -msgid "BOM item notes" -msgstr "" - -#: part/models.py:1408 -msgid "BOM line checksum" -msgstr "" - -#: part/models.py:1472 part/views.py:1256 part/views.py:1308 -#: stock/models.py:229 -msgid "Quantity must be integer value for trackable parts" -msgstr "" - -#: part/models.py:1481 -msgid "Part cannot be added to its own Bill of Materials" -msgstr "" - -#: part/models.py:1488 +#: part/models.py:291 part/models.py:301 #, python-brace-format msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)" msgstr "" -#: part/models.py:1495 +#: part/models.py:381 +msgid "Next available serial numbers are" +msgstr "" + +#: part/models.py:385 +msgid "Next available serial number is" +msgstr "" + +#: part/models.py:390 +msgid "Most recent serial number is" +msgstr "" + +#: part/models.py:468 +msgid "Part must be unique for name, IPN and revision" +msgstr "" + +#: part/models.py:483 part/templates/part/detail.html:19 +msgid "Part name" +msgstr "" + +#: part/models.py:487 +msgid "Is this part a template part?" +msgstr "" + +#: part/models.py:496 +msgid "Is this part a variant of another part?" +msgstr "" + +#: part/models.py:498 +msgid "Part description" +msgstr "" + +#: part/models.py:500 +msgid "Part keywords to improve visibility in search results" +msgstr "" + +#: part/models.py:505 +msgid "Part category" +msgstr "" + +#: part/models.py:507 +msgid "Internal Part Number" +msgstr "" + +#: part/models.py:509 +msgid "Part revision or version number" +msgstr "" + +#: part/models.py:511 +msgid "Link to extenal URL" +msgstr "" + +#: part/models.py:523 +msgid "Where is this item normally stored?" +msgstr "" + +#: part/models.py:567 +msgid "Default supplier part" +msgstr "" + +#: part/models.py:570 +msgid "Minimum allowed stock level" +msgstr "" + +#: part/models.py:572 +msgid "Stock keeping units for this part" +msgstr "" + +#: part/models.py:574 +msgid "Can this part be built from other parts?" +msgstr "" + +#: part/models.py:576 +msgid "Can this part be used to build other parts?" +msgstr "" + +#: part/models.py:578 +msgid "Does this part have tracking for unique items?" +msgstr "" + +#: part/models.py:580 +msgid "Can this part be purchased from external suppliers?" +msgstr "" + +#: part/models.py:582 +msgid "Can this part be sold to customers?" +msgstr "" + +#: part/models.py:584 +msgid "Is this part active?" +msgstr "" + +#: part/models.py:586 +msgid "Is this a virtual part, such as a software product or license?" +msgstr "" + +#: part/models.py:588 +msgid "Part notes - supports Markdown formatting" +msgstr "" + +#: part/models.py:590 +msgid "Stored BOM checksum" +msgstr "" + +#: part/models.py:1272 +msgid "Test templates can only be created for trackable parts" +msgstr "" + +#: part/models.py:1289 +msgid "Test with this name already exists for this part" +msgstr "" + +#: part/models.py:1308 templates/js/part.html:444 templates/js/stock.html:92 +msgid "Test Name" +msgstr "" + +#: part/models.py:1309 +msgid "Enter a name for the test" +msgstr "" + +#: part/models.py:1314 +msgid "Test Description" +msgstr "" + +#: part/models.py:1315 +msgid "Enter description for this test" +msgstr "" + +#: part/models.py:1321 +msgid "Is this test required to pass?" +msgstr "" + +#: part/models.py:1326 templates/js/part.html:461 +msgid "Requires Value" +msgstr "" + +#: part/models.py:1327 +msgid "Does this test require a value when adding a test result?" +msgstr "" + +#: part/models.py:1332 templates/js/part.html:468 +msgid "Requires Attachment" +msgstr "" + +#: part/models.py:1333 +msgid "Does this test require a file attachment when adding a test result?" +msgstr "" + +#: part/models.py:1366 +msgid "Parameter template name must be unique" +msgstr "" + +#: part/models.py:1371 +msgid "Parameter Name" +msgstr "" + +#: part/models.py:1373 +msgid "Parameter Units" +msgstr "" + +#: part/models.py:1399 +msgid "Parent Part" +msgstr "" + +#: part/models.py:1401 +msgid "Parameter Template" +msgstr "" + +#: part/models.py:1403 +msgid "Parameter Value" +msgstr "" + +#: part/models.py:1432 +msgid "Select parent part" +msgstr "" + +#: part/models.py:1440 +msgid "Select part to be used in BOM" +msgstr "" + +#: part/models.py:1446 +msgid "BOM quantity for this BOM item" +msgstr "" + +#: part/models.py:1449 +msgid "Estimated build wastage quantity (absolute or percentage)" +msgstr "" + +#: part/models.py:1452 +msgid "BOM item reference" +msgstr "" + +#: part/models.py:1455 +msgid "BOM item notes" +msgstr "" + +#: part/models.py:1457 +msgid "BOM line checksum" +msgstr "" + +#: part/models.py:1521 part/views.py:1256 part/views.py:1308 +#: stock/models.py:229 +msgid "Quantity must be integer value for trackable parts" +msgstr "" + +#: part/models.py:1530 msgid "BOM Item" msgstr "" @@ -2122,14 +2183,14 @@ msgstr "" #: part/templates/part/allocation.html:45 #: stock/templates/stock/item_base.html:8 #: stock/templates/stock/item_base.html:58 -#: stock/templates/stock/item_base.html:228 -#: stock/templates/stock/stock_adjust.html:16 templates/js/build.html:106 -#: templates/js/stock.html:643 +#: stock/templates/stock/item_base.html:226 +#: stock/templates/stock/stock_adjust.html:16 templates/js/build.html:108 +#: templates/js/stock.html:647 msgid "Stock Item" msgstr "" #: part/templates/part/allocation.html:20 -#: stock/templates/stock/item_base.html:182 +#: stock/templates/stock/item_base.html:180 msgid "Build Order" msgstr "" @@ -2165,7 +2226,7 @@ msgstr "" msgid "Validate Bill of Materials" msgstr "" -#: part/templates/part/bom.html:46 part/views.py:1523 +#: part/templates/part/bom.html:46 part/views.py:1543 msgid "Export Bill of Materials" msgstr "" @@ -2253,11 +2314,7 @@ msgstr "" msgid "Category Description" msgstr "" -#: part/templates/part/category.html:50 part/templates/part/detail.html:81 -msgid "Default Location" -msgstr "" - -#: part/templates/part/category.html:57 part/templates/part/detail.html:58 +#: part/templates/part/category.html:57 part/templates/part/detail.html:64 msgid "Keywords" msgstr "" @@ -2274,140 +2331,145 @@ msgid "Part Details" msgstr "" #: part/templates/part/detail.html:25 part/templates/part/part_base.html:79 +#: templates/js/part.html:112 msgid "IPN" msgstr "" -#: part/templates/part/detail.html:32 +#: part/templates/part/detail.html:32 templates/js/part.html:116 msgid "Revision" msgstr "" #: part/templates/part/detail.html:39 -msgid "Next Serial Number" +msgid "Latest Serial Number" msgstr "" -#: part/templates/part/detail.html:51 +#: part/templates/part/detail.html:44 +msgid "No serial numbers recorded" +msgstr "" + +#: part/templates/part/detail.html:57 msgid "Variant Of" msgstr "" -#: part/templates/part/detail.html:64 part/templates/part/set_category.html:15 -#: templates/js/part.html:190 +#: part/templates/part/detail.html:70 part/templates/part/set_category.html:15 +#: templates/js/part.html:282 msgid "Category" msgstr "" -#: part/templates/part/detail.html:88 +#: part/templates/part/detail.html:94 msgid "Default Supplier" msgstr "" -#: part/templates/part/detail.html:96 part/templates/part/params.html:22 +#: part/templates/part/detail.html:102 part/templates/part/params.html:22 msgid "Units" msgstr "" -#: part/templates/part/detail.html:102 +#: part/templates/part/detail.html:108 msgid "Minimum Stock" msgstr "" -#: part/templates/part/detail.html:108 templates/js/order.html:243 +#: part/templates/part/detail.html:114 templates/js/order.html:247 msgid "Creation Date" msgstr "" -#: part/templates/part/detail.html:114 +#: part/templates/part/detail.html:120 msgid "Created By" msgstr "" -#: part/templates/part/detail.html:121 +#: part/templates/part/detail.html:127 msgid "Responsible User" msgstr "" -#: part/templates/part/detail.html:130 +#: part/templates/part/detail.html:136 msgid "Virtual" msgstr "" -#: part/templates/part/detail.html:133 +#: part/templates/part/detail.html:139 msgid "Part is virtual (not a physical part)" msgstr "" -#: part/templates/part/detail.html:135 +#: part/templates/part/detail.html:141 msgid "Part is not a virtual part" msgstr "" -#: part/templates/part/detail.html:139 stock/forms.py:237 +#: part/templates/part/detail.html:145 stock/forms.py:244 #: templates/js/table_filters.html:159 msgid "Template" msgstr "" -#: part/templates/part/detail.html:142 +#: part/templates/part/detail.html:148 msgid "Part is a template part (variants can be made from this part)" msgstr "" -#: part/templates/part/detail.html:144 +#: part/templates/part/detail.html:150 msgid "Part is not a template part" msgstr "" -#: part/templates/part/detail.html:148 templates/js/table_filters.html:171 +#: part/templates/part/detail.html:154 templates/js/table_filters.html:171 msgid "Assembly" msgstr "" -#: part/templates/part/detail.html:151 +#: part/templates/part/detail.html:157 msgid "Part can be assembled from other parts" msgstr "" -#: part/templates/part/detail.html:153 +#: part/templates/part/detail.html:159 msgid "Part cannot be assembled from other parts" msgstr "" -#: part/templates/part/detail.html:157 templates/js/table_filters.html:175 +#: part/templates/part/detail.html:163 templates/js/table_filters.html:175 msgid "Component" msgstr "" -#: part/templates/part/detail.html:160 +#: part/templates/part/detail.html:166 msgid "Part can be used in assemblies" msgstr "" -#: part/templates/part/detail.html:162 +#: part/templates/part/detail.html:168 msgid "Part cannot be used in assemblies" msgstr "" -#: part/templates/part/detail.html:166 templates/js/table_filters.html:187 +#: part/templates/part/detail.html:172 templates/js/table_filters.html:187 msgid "Trackable" msgstr "" -#: part/templates/part/detail.html:169 +#: part/templates/part/detail.html:175 msgid "Part stock is tracked by serial number" msgstr "" -#: part/templates/part/detail.html:171 +#: part/templates/part/detail.html:177 msgid "Part stock is not tracked by serial number" msgstr "" -#: part/templates/part/detail.html:175 +#: part/templates/part/detail.html:181 msgid "Purchaseable" msgstr "" -#: part/templates/part/detail.html:178 part/templates/part/detail.html:180 +#: part/templates/part/detail.html:184 part/templates/part/detail.html:186 msgid "Part can be purchased from external suppliers" msgstr "" -#: part/templates/part/detail.html:184 templates/js/table_filters.html:183 +#: part/templates/part/detail.html:190 templates/js/table_filters.html:183 msgid "Salable" msgstr "" -#: part/templates/part/detail.html:187 +#: part/templates/part/detail.html:193 msgid "Part can be sold to customers" msgstr "" -#: part/templates/part/detail.html:189 +#: part/templates/part/detail.html:195 msgid "Part cannot be sold to customers" msgstr "" -#: part/templates/part/detail.html:193 templates/js/table_filters.html:154 +#: part/templates/part/detail.html:199 templates/js/table_filters.html:154 msgid "Active" msgstr "" -#: part/templates/part/detail.html:196 +#: part/templates/part/detail.html:202 msgid "Part is active" msgstr "" -#: part/templates/part/detail.html:198 +#: part/templates/part/detail.html:204 msgid "Part is not active" msgstr "" @@ -2431,8 +2493,8 @@ msgstr "" msgid "New Parameter" msgstr "" -#: part/templates/part/params.html:21 stock/models.py:1269 -#: templates/js/stock.html:110 +#: part/templates/part/params.html:21 stock/models.py:1266 +#: templates/js/stock.html:112 msgid "Value" msgstr "" @@ -2460,8 +2522,8 @@ msgstr "" msgid "This part is a variant of" msgstr "" -#: part/templates/part/part_base.html:33 templates/js/company.html:125 -#: templates/js/part.html:167 +#: part/templates/part/part_base.html:33 templates/js/company.html:131 +#: templates/js/part.html:259 msgid "Inactive" msgstr "" @@ -2507,10 +2569,6 @@ msgstr "" msgid "Delete part" msgstr "" -#: part/templates/part/part_base.html:102 -msgid "Available Stock" -msgstr "" - #: part/templates/part/part_base.html:108 templates/js/table_filters.html:57 msgid "In Stock" msgstr "" @@ -2567,12 +2625,8 @@ msgstr "" msgid "Part Stock" msgstr "" -#: part/templates/part/stock.html:76 -msgid "Create New Part" -msgstr "" - -#: part/templates/part/stock_count.html:7 templates/js/bom.html:203 -#: templates/js/part.html:227 +#: part/templates/part/stock_count.html:7 templates/js/bom.html:204 +#: templates/js/part.html:319 msgid "No Stock" msgstr "" @@ -2612,7 +2666,7 @@ msgstr "" msgid "Used In" msgstr "" -#: part/templates/part/tabs.html:55 stock/templates/stock/item_base.html:272 +#: part/templates/part/tabs.html:55 stock/templates/stock/item_base.html:270 msgid "Tests" msgstr "" @@ -2624,10 +2678,22 @@ msgstr "" msgid "Assemblies" msgstr "" -#: part/templates/part/used_in.html:42 +#: part/templates/part/used_in.html:43 msgid "INACTIVE" msgstr "" +#: part/templates/part/variants.html:11 +msgid "Part Variants" +msgstr "" + +#: part/templates/part/variants.html:21 +msgid "Create new variant" +msgstr "" + +#: part/templates/part/variants.html:21 +msgid "New Variant" +msgstr "" + #: part/views.py:75 msgid "Add part attachment" msgstr "" @@ -2733,123 +2799,131 @@ msgstr "" msgid "Duplicate part selected" msgstr "" -#: part/views.py:1329 +#: part/views.py:1331 msgid "Select a part" msgstr "" -#: part/views.py:1333 +#: part/views.py:1337 +msgid "Selected part creates a circular BOM" +msgstr "" + +#: part/views.py:1341 msgid "Specify quantity" msgstr "" -#: part/views.py:1565 +#: part/views.py:1591 msgid "Confirm Part Deletion" msgstr "" -#: part/views.py:1572 +#: part/views.py:1598 msgid "Part was deleted" msgstr "" -#: part/views.py:1581 +#: part/views.py:1607 msgid "Part Pricing" msgstr "" -#: part/views.py:1703 +#: part/views.py:1729 msgid "Create Part Parameter Template" msgstr "" -#: part/views.py:1711 +#: part/views.py:1737 msgid "Edit Part Parameter Template" msgstr "" -#: part/views.py:1718 +#: part/views.py:1744 msgid "Delete Part Parameter Template" msgstr "" -#: part/views.py:1726 +#: part/views.py:1752 msgid "Create Part Parameter" msgstr "" -#: part/views.py:1776 +#: part/views.py:1802 msgid "Edit Part Parameter" msgstr "" -#: part/views.py:1790 +#: part/views.py:1816 msgid "Delete Part Parameter" msgstr "" -#: part/views.py:1806 +#: part/views.py:1832 msgid "Edit Part Category" msgstr "" -#: part/views.py:1841 +#: part/views.py:1867 msgid "Delete Part Category" msgstr "" -#: part/views.py:1847 +#: part/views.py:1873 msgid "Part category was deleted" msgstr "" -#: part/views.py:1855 +#: part/views.py:1881 msgid "Create new part category" msgstr "" -#: part/views.py:1906 +#: part/views.py:1932 msgid "Create BOM item" msgstr "" -#: part/views.py:1972 +#: part/views.py:1998 msgid "Edit BOM item" msgstr "" -#: part/views.py:2020 +#: part/views.py:2046 msgid "Confim BOM item deletion" msgstr "" -#: report/models.py:167 +#: report/models.py:138 msgid "Template name" msgstr "" -#: report/models.py:173 +#: report/models.py:144 msgid "Report template file" msgstr "" -#: report/models.py:177 +#: report/models.py:148 msgid "Report template description" msgstr "" -#: report/models.py:221 +#: report/models.py:152 +msgid "Report template is enabled" +msgstr "" + +#: report/models.py:159 msgid "Part query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:266 +#: report/models.py:218 msgid "Report asset file" msgstr "" -#: report/models.py:269 +#: report/models.py:221 msgid "Asset file description" msgstr "" -#: stock/forms.py:185 +#: stock/forms.py:187 msgid "Label" msgstr "" -#: stock/forms.py:186 stock/forms.py:237 +#: stock/forms.py:188 stock/forms.py:244 msgid "Select test report template" msgstr "" -#: stock/forms.py:245 +#: stock/forms.py:252 msgid "Include stock items in sub locations" msgstr "" -#: stock/forms.py:278 +#: stock/forms.py:285 msgid "Destination stock location" msgstr "" -#: stock/forms.py:284 +#: stock/forms.py:291 msgid "Confirm movement of stock items" msgstr "" -#: stock/forms.py:286 +#: stock/forms.py:293 msgid "Set the destination as the default location for selected parts" msgstr "" @@ -2976,80 +3050,80 @@ msgstr "" msgid "Quantity must not exceed available stock quantity ({n})" msgstr "" -#: stock/models.py:688 stock/models.py:691 +#: stock/models.py:688 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:694 +#: stock/models.py:691 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:704 +#: stock/models.py:701 msgid "Serial numbers already exist: " msgstr "" -#: stock/models.py:729 +#: stock/models.py:726 msgid "Add serial number" msgstr "" -#: stock/models.py:732 +#: stock/models.py:729 #, python-brace-format msgid "Serialized {n} items" msgstr "" -#: stock/models.py:843 +#: stock/models.py:840 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:1170 +#: stock/models.py:1167 msgid "Tracking entry title" msgstr "" -#: stock/models.py:1172 +#: stock/models.py:1169 msgid "Entry notes" msgstr "" -#: stock/models.py:1174 +#: stock/models.py:1171 msgid "Link to external page for further information" msgstr "" -#: stock/models.py:1234 +#: stock/models.py:1231 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:1240 +#: stock/models.py:1237 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:1257 +#: stock/models.py:1254 msgid "Test" msgstr "" -#: stock/models.py:1258 +#: stock/models.py:1255 msgid "Test name" msgstr "" -#: stock/models.py:1263 +#: stock/models.py:1260 msgid "Result" msgstr "" -#: stock/models.py:1264 templates/js/table_filters.html:90 +#: stock/models.py:1261 templates/js/table_filters.html:90 msgid "Test result" msgstr "" -#: stock/models.py:1270 +#: stock/models.py:1267 msgid "Test output value" msgstr "" -#: stock/models.py:1276 +#: stock/models.py:1273 msgid "Attachment" msgstr "" -#: stock/models.py:1277 +#: stock/models.py:1274 msgid "Test result attachment" msgstr "" -#: stock/models.py:1283 +#: stock/models.py:1280 msgid "Test notes" msgstr "" @@ -3151,39 +3225,39 @@ msgstr "" msgid "Delete stock item" msgstr "" -#: stock/templates/stock/item_base.html:128 +#: stock/templates/stock/item_base.html:127 msgid "Generate test report" msgstr "" -#: stock/templates/stock/item_base.html:137 +#: stock/templates/stock/item_base.html:135 msgid "Stock Item Details" msgstr "" -#: stock/templates/stock/item_base.html:170 +#: stock/templates/stock/item_base.html:168 msgid "Belongs To" msgstr "" -#: stock/templates/stock/item_base.html:192 +#: stock/templates/stock/item_base.html:190 msgid "No location set" msgstr "" -#: stock/templates/stock/item_base.html:199 +#: stock/templates/stock/item_base.html:197 msgid "Unique Identifier" msgstr "" -#: stock/templates/stock/item_base.html:227 +#: stock/templates/stock/item_base.html:225 msgid "Parent Item" msgstr "" -#: stock/templates/stock/item_base.html:252 +#: stock/templates/stock/item_base.html:250 msgid "Last Updated" msgstr "" -#: stock/templates/stock/item_base.html:257 +#: stock/templates/stock/item_base.html:255 msgid "Last Stocktake" msgstr "" -#: stock/templates/stock/item_base.html:261 +#: stock/templates/stock/item_base.html:259 msgid "No stocktake performed" msgstr "" @@ -3211,7 +3285,7 @@ msgstr "" msgid "Add Test Data" msgstr "" -#: stock/templates/stock/item_tests.html:21 +#: stock/templates/stock/item_tests.html:20 msgid "Test Report" msgstr "" @@ -3270,11 +3344,7 @@ msgstr "" msgid "Are you sure you want to delete this stock location?" msgstr "" -#: stock/templates/stock/stock_adjust.html:35 -msgid "Stock item is serialized and quantity cannot be adjusted" -msgstr "" - -#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:1052 +#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:1053 msgid "Convert Stock Item" msgstr "" @@ -3342,174 +3412,174 @@ msgstr "" msgid "Select Label Template" msgstr "" -#: stock/views.py:326 +#: stock/views.py:327 msgid "Select valid label" msgstr "" -#: stock/views.py:388 +#: stock/views.py:389 msgid "Delete All Test Data" msgstr "" -#: stock/views.py:403 +#: stock/views.py:404 msgid "Confirm test data deletion" msgstr "" -#: stock/views.py:423 +#: stock/views.py:424 msgid "Add Test Result" msgstr "" -#: stock/views.py:460 +#: stock/views.py:461 msgid "Edit Test Result" msgstr "" -#: stock/views.py:477 +#: stock/views.py:478 msgid "Delete Test Result" msgstr "" -#: stock/views.py:488 +#: stock/views.py:489 msgid "Select Test Report Template" msgstr "" -#: stock/views.py:502 +#: stock/views.py:503 msgid "Select valid template" msgstr "" -#: stock/views.py:554 +#: stock/views.py:555 msgid "Stock Export Options" msgstr "" -#: stock/views.py:674 +#: stock/views.py:675 msgid "Stock Item QR Code" msgstr "" -#: stock/views.py:697 +#: stock/views.py:698 msgid "Adjust Stock" msgstr "" -#: stock/views.py:806 +#: stock/views.py:807 msgid "Move Stock Items" msgstr "" -#: stock/views.py:807 +#: stock/views.py:808 msgid "Count Stock Items" msgstr "" -#: stock/views.py:808 +#: stock/views.py:809 msgid "Remove From Stock" msgstr "" -#: stock/views.py:809 +#: stock/views.py:810 msgid "Add Stock Items" msgstr "" -#: stock/views.py:810 +#: stock/views.py:811 msgid "Delete Stock Items" msgstr "" -#: stock/views.py:838 +#: stock/views.py:839 msgid "Must enter integer value" msgstr "" -#: stock/views.py:843 +#: stock/views.py:844 msgid "Quantity must be positive" msgstr "" -#: stock/views.py:850 +#: stock/views.py:851 #, python-brace-format msgid "Quantity must not exceed {x}" msgstr "" -#: stock/views.py:858 +#: stock/views.py:859 msgid "Confirm stock adjustment" msgstr "" -#: stock/views.py:929 +#: stock/views.py:930 #, python-brace-format msgid "Added stock to {n} items" msgstr "" -#: stock/views.py:944 +#: stock/views.py:945 #, python-brace-format msgid "Removed stock from {n} items" msgstr "" -#: stock/views.py:957 +#: stock/views.py:958 #, python-brace-format msgid "Counted stock for {n} items" msgstr "" -#: stock/views.py:985 +#: stock/views.py:986 msgid "No items were moved" msgstr "" -#: stock/views.py:988 +#: stock/views.py:989 #, python-brace-format msgid "Moved {n} items to {dest}" msgstr "" -#: stock/views.py:1007 +#: stock/views.py:1008 #, python-brace-format msgid "Deleted {n} stock items" msgstr "" -#: stock/views.py:1019 +#: stock/views.py:1020 msgid "Edit Stock Item" msgstr "" -#: stock/views.py:1079 +#: stock/views.py:1080 msgid "Create new Stock Location" msgstr "" -#: stock/views.py:1100 +#: stock/views.py:1101 msgid "Serialize Stock" msgstr "" -#: stock/views.py:1192 +#: stock/views.py:1194 msgid "Create new Stock Item" msgstr "" -#: stock/views.py:1285 +#: stock/views.py:1293 msgid "Duplicate Stock Item" msgstr "" -#: stock/views.py:1358 +#: stock/views.py:1361 msgid "Invalid quantity" msgstr "" -#: stock/views.py:1361 +#: stock/views.py:1364 msgid "Quantity cannot be less than zero" msgstr "" -#: stock/views.py:1365 +#: stock/views.py:1368 msgid "Invalid part selection" msgstr "" -#: stock/views.py:1414 +#: stock/views.py:1417 #, python-brace-format msgid "Created {n} new stock items" msgstr "" -#: stock/views.py:1433 stock/views.py:1449 +#: stock/views.py:1436 stock/views.py:1452 msgid "Created new stock item" msgstr "" -#: stock/views.py:1468 +#: stock/views.py:1471 msgid "Delete Stock Location" msgstr "" -#: stock/views.py:1481 +#: stock/views.py:1484 msgid "Delete Stock Item" msgstr "" -#: stock/views.py:1492 +#: stock/views.py:1495 msgid "Delete Stock Tracking Entry" msgstr "" -#: stock/views.py:1509 +#: stock/views.py:1512 msgid "Edit Stock Tracking Entry" msgstr "" -#: stock/views.py:1518 +#: stock/views.py:1521 msgid "Add Stock Tracking Entry" msgstr "" @@ -3529,11 +3599,11 @@ msgstr "" msgid "No part parameter templates found" msgstr "" -#: templates/InvenTree/settings/part.html:47 +#: templates/InvenTree/settings/part.html:48 msgid "Edit Template" msgstr "" -#: templates/InvenTree/settings/part.html:48 +#: templates/InvenTree/settings/part.html:49 msgid "Delete Template" msgstr "" @@ -3678,27 +3748,27 @@ msgstr "" msgid "Open subassembly" msgstr "" -#: templates/js/bom.html:194 templates/js/build.html:113 +#: templates/js/bom.html:195 templates/js/build.html:115 msgid "Available" msgstr "" -#: templates/js/bom.html:219 +#: templates/js/bom.html:220 msgid "No pricing available" msgstr "" -#: templates/js/bom.html:239 +#: templates/js/bom.html:242 msgid "Validate BOM Item" msgstr "" -#: templates/js/bom.html:240 +#: templates/js/bom.html:243 msgid "This line has been validated" msgstr "" -#: templates/js/bom.html:242 +#: templates/js/bom.html:245 msgid "Edit BOM Item" msgstr "" -#: templates/js/bom.html:243 +#: templates/js/bom.html:246 msgid "Delete BOM Item" msgstr "" @@ -3706,7 +3776,7 @@ msgstr "" msgid "No builds matching query" msgstr "" -#: templates/js/build.html:102 +#: templates/js/build.html:104 msgid "No parts allocated for" msgstr "" @@ -3714,87 +3784,91 @@ msgstr "" msgid "No company information found" msgstr "" -#: templates/js/company.html:101 +#: templates/js/company.html:106 msgid "No supplier parts found" msgstr "" -#: templates/js/company.html:117 templates/js/part.html:145 +#: templates/js/company.html:123 templates/js/part.html:237 msgid "Template part" msgstr "" -#: templates/js/company.html:121 templates/js/part.html:149 +#: templates/js/company.html:127 templates/js/part.html:241 msgid "Assembled part" msgstr "" -#: templates/js/company.html:178 +#: templates/js/company.html:184 msgid "Link" msgstr "" -#: templates/js/order.html:126 +#: templates/js/order.html:127 msgid "No purchase orders found" msgstr "" -#: templates/js/order.html:170 templates/js/stock.html:625 +#: templates/js/order.html:172 templates/js/stock.html:629 msgid "Date" msgstr "" -#: templates/js/order.html:199 +#: templates/js/order.html:202 msgid "No sales orders found" msgstr "" -#: templates/js/order.html:248 +#: templates/js/order.html:252 msgid "Shipment Date" msgstr "" -#: templates/js/part.html:106 templates/js/stock.html:406 +#: templates/js/part.html:134 +msgid "No variants found" +msgstr "" + +#: templates/js/part.html:198 templates/js/stock.html:409 msgid "Select" msgstr "" -#: templates/js/part.html:153 +#: templates/js/part.html:245 msgid "Starred part" msgstr "" -#: templates/js/part.html:157 +#: templates/js/part.html:249 msgid "Salable part" msgstr "" -#: templates/js/part.html:196 +#: templates/js/part.html:288 msgid "No category" msgstr "" -#: templates/js/part.html:214 templates/js/table_filters.html:167 +#: templates/js/part.html:306 templates/js/table_filters.html:167 msgid "Low stock" msgstr "" -#: templates/js/part.html:223 +#: templates/js/part.html:315 msgid "Building" msgstr "" -#: templates/js/part.html:241 +#: templates/js/part.html:334 msgid "No parts found" msgstr "" -#: templates/js/part.html:301 +#: templates/js/part.html:394 msgid "YES" msgstr "" -#: templates/js/part.html:303 +#: templates/js/part.html:396 msgid "NO" msgstr "" -#: templates/js/part.html:337 +#: templates/js/part.html:430 msgid "No test templates matching query" msgstr "" -#: templates/js/part.html:387 templates/js/stock.html:63 +#: templates/js/part.html:481 templates/js/stock.html:63 msgid "Edit test result" msgstr "" -#: templates/js/part.html:388 templates/js/stock.html:64 +#: templates/js/part.html:482 templates/js/stock.html:64 msgid "Delete test result" msgstr "" -#: templates/js/part.html:394 +#: templates/js/part.html:488 msgid "This test is defined for a parent part" msgstr "" @@ -3814,62 +3888,70 @@ msgstr "" msgid "Add test result" msgstr "" -#: templates/js/stock.html:77 +#: templates/js/stock.html:78 msgid "No test results found" msgstr "" -#: templates/js/stock.html:118 +#: templates/js/stock.html:120 msgid "Test Date" msgstr "" -#: templates/js/stock.html:261 +#: templates/js/stock.html:263 msgid "No stock items matching query" msgstr "" -#: templates/js/stock.html:358 templates/js/stock.html:373 +#: templates/js/stock.html:361 templates/js/stock.html:376 msgid "Undefined location" msgstr "" -#: templates/js/stock.html:464 +#: templates/js/stock.html:468 msgid "Stock item has been allocated" msgstr "" -#: templates/js/stock.html:468 +#: templates/js/stock.html:472 msgid "Stock item has been assigned to customer" msgstr "" -#: templates/js/stock.html:470 +#: templates/js/stock.html:474 msgid "Stock item was assigned to a build order" msgstr "" -#: templates/js/stock.html:472 +#: templates/js/stock.html:476 msgid "Stock item was assigned to a sales order" msgstr "" -#: templates/js/stock.html:479 +#: templates/js/stock.html:483 msgid "Stock item has been rejected" msgstr "" -#: templates/js/stock.html:483 +#: templates/js/stock.html:487 msgid "Stock item is lost" msgstr "" -#: templates/js/stock.html:487 templates/js/table_filters.html:52 +#: templates/js/stock.html:491 templates/js/table_filters.html:52 msgid "Depleted" msgstr "" -#: templates/js/stock.html:516 +#: templates/js/stock.html:520 msgid "Shipped to customer" msgstr "" -#: templates/js/stock.html:519 +#: templates/js/stock.html:523 msgid "No stock location set" msgstr "" -#: templates/js/stock.html:691 +#: templates/js/stock.html:695 msgid "No user information" msgstr "" +#: templates/js/stock.html:779 +msgid "Create New Part" +msgstr "" + +#: templates/js/stock.html:791 +msgid "Create New Location" +msgstr "" + #: templates/js/table_filters.html:19 templates/js/table_filters.html:67 msgid "Is Serialized" msgstr "" @@ -3970,39 +4052,39 @@ msgstr "" msgid "Purchasable" msgstr "" -#: templates/navbar.html:14 +#: templates/navbar.html:22 msgid "Buy" msgstr "" -#: templates/navbar.html:22 +#: templates/navbar.html:30 msgid "Sell" msgstr "" -#: templates/navbar.html:32 +#: templates/navbar.html:40 msgid "Scan Barcode" msgstr "" -#: templates/navbar.html:41 +#: templates/navbar.html:49 msgid "Admin" msgstr "" -#: templates/navbar.html:44 +#: templates/navbar.html:52 msgid "Settings" msgstr "" -#: templates/navbar.html:45 +#: templates/navbar.html:53 msgid "Logout" msgstr "" -#: templates/navbar.html:47 +#: templates/navbar.html:55 msgid "Login" msgstr "" -#: templates/navbar.html:50 +#: templates/navbar.html:58 msgid "About InvenTree" msgstr "" -#: templates/navbar.html:51 +#: templates/navbar.html:59 msgid "Statistics" msgstr "" diff --git a/InvenTree/locale/es/LC_MESSAGES/django.po b/InvenTree/locale/es/LC_MESSAGES/django.po index 8103534f63..bddb8825ea 100644 --- a/InvenTree/locale/es/LC_MESSAGES/django.po +++ b/InvenTree/locale/es/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-08-18 04:01+0000\n" +"POT-Creation-Date: 2020-09-02 13:54+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -50,22 +50,26 @@ msgstr "" msgid "Empty serial number string" msgstr "" -#: InvenTree/helpers.py:360 InvenTree/helpers.py:377 +#: InvenTree/helpers.py:360 #, python-brace-format msgid "Duplicate serial: {n}" msgstr "" #: InvenTree/helpers.py:364 InvenTree/helpers.py:367 InvenTree/helpers.py:370 -#: InvenTree/helpers.py:381 #, python-brace-format msgid "Invalid group: {g}" msgstr "" -#: InvenTree/helpers.py:387 +#: InvenTree/helpers.py:375 +#, python-brace-format +msgid "Duplicate serial: {g}" +msgstr "" + +#: InvenTree/helpers.py:383 msgid "No serial numbers found" msgstr "" -#: InvenTree/helpers.py:391 +#: InvenTree/helpers.py:387 #, python-brace-format msgid "Number of unique serial number ({s}) must match quantity ({q})" msgstr "" @@ -78,11 +82,12 @@ msgstr "" msgid "File comment" msgstr "" -#: InvenTree/models.py:68 templates/js/stock.html:682 +#: InvenTree/models.py:68 templates/js/stock.html:686 msgid "User" msgstr "" #: InvenTree/models.py:106 part/templates/part/params.html:20 +#: templates/js/part.html:81 msgid "Name" msgstr "" @@ -90,19 +95,19 @@ msgstr "" msgid "Description (optional)" msgstr "" -#: InvenTree/settings.py:335 +#: InvenTree/settings.py:338 msgid "English" msgstr "" -#: InvenTree/settings.py:336 +#: InvenTree/settings.py:339 msgid "German" msgstr "" -#: InvenTree/settings.py:337 +#: InvenTree/settings.py:340 msgid "French" msgstr "" -#: InvenTree/settings.py:338 +#: InvenTree/settings.py:341 msgid "Polish" msgstr "" @@ -159,8 +164,8 @@ msgid "Rejected" msgstr "" #: InvenTree/status_codes.py:223 build/templates/build/allocate.html:349 -#: order/templates/order/sales_order_detail.html:220 -#: part/templates/part/tabs.html:23 templates/js/build.html:120 +#: order/templates/order/sales_order_detail.html:221 +#: part/templates/part/tabs.html:23 templates/js/build.html:122 msgid "Allocated" msgstr "" @@ -241,7 +246,7 @@ msgstr "" msgid "Serial numbers" msgstr "" -#: build/forms.py:64 stock/forms.py:105 +#: build/forms.py:64 stock/forms.py:107 msgid "Enter unique serial numbers (or leave blank)" msgstr "" @@ -274,13 +279,13 @@ msgstr "" #: build/templates/build/build_base.html:70 #: build/templates/build/detail.html:22 order/models.py:501 #: order/templates/order/order_wizard/select_parts.html:30 -#: order/templates/order/purchase_order_detail.html:145 -#: order/templates/order/receive_parts.html:19 part/models.py:240 +#: order/templates/order/purchase_order_detail.html:147 +#: order/templates/order/receive_parts.html:19 part/models.py:239 #: part/templates/part/part_app_base.html:7 #: part/templates/part/set_category.html:13 templates/js/barcode.html:336 -#: templates/js/bom.html:135 templates/js/build.html:41 -#: templates/js/company.html:109 templates/js/part.html:120 -#: templates/js/stock.html:425 +#: templates/js/bom.html:135 templates/js/build.html:43 +#: templates/js/company.html:115 templates/js/part.html:212 +#: templates/js/stock.html:429 msgid "Part" msgstr "" @@ -333,8 +338,8 @@ msgstr "" #: build/models.py:155 build/templates/build/detail.html:55 #: company/templates/company/supplier_part_base.html:60 #: company/templates/company/supplier_part_detail.html:24 -#: part/templates/part/detail.html:74 part/templates/part/part_base.html:86 -#: stock/models.py:365 stock/templates/stock/item_base.html:234 +#: part/templates/part/detail.html:80 part/templates/part/part_base.html:86 +#: stock/models.py:365 stock/templates/stock/item_base.html:232 msgid "External Link" msgstr "" @@ -344,11 +349,11 @@ msgstr "" #: build/models.py:160 build/templates/build/tabs.html:14 company/models.py:310 #: company/templates/company/tabs.html:33 order/templates/order/po_tabs.html:15 -#: order/templates/order/purchase_order_detail.html:200 +#: order/templates/order/purchase_order_detail.html:202 #: order/templates/order/so_tabs.html:23 part/templates/part/tabs.html:64 -#: stock/models.py:433 stock/models.py:1282 stock/templates/stock/tabs.html:26 -#: templates/js/barcode.html:391 templates/js/bom.html:229 -#: templates/js/stock.html:114 templates/js/stock.html:526 +#: stock/models.py:433 stock/models.py:1279 stock/templates/stock/tabs.html:26 +#: templates/js/barcode.html:391 templates/js/bom.html:230 +#: templates/js/stock.html:116 templates/js/stock.html:530 msgid "Notes" msgstr "" @@ -414,7 +419,7 @@ msgstr "" #: build/templates/build/allocate.html:161 #: order/templates/order/sales_order_detail.html:68 #: order/templates/order/sales_order_detail.html:150 stock/models.py:359 -#: stock/templates/stock/item_base.html:150 +#: stock/templates/stock/item_base.html:148 msgid "Serial Number" msgstr "" @@ -424,62 +429,63 @@ msgstr "" #: build/templates/build/detail.html:27 #: company/templates/company/supplier_part_pricing.html:27 #: order/templates/order/order_wizard/select_parts.html:32 -#: order/templates/order/purchase_order_detail.html:175 +#: order/templates/order/purchase_order_detail.html:177 #: order/templates/order/sales_order_detail.html:70 #: order/templates/order/sales_order_detail.html:152 #: part/templates/part/allocation.html:16 #: part/templates/part/allocation.html:49 #: stock/templates/stock/item_base.html:26 #: stock/templates/stock/item_base.html:32 -#: stock/templates/stock/item_base.html:156 +#: stock/templates/stock/item_base.html:154 #: stock/templates/stock/stock_adjust.html:18 templates/js/barcode.html:338 -#: templates/js/bom.html:172 templates/js/build.html:52 -#: templates/js/stock.html:673 +#: templates/js/bom.html:173 templates/js/build.html:54 +#: templates/js/stock.html:677 msgid "Quantity" msgstr "" #: build/templates/build/allocate.html:177 #: build/templates/build/auto_allocate.html:20 -#: stock/templates/stock/item_base.html:188 +#: stock/templates/stock/item_base.html:186 #: stock/templates/stock/stock_adjust.html:17 templates/js/barcode.html:337 -#: templates/js/stock.html:508 +#: templates/js/stock.html:512 msgid "Location" msgstr "" #: build/templates/build/allocate.html:201 -#: order/templates/order/sales_order_detail.html:92 templates/js/build.html:124 +#: order/templates/order/sales_order_detail.html:92 templates/js/build.html:126 msgid "Edit stock allocation" msgstr "" #: build/templates/build/allocate.html:202 -#: order/templates/order/sales_order_detail.html:93 templates/js/build.html:125 +#: order/templates/order/sales_order_detail.html:93 templates/js/build.html:127 msgid "Delete stock allocation" msgstr "" -#: build/templates/build/allocate.html:229 templates/js/bom.html:288 +#: build/templates/build/allocate.html:229 templates/js/bom.html:334 msgid "No BOM items found" msgstr "" #: build/templates/build/allocate.html:328 #: company/templates/company/supplier_part_base.html:53 #: company/templates/company/supplier_part_detail.html:27 -#: order/templates/order/purchase_order_detail.html:157 -#: part/templates/part/detail.html:45 part/templates/part/set_category.html:14 -#: templates/js/bom.html:157 templates/js/company.html:60 -#: templates/js/order.html:157 templates/js/order.html:230 -#: templates/js/part.html:176 templates/js/part.html:355 -#: templates/js/stock.html:440 templates/js/stock.html:654 +#: order/templates/order/purchase_order_detail.html:159 +#: part/templates/part/detail.html:51 part/templates/part/set_category.html:14 +#: templates/js/bom.html:158 templates/js/company.html:64 +#: templates/js/order.html:159 templates/js/order.html:234 +#: templates/js/part.html:120 templates/js/part.html:268 +#: templates/js/part.html:449 templates/js/stock.html:444 +#: templates/js/stock.html:658 msgid "Description" msgstr "" #: build/templates/build/allocate.html:333 -#: order/templates/order/purchase_order_detail.html:170 -#: templates/js/bom.html:164 +#: order/templates/order/purchase_order_detail.html:172 +#: templates/js/bom.html:165 msgid "Reference" msgstr "" -#: build/templates/build/allocate.html:338 part/models.py:1271 -#: templates/js/part.html:359 templates/js/table_filters.html:100 +#: build/templates/build/allocate.html:338 part/models.py:1320 +#: templates/js/part.html:453 templates/js/table_filters.html:100 msgid "Required" msgstr "" @@ -488,12 +494,12 @@ msgid "Assigned" msgstr "" #: build/templates/build/allocate.html:385 -#: order/templates/order/sales_order_detail.html:270 +#: order/templates/order/sales_order_detail.html:271 msgid "Buy parts" msgstr "" #: build/templates/build/allocate.html:389 -#: order/templates/order/sales_order_detail.html:274 +#: order/templates/order/sales_order_detail.html:275 msgid "Build parts" msgstr "" @@ -522,8 +528,8 @@ msgstr "" #: build/templates/build/build_base.html:8 #: build/templates/build/build_base.html:34 #: build/templates/build/complete.html:6 -#: stock/templates/stock/item_base.html:213 templates/js/build.html:33 -#: templates/navbar.html:12 +#: stock/templates/stock/item_base.html:211 templates/js/build.html:35 +#: templates/navbar.html:20 msgid "Build" msgstr "" @@ -542,9 +548,9 @@ msgstr "" #: build/templates/build/build_base.html:80 #: build/templates/build/detail.html:42 #: order/templates/order/receive_parts.html:24 -#: stock/templates/stock/item_base.html:266 templates/js/barcode.html:42 -#: templates/js/build.html:57 templates/js/order.html:162 -#: templates/js/order.html:235 templates/js/stock.html:495 +#: stock/templates/stock/item_base.html:264 templates/js/barcode.html:42 +#: templates/js/build.html:59 templates/js/order.html:164 +#: templates/js/order.html:239 templates/js/stock.html:499 msgid "Status" msgstr "" @@ -554,7 +560,7 @@ msgstr "" #: order/templates/order/sales_order_notes.html:10 #: order/templates/order/sales_order_ship.html:25 #: part/templates/part/allocation.html:27 -#: stock/templates/stock/item_base.html:176 templates/js/order.html:209 +#: stock/templates/stock/item_base.html:174 templates/js/order.html:213 msgid "Sales Order" msgstr "" @@ -621,13 +627,13 @@ msgid "Stock can be taken from any available location." msgstr "" #: build/templates/build/detail.html:48 -#: stock/templates/stock/item_base.html:206 templates/js/stock.html:503 +#: stock/templates/stock/item_base.html:204 templates/js/stock.html:507 msgid "Batch" msgstr "" #: build/templates/build/detail.html:61 #: order/templates/order/order_base.html:93 -#: order/templates/order/sales_order_base.html:92 templates/js/build.html:65 +#: order/templates/order/sales_order_base.html:92 templates/js/build.html:67 msgid "Created" msgstr "" @@ -643,7 +649,7 @@ msgstr "" msgid "No" msgstr "" -#: build/templates/build/detail.html:80 templates/js/build.html:70 +#: build/templates/build/detail.html:80 templates/js/build.html:72 msgid "Completed" msgstr "" @@ -716,7 +722,7 @@ msgstr "" msgid "Check the confirmation box at the bottom of the list" msgstr "" -#: build/views.py:148 build/views.py:456 +#: build/views.py:148 build/views.py:452 msgid "Unallocate Stock" msgstr "" @@ -724,7 +730,7 @@ msgstr "" msgid "Confirm unallocation of build stock" msgstr "" -#: build/views.py:162 stock/views.py:404 +#: build/views.py:162 stock/views.py:405 msgid "Check the confirmation box" msgstr "" @@ -732,64 +738,56 @@ msgstr "" msgid "Complete Build" msgstr "" -#: build/views.py:201 stock/views.py:1236 stock/views.py:1350 -msgid "Next available serial number is" -msgstr "" - -#: build/views.py:203 -msgid "Next available serial numbers are" -msgstr "" - -#: build/views.py:268 +#: build/views.py:264 msgid "Confirm completion of build" msgstr "" -#: build/views.py:275 +#: build/views.py:271 msgid "Invalid location selected" msgstr "" -#: build/views.py:300 stock/views.py:1386 +#: build/views.py:296 stock/views.py:1389 #, python-brace-format msgid "The following serial numbers already exist: ({sn})" msgstr "" -#: build/views.py:321 +#: build/views.py:317 msgid "Build marked as COMPLETE" msgstr "" -#: build/views.py:397 +#: build/views.py:393 msgid "Start new Build" msgstr "" -#: build/views.py:422 +#: build/views.py:418 msgid "Created new build" msgstr "" -#: build/views.py:432 +#: build/views.py:428 msgid "Edit Build Details" msgstr "" -#: build/views.py:437 +#: build/views.py:433 msgid "Edited build" msgstr "" -#: build/views.py:446 +#: build/views.py:442 msgid "Delete Build" msgstr "" -#: build/views.py:461 +#: build/views.py:457 msgid "Removed parts from build allocation" msgstr "" -#: build/views.py:471 +#: build/views.py:467 msgid "Allocate new Part" msgstr "" -#: build/views.py:624 +#: build/views.py:620 msgid "Edit Stock Allocation" msgstr "" -#: build/views.py:628 +#: build/views.py:624 msgid "Updated Build Item" msgstr "" @@ -854,7 +852,7 @@ msgid "Description of the company" msgstr "" #: company/models.py:91 company/templates/company/company_base.html:48 -#: templates/js/company.html:65 +#: templates/js/company.html:69 msgid "Website" msgstr "" @@ -911,7 +909,7 @@ msgid "Does this company manufacture parts?" msgstr "" #: company/models.py:279 stock/models.py:319 -#: stock/templates/stock/item_base.html:142 +#: stock/templates/stock/item_base.html:140 msgid "Base Part" msgstr "" @@ -957,7 +955,7 @@ msgid "Assigned Stock" msgstr "" #: company/templates/company/company_base.html:7 -#: company/templates/company/company_base.html:22 templates/js/company.html:38 +#: company/templates/company/company_base.html:22 templates/js/company.html:41 msgid "Company" msgstr "" @@ -972,25 +970,25 @@ msgstr "" #: company/templates/company/detail.html:16 #: company/templates/company/supplier_part_base.html:76 -#: company/templates/company/supplier_part_detail.html:30 -#: templates/js/company.html:48 templates/js/company.html:158 +#: company/templates/company/supplier_part_detail.html:30 part/bom.py:172 +#: templates/js/company.html:52 templates/js/company.html:164 msgid "Manufacturer" msgstr "" #: company/templates/company/detail.html:21 #: company/templates/company/supplier_part_base.html:66 -#: company/templates/company/supplier_part_detail.html:21 order/models.py:148 +#: company/templates/company/supplier_part_detail.html:21 #: order/templates/order/order_base.html:74 -#: order/templates/order/order_wizard/select_pos.html:30 -#: stock/templates/stock/item_base.html:241 templates/js/company.html:52 -#: templates/js/company.html:134 templates/js/order.html:144 +#: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:170 +#: stock/templates/stock/item_base.html:239 templates/js/company.html:56 +#: templates/js/company.html:140 templates/js/order.html:146 msgid "Supplier" msgstr "" -#: company/templates/company/detail.html:26 order/models.py:314 +#: company/templates/company/detail.html:26 #: order/templates/order/sales_order_base.html:73 stock/models.py:354 -#: stock/models.py:355 stock/templates/stock/item_base.html:163 -#: templates/js/company.html:44 templates/js/order.html:217 +#: stock/models.py:355 stock/templates/stock/item_base.html:161 +#: templates/js/company.html:48 templates/js/order.html:221 msgid "Customer" msgstr "" @@ -1000,7 +998,7 @@ msgstr "" #: company/templates/company/detail_part.html:13 #: order/templates/order/purchase_order_detail.html:67 -#: part/templates/part/stock.html:81 part/templates/part/supplier.html:12 +#: part/templates/part/supplier.html:12 templates/js/stock.html:784 msgid "New Supplier Part" msgstr "" @@ -1013,8 +1011,7 @@ msgstr "" msgid "Delete Parts" msgstr "" -#: company/templates/company/detail_part.html:43 -#: part/templates/part/stock.html:75 +#: company/templates/company/detail_part.html:43 templates/js/stock.html:778 msgid "New Part" msgstr "" @@ -1046,7 +1043,7 @@ msgstr "" #: company/templates/company/detail_stock.html:35 #: company/templates/company/supplier_part_stock.html:33 -#: part/templates/part/stock.html:53 templates/stock_table.html:5 +#: part/templates/part/stock.html:51 templates/stock_table.html:5 msgid "Export" msgstr "" @@ -1068,7 +1065,7 @@ msgstr "" #: order/templates/order/purchase_orders.html:7 #: order/templates/order/purchase_orders.html:12 #: part/templates/part/orders.html:9 part/templates/part/tabs.html:45 -#: templates/navbar.html:18 +#: templates/navbar.html:26 msgid "Purchase Orders" msgstr "" @@ -1087,7 +1084,7 @@ msgstr "" #: order/templates/order/sales_orders.html:7 #: order/templates/order/sales_orders.html:12 #: part/templates/part/sales_orders.html:9 part/templates/part/tabs.html:50 -#: templates/navbar.html:25 +#: templates/navbar.html:33 msgid "Sales Orders" msgstr "" @@ -1103,7 +1100,7 @@ msgstr "" #: company/templates/company/supplier_part_base.html:6 #: company/templates/company/supplier_part_base.html:19 stock/models.py:328 -#: stock/templates/stock/item_base.html:246 templates/js/company.html:150 +#: stock/templates/stock/item_base.html:244 templates/js/company.html:156 msgid "Supplier Part" msgstr "" @@ -1131,13 +1128,13 @@ msgid "Internal Part" msgstr "" #: company/templates/company/supplier_part_base.html:70 -#: company/templates/company/supplier_part_detail.html:22 +#: company/templates/company/supplier_part_detail.html:22 part/bom.py:171 msgid "SKU" msgstr "" #: company/templates/company/supplier_part_base.html:80 -#: company/templates/company/supplier_part_detail.html:31 -#: templates/js/company.html:174 +#: company/templates/company/supplier_part_detail.html:31 part/bom.py:173 +#: templates/js/company.html:180 msgid "MPN" msgstr "" @@ -1171,7 +1168,7 @@ msgid "New Price Break" msgstr "" #: company/templates/company/supplier_part_pricing.html:28 -#: templates/js/bom.html:213 +#: templates/js/bom.html:214 msgid "Price" msgstr "" @@ -1183,26 +1180,15 @@ msgstr "" msgid "Supplier Part Stock" msgstr "" -#: company/templates/company/supplier_part_stock.html:56 -#: order/templates/order/purchase_order_detail.html:38 -#: order/templates/order/purchase_order_detail.html:118 -#: part/templates/part/stock.html:90 -msgid "New Location" -msgstr "" - -#: company/templates/company/supplier_part_stock.html:57 -#: part/templates/part/stock.html:91 -msgid "Create New Location" -msgstr "" - #: company/templates/company/supplier_part_tabs.html:5 msgid "Pricing" msgstr "" #: company/templates/company/supplier_part_tabs.html:8 #: company/templates/company/tabs.html:12 part/templates/part/tabs.html:18 -#: stock/templates/stock/location.html:12 templates/js/part.html:203 -#: templates/js/stock.html:448 templates/navbar.html:11 +#: stock/templates/stock/location.html:12 templates/js/part.html:124 +#: templates/js/part.html:295 templates/js/stock.html:452 +#: templates/navbar.html:19 msgid "Stock" msgstr "" @@ -1211,22 +1197,22 @@ msgid "Orders" msgstr "" #: company/templates/company/tabs.html:9 -#: order/templates/order/receive_parts.html:14 part/models.py:241 -#: part/templates/part/category.html:83 templates/navbar.html:10 +#: order/templates/order/receive_parts.html:14 part/models.py:240 +#: part/templates/part/category.html:83 templates/navbar.html:18 #: templates/stats.html:8 templates/stats.html:17 msgid "Parts" msgstr "" #: company/views.py:50 part/templates/part/tabs.html:39 -#: templates/navbar.html:16 +#: templates/navbar.html:24 msgid "Suppliers" msgstr "" -#: company/views.py:56 templates/navbar.html:17 +#: company/views.py:56 templates/navbar.html:25 msgid "Manufacturers" msgstr "" -#: company/views.py:62 templates/navbar.html:24 +#: company/views.py:62 templates/navbar.html:32 msgid "Customers" msgstr "" @@ -1282,7 +1268,7 @@ msgstr "" msgid "Edit Supplier Part" msgstr "" -#: company/views.py:265 part/templates/part/stock.html:82 +#: company/views.py:265 templates/js/stock.html:785 msgid "Create new Supplier Part" msgstr "" @@ -1318,6 +1304,14 @@ msgstr "" msgid "Query filters (comma-separated list of key=value pairs" msgstr "" +#: label/models.py:75 +msgid "Label template is enabled" +msgstr "" + +#: label/models.py:76 report/models.py:153 +msgid "Enabled" +msgstr "" + #: order/forms.py:24 msgid "Place order" msgstr "" @@ -1363,10 +1357,26 @@ msgstr "" msgid "Order notes" msgstr "" +#: order/models.py:140 order/models.py:318 +msgid "Purchase order status" +msgstr "" + +#: order/models.py:148 +msgid "Company from which the items are being ordered" +msgstr "" + #: order/models.py:151 msgid "Supplier order reference code" msgstr "" +#: order/models.py:160 +msgid "Date order was issued" +msgstr "" + +#: order/models.py:162 +msgid "Date order was completed" +msgstr "" + #: order/models.py:185 order/models.py:259 part/views.py:1250 #: stock/models.py:239 stock/models.py:682 msgid "Quantity must be greater than zero" @@ -1380,6 +1390,10 @@ msgstr "" msgid "Lines can only be received against an order marked as 'Placed'" msgstr "" +#: order/models.py:314 +msgid "Company to which the items are being sold" +msgstr "" + #: order/models.py:320 msgid "Customer order reference code" msgstr "" @@ -1402,7 +1416,7 @@ msgstr "" #: order/models.py:466 order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:23 -#: stock/templates/stock/item_base.html:220 templates/js/order.html:136 +#: stock/templates/stock/item_base.html:218 templates/js/order.html:138 msgid "Purchase Order" msgstr "" @@ -1458,7 +1472,7 @@ msgstr "" msgid "Order Status" msgstr "" -#: order/templates/order/order_base.html:80 templates/js/order.html:151 +#: order/templates/order/order_base.html:80 templates/js/order.html:153 msgid "Supplier Reference" msgstr "" @@ -1467,7 +1481,7 @@ msgid "Issued" msgstr "" #: order/templates/order/order_base.html:106 -#: order/templates/order/purchase_order_detail.html:180 +#: order/templates/order/purchase_order_detail.html:182 #: order/templates/order/receive_parts.html:22 #: order/templates/order/sales_order_base.html:105 msgid "Received" @@ -1514,8 +1528,8 @@ msgid "Select existing purchase orders, or create new orders." msgstr "" #: order/templates/order/order_wizard/select_pos.html:31 -#: order/templates/order/po_tabs.html:5 templates/js/order.html:175 -#: templates/js/order.html:253 +#: order/templates/order/po_tabs.html:5 templates/js/order.html:177 +#: templates/js/order.html:257 msgid "Items" msgstr "" @@ -1546,6 +1560,12 @@ msgstr "" msgid "Purchase Order Items" msgstr "" +#: order/templates/order/purchase_order_detail.html:38 +#: order/templates/order/purchase_order_detail.html:118 +#: templates/js/stock.html:790 +msgid "New Location" +msgstr "" + #: order/templates/order/purchase_order_detail.html:39 #: order/templates/order/purchase_order_detail.html:119 #: stock/templates/stock/location.html:16 @@ -1556,25 +1576,25 @@ msgstr "" msgid "Create new supplier part" msgstr "" -#: order/templates/order/purchase_order_detail.html:130 +#: order/templates/order/purchase_order_detail.html:131 msgid "No line items found" msgstr "" -#: order/templates/order/purchase_order_detail.html:162 +#: order/templates/order/purchase_order_detail.html:164 #: order/templates/order/receive_parts.html:20 msgid "Order Code" msgstr "" -#: order/templates/order/purchase_order_detail.html:211 -#: order/templates/order/sales_order_detail.html:280 +#: order/templates/order/purchase_order_detail.html:213 +#: order/templates/order/sales_order_detail.html:281 msgid "Edit line item" msgstr "" -#: order/templates/order/purchase_order_detail.html:212 +#: order/templates/order/purchase_order_detail.html:214 msgid "Delete line item" msgstr "" -#: order/templates/order/purchase_order_detail.html:217 +#: order/templates/order/purchase_order_detail.html:219 msgid "Receive line item" msgstr "" @@ -1587,7 +1607,7 @@ msgid "Select parts to receive against this order" msgstr "" #: order/templates/order/receive_parts.html:21 -#: part/templates/part/part_base.html:129 templates/js/part.html:219 +#: part/templates/part/part_base.html:129 templates/js/part.html:311 msgid "On Order" msgstr "" @@ -1611,7 +1631,7 @@ msgstr "" msgid "Sales Order Details" msgstr "" -#: order/templates/order/sales_order_base.html:79 templates/js/order.html:224 +#: order/templates/order/sales_order_base.html:79 templates/js/order.html:228 msgid "Customer Reference" msgstr "" @@ -1625,15 +1645,15 @@ msgstr "" msgid "Sales Order Items" msgstr "" -#: order/templates/order/sales_order_detail.html:222 +#: order/templates/order/sales_order_detail.html:223 msgid "Fulfilled" msgstr "" -#: order/templates/order/sales_order_detail.html:277 +#: order/templates/order/sales_order_detail.html:278 msgid "Allocate parts" msgstr "" -#: order/templates/order/sales_order_detail.html:281 +#: order/templates/order/sales_order_detail.html:282 msgid "Delete line item " msgstr "" @@ -1819,24 +1839,33 @@ msgstr "" msgid "Remove allocation" msgstr "" -#: part/bom.py:144 +#: part/bom.py:138 part/templates/part/category.html:50 +#: part/templates/part/detail.html:87 +msgid "Default Location" +msgstr "" + +#: part/bom.py:139 part/templates/part/part_base.html:102 +msgid "Available Stock" +msgstr "" + +#: part/bom.py:274 #, python-brace-format msgid "Unsupported file format: {f}" msgstr "" -#: part/bom.py:149 +#: part/bom.py:279 msgid "Error reading BOM file (invalid data)" msgstr "" -#: part/bom.py:151 +#: part/bom.py:281 msgid "Error reading BOM file (incorrect row size)" msgstr "" -#: part/forms.py:55 stock/forms.py:243 +#: part/forms.py:55 stock/forms.py:250 msgid "File Format" msgstr "" -#: part/forms.py:55 stock/forms.py:243 +#: part/forms.py:55 stock/forms.py:250 msgid "Select output file format" msgstr "" @@ -1856,254 +1885,286 @@ msgstr "" msgid "Select maximum number of BOM levels to export (0 = all levels)" msgstr "" -#: part/forms.py:78 +#: part/forms.py:61 +msgid "Include Parameter Data" +msgstr "" + +#: part/forms.py:61 +msgid "Include part parameters data in exported BOM" +msgstr "" + +#: part/forms.py:63 +msgid "Include Stock Data" +msgstr "" + +#: part/forms.py:63 +msgid "Include part stock data in exported BOM" +msgstr "" + +#: part/forms.py:65 +msgid "Include Supplier Data" +msgstr "" + +#: part/forms.py:65 +msgid "Include part supplier data in exported BOM" +msgstr "" + +#: part/forms.py:84 msgid "Confirm that the BOM is correct" msgstr "" -#: part/forms.py:90 +#: part/forms.py:96 msgid "Select BOM file to upload" msgstr "" -#: part/forms.py:114 +#: part/forms.py:120 msgid "Select part category" msgstr "" -#: part/forms.py:128 +#: part/forms.py:134 msgid "Perform 'deep copy' which will duplicate all BOM data for this part" msgstr "" -#: part/forms.py:133 +#: part/forms.py:139 msgid "Confirm part creation" msgstr "" -#: part/forms.py:223 +#: part/forms.py:237 msgid "Input quantity for price calculation" msgstr "" -#: part/forms.py:226 +#: part/forms.py:240 msgid "Select currency for price calculation" msgstr "" -#: part/models.py:65 +#: part/models.py:64 msgid "Default location for parts in this category" msgstr "" -#: part/models.py:68 +#: part/models.py:67 msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:74 part/templates/part/part_app_base.html:9 +#: part/models.py:73 part/templates/part/part_app_base.html:9 msgid "Part Category" msgstr "" -#: part/models.py:75 part/templates/part/category.html:13 +#: part/models.py:74 part/templates/part/category.html:13 #: part/templates/part/category.html:78 templates/stats.html:12 msgid "Part Categories" msgstr "" -#: part/models.py:428 -msgid "Part must be unique for name, IPN and revision" -msgstr "" - -#: part/models.py:443 part/templates/part/detail.html:19 -msgid "Part name" -msgstr "" - -#: part/models.py:447 -msgid "Is this part a template part?" -msgstr "" - -#: part/models.py:456 -msgid "Is this part a variant of another part?" -msgstr "" - -#: part/models.py:458 -msgid "Part description" -msgstr "" - -#: part/models.py:460 -msgid "Part keywords to improve visibility in search results" -msgstr "" - -#: part/models.py:465 -msgid "Part category" -msgstr "" - -#: part/models.py:467 -msgid "Internal Part Number" -msgstr "" - -#: part/models.py:469 -msgid "Part revision or version number" -msgstr "" - -#: part/models.py:471 -msgid "Link to extenal URL" -msgstr "" - -#: part/models.py:483 -msgid "Where is this item normally stored?" -msgstr "" - -#: part/models.py:527 -msgid "Default supplier part" -msgstr "" - -#: part/models.py:530 -msgid "Minimum allowed stock level" -msgstr "" - -#: part/models.py:532 -msgid "Stock keeping units for this part" -msgstr "" - -#: part/models.py:534 -msgid "Can this part be built from other parts?" -msgstr "" - -#: part/models.py:536 -msgid "Can this part be used to build other parts?" -msgstr "" - -#: part/models.py:538 -msgid "Does this part have tracking for unique items?" -msgstr "" - -#: part/models.py:540 -msgid "Can this part be purchased from external suppliers?" -msgstr "" - -#: part/models.py:542 -msgid "Can this part be sold to customers?" -msgstr "" - -#: part/models.py:544 -msgid "Is this part active?" -msgstr "" - -#: part/models.py:546 -msgid "Is this a virtual part, such as a software product or license?" -msgstr "" - -#: part/models.py:548 -msgid "Part notes - supports Markdown formatting" -msgstr "" - -#: part/models.py:550 -msgid "Stored BOM checksum" -msgstr "" - -#: part/models.py:1223 -msgid "Test templates can only be created for trackable parts" -msgstr "" - -#: part/models.py:1240 -msgid "Test with this name already exists for this part" -msgstr "" - -#: part/models.py:1259 templates/js/part.html:350 templates/js/stock.html:90 -msgid "Test Name" -msgstr "" - -#: part/models.py:1260 -msgid "Enter a name for the test" -msgstr "" - -#: part/models.py:1265 -msgid "Test Description" -msgstr "" - -#: part/models.py:1266 -msgid "Enter description for this test" -msgstr "" - -#: part/models.py:1272 -msgid "Is this test required to pass?" -msgstr "" - -#: part/models.py:1277 templates/js/part.html:367 -msgid "Requires Value" -msgstr "" - -#: part/models.py:1278 -msgid "Does this test require a value when adding a test result?" -msgstr "" - -#: part/models.py:1283 templates/js/part.html:374 -msgid "Requires Attachment" -msgstr "" - -#: part/models.py:1284 -msgid "Does this test require a file attachment when adding a test result?" -msgstr "" - -#: part/models.py:1317 -msgid "Parameter template name must be unique" -msgstr "" - -#: part/models.py:1322 -msgid "Parameter Name" -msgstr "" - -#: part/models.py:1324 -msgid "Parameter Units" -msgstr "" - -#: part/models.py:1350 -msgid "Parent Part" -msgstr "" - -#: part/models.py:1352 -msgid "Parameter Template" -msgstr "" - -#: part/models.py:1354 -msgid "Parameter Value" -msgstr "" - -#: part/models.py:1383 -msgid "Select parent part" -msgstr "" - -#: part/models.py:1391 -msgid "Select part to be used in BOM" -msgstr "" - -#: part/models.py:1397 -msgid "BOM quantity for this BOM item" -msgstr "" - -#: part/models.py:1400 -msgid "Estimated build wastage quantity (absolute or percentage)" -msgstr "" - -#: part/models.py:1403 -msgid "BOM item reference" -msgstr "" - -#: part/models.py:1406 -msgid "BOM item notes" -msgstr "" - -#: part/models.py:1408 -msgid "BOM line checksum" -msgstr "" - -#: part/models.py:1472 part/views.py:1256 part/views.py:1308 -#: stock/models.py:229 -msgid "Quantity must be integer value for trackable parts" -msgstr "" - -#: part/models.py:1481 -msgid "Part cannot be added to its own Bill of Materials" -msgstr "" - -#: part/models.py:1488 +#: part/models.py:291 part/models.py:301 #, python-brace-format msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)" msgstr "" -#: part/models.py:1495 +#: part/models.py:381 +msgid "Next available serial numbers are" +msgstr "" + +#: part/models.py:385 +msgid "Next available serial number is" +msgstr "" + +#: part/models.py:390 +msgid "Most recent serial number is" +msgstr "" + +#: part/models.py:468 +msgid "Part must be unique for name, IPN and revision" +msgstr "" + +#: part/models.py:483 part/templates/part/detail.html:19 +msgid "Part name" +msgstr "" + +#: part/models.py:487 +msgid "Is this part a template part?" +msgstr "" + +#: part/models.py:496 +msgid "Is this part a variant of another part?" +msgstr "" + +#: part/models.py:498 +msgid "Part description" +msgstr "" + +#: part/models.py:500 +msgid "Part keywords to improve visibility in search results" +msgstr "" + +#: part/models.py:505 +msgid "Part category" +msgstr "" + +#: part/models.py:507 +msgid "Internal Part Number" +msgstr "" + +#: part/models.py:509 +msgid "Part revision or version number" +msgstr "" + +#: part/models.py:511 +msgid "Link to extenal URL" +msgstr "" + +#: part/models.py:523 +msgid "Where is this item normally stored?" +msgstr "" + +#: part/models.py:567 +msgid "Default supplier part" +msgstr "" + +#: part/models.py:570 +msgid "Minimum allowed stock level" +msgstr "" + +#: part/models.py:572 +msgid "Stock keeping units for this part" +msgstr "" + +#: part/models.py:574 +msgid "Can this part be built from other parts?" +msgstr "" + +#: part/models.py:576 +msgid "Can this part be used to build other parts?" +msgstr "" + +#: part/models.py:578 +msgid "Does this part have tracking for unique items?" +msgstr "" + +#: part/models.py:580 +msgid "Can this part be purchased from external suppliers?" +msgstr "" + +#: part/models.py:582 +msgid "Can this part be sold to customers?" +msgstr "" + +#: part/models.py:584 +msgid "Is this part active?" +msgstr "" + +#: part/models.py:586 +msgid "Is this a virtual part, such as a software product or license?" +msgstr "" + +#: part/models.py:588 +msgid "Part notes - supports Markdown formatting" +msgstr "" + +#: part/models.py:590 +msgid "Stored BOM checksum" +msgstr "" + +#: part/models.py:1272 +msgid "Test templates can only be created for trackable parts" +msgstr "" + +#: part/models.py:1289 +msgid "Test with this name already exists for this part" +msgstr "" + +#: part/models.py:1308 templates/js/part.html:444 templates/js/stock.html:92 +msgid "Test Name" +msgstr "" + +#: part/models.py:1309 +msgid "Enter a name for the test" +msgstr "" + +#: part/models.py:1314 +msgid "Test Description" +msgstr "" + +#: part/models.py:1315 +msgid "Enter description for this test" +msgstr "" + +#: part/models.py:1321 +msgid "Is this test required to pass?" +msgstr "" + +#: part/models.py:1326 templates/js/part.html:461 +msgid "Requires Value" +msgstr "" + +#: part/models.py:1327 +msgid "Does this test require a value when adding a test result?" +msgstr "" + +#: part/models.py:1332 templates/js/part.html:468 +msgid "Requires Attachment" +msgstr "" + +#: part/models.py:1333 +msgid "Does this test require a file attachment when adding a test result?" +msgstr "" + +#: part/models.py:1366 +msgid "Parameter template name must be unique" +msgstr "" + +#: part/models.py:1371 +msgid "Parameter Name" +msgstr "" + +#: part/models.py:1373 +msgid "Parameter Units" +msgstr "" + +#: part/models.py:1399 +msgid "Parent Part" +msgstr "" + +#: part/models.py:1401 +msgid "Parameter Template" +msgstr "" + +#: part/models.py:1403 +msgid "Parameter Value" +msgstr "" + +#: part/models.py:1432 +msgid "Select parent part" +msgstr "" + +#: part/models.py:1440 +msgid "Select part to be used in BOM" +msgstr "" + +#: part/models.py:1446 +msgid "BOM quantity for this BOM item" +msgstr "" + +#: part/models.py:1449 +msgid "Estimated build wastage quantity (absolute or percentage)" +msgstr "" + +#: part/models.py:1452 +msgid "BOM item reference" +msgstr "" + +#: part/models.py:1455 +msgid "BOM item notes" +msgstr "" + +#: part/models.py:1457 +msgid "BOM line checksum" +msgstr "" + +#: part/models.py:1521 part/views.py:1256 part/views.py:1308 +#: stock/models.py:229 +msgid "Quantity must be integer value for trackable parts" +msgstr "" + +#: part/models.py:1530 msgid "BOM Item" msgstr "" @@ -2122,14 +2183,14 @@ msgstr "" #: part/templates/part/allocation.html:45 #: stock/templates/stock/item_base.html:8 #: stock/templates/stock/item_base.html:58 -#: stock/templates/stock/item_base.html:228 -#: stock/templates/stock/stock_adjust.html:16 templates/js/build.html:106 -#: templates/js/stock.html:643 +#: stock/templates/stock/item_base.html:226 +#: stock/templates/stock/stock_adjust.html:16 templates/js/build.html:108 +#: templates/js/stock.html:647 msgid "Stock Item" msgstr "" #: part/templates/part/allocation.html:20 -#: stock/templates/stock/item_base.html:182 +#: stock/templates/stock/item_base.html:180 msgid "Build Order" msgstr "" @@ -2165,7 +2226,7 @@ msgstr "" msgid "Validate Bill of Materials" msgstr "" -#: part/templates/part/bom.html:46 part/views.py:1523 +#: part/templates/part/bom.html:46 part/views.py:1543 msgid "Export Bill of Materials" msgstr "" @@ -2253,11 +2314,7 @@ msgstr "" msgid "Category Description" msgstr "" -#: part/templates/part/category.html:50 part/templates/part/detail.html:81 -msgid "Default Location" -msgstr "" - -#: part/templates/part/category.html:57 part/templates/part/detail.html:58 +#: part/templates/part/category.html:57 part/templates/part/detail.html:64 msgid "Keywords" msgstr "" @@ -2274,140 +2331,145 @@ msgid "Part Details" msgstr "" #: part/templates/part/detail.html:25 part/templates/part/part_base.html:79 +#: templates/js/part.html:112 msgid "IPN" msgstr "" -#: part/templates/part/detail.html:32 +#: part/templates/part/detail.html:32 templates/js/part.html:116 msgid "Revision" msgstr "" #: part/templates/part/detail.html:39 -msgid "Next Serial Number" +msgid "Latest Serial Number" msgstr "" -#: part/templates/part/detail.html:51 +#: part/templates/part/detail.html:44 +msgid "No serial numbers recorded" +msgstr "" + +#: part/templates/part/detail.html:57 msgid "Variant Of" msgstr "" -#: part/templates/part/detail.html:64 part/templates/part/set_category.html:15 -#: templates/js/part.html:190 +#: part/templates/part/detail.html:70 part/templates/part/set_category.html:15 +#: templates/js/part.html:282 msgid "Category" msgstr "" -#: part/templates/part/detail.html:88 +#: part/templates/part/detail.html:94 msgid "Default Supplier" msgstr "" -#: part/templates/part/detail.html:96 part/templates/part/params.html:22 +#: part/templates/part/detail.html:102 part/templates/part/params.html:22 msgid "Units" msgstr "" -#: part/templates/part/detail.html:102 +#: part/templates/part/detail.html:108 msgid "Minimum Stock" msgstr "" -#: part/templates/part/detail.html:108 templates/js/order.html:243 +#: part/templates/part/detail.html:114 templates/js/order.html:247 msgid "Creation Date" msgstr "" -#: part/templates/part/detail.html:114 +#: part/templates/part/detail.html:120 msgid "Created By" msgstr "" -#: part/templates/part/detail.html:121 +#: part/templates/part/detail.html:127 msgid "Responsible User" msgstr "" -#: part/templates/part/detail.html:130 +#: part/templates/part/detail.html:136 msgid "Virtual" msgstr "" -#: part/templates/part/detail.html:133 +#: part/templates/part/detail.html:139 msgid "Part is virtual (not a physical part)" msgstr "" -#: part/templates/part/detail.html:135 +#: part/templates/part/detail.html:141 msgid "Part is not a virtual part" msgstr "" -#: part/templates/part/detail.html:139 stock/forms.py:237 +#: part/templates/part/detail.html:145 stock/forms.py:244 #: templates/js/table_filters.html:159 msgid "Template" msgstr "" -#: part/templates/part/detail.html:142 +#: part/templates/part/detail.html:148 msgid "Part is a template part (variants can be made from this part)" msgstr "" -#: part/templates/part/detail.html:144 +#: part/templates/part/detail.html:150 msgid "Part is not a template part" msgstr "" -#: part/templates/part/detail.html:148 templates/js/table_filters.html:171 +#: part/templates/part/detail.html:154 templates/js/table_filters.html:171 msgid "Assembly" msgstr "" -#: part/templates/part/detail.html:151 +#: part/templates/part/detail.html:157 msgid "Part can be assembled from other parts" msgstr "" -#: part/templates/part/detail.html:153 +#: part/templates/part/detail.html:159 msgid "Part cannot be assembled from other parts" msgstr "" -#: part/templates/part/detail.html:157 templates/js/table_filters.html:175 +#: part/templates/part/detail.html:163 templates/js/table_filters.html:175 msgid "Component" msgstr "" -#: part/templates/part/detail.html:160 +#: part/templates/part/detail.html:166 msgid "Part can be used in assemblies" msgstr "" -#: part/templates/part/detail.html:162 +#: part/templates/part/detail.html:168 msgid "Part cannot be used in assemblies" msgstr "" -#: part/templates/part/detail.html:166 templates/js/table_filters.html:187 +#: part/templates/part/detail.html:172 templates/js/table_filters.html:187 msgid "Trackable" msgstr "" -#: part/templates/part/detail.html:169 +#: part/templates/part/detail.html:175 msgid "Part stock is tracked by serial number" msgstr "" -#: part/templates/part/detail.html:171 +#: part/templates/part/detail.html:177 msgid "Part stock is not tracked by serial number" msgstr "" -#: part/templates/part/detail.html:175 +#: part/templates/part/detail.html:181 msgid "Purchaseable" msgstr "" -#: part/templates/part/detail.html:178 part/templates/part/detail.html:180 +#: part/templates/part/detail.html:184 part/templates/part/detail.html:186 msgid "Part can be purchased from external suppliers" msgstr "" -#: part/templates/part/detail.html:184 templates/js/table_filters.html:183 +#: part/templates/part/detail.html:190 templates/js/table_filters.html:183 msgid "Salable" msgstr "" -#: part/templates/part/detail.html:187 +#: part/templates/part/detail.html:193 msgid "Part can be sold to customers" msgstr "" -#: part/templates/part/detail.html:189 +#: part/templates/part/detail.html:195 msgid "Part cannot be sold to customers" msgstr "" -#: part/templates/part/detail.html:193 templates/js/table_filters.html:154 +#: part/templates/part/detail.html:199 templates/js/table_filters.html:154 msgid "Active" msgstr "" -#: part/templates/part/detail.html:196 +#: part/templates/part/detail.html:202 msgid "Part is active" msgstr "" -#: part/templates/part/detail.html:198 +#: part/templates/part/detail.html:204 msgid "Part is not active" msgstr "" @@ -2431,8 +2493,8 @@ msgstr "" msgid "New Parameter" msgstr "" -#: part/templates/part/params.html:21 stock/models.py:1269 -#: templates/js/stock.html:110 +#: part/templates/part/params.html:21 stock/models.py:1266 +#: templates/js/stock.html:112 msgid "Value" msgstr "" @@ -2460,8 +2522,8 @@ msgstr "" msgid "This part is a variant of" msgstr "" -#: part/templates/part/part_base.html:33 templates/js/company.html:125 -#: templates/js/part.html:167 +#: part/templates/part/part_base.html:33 templates/js/company.html:131 +#: templates/js/part.html:259 msgid "Inactive" msgstr "" @@ -2507,10 +2569,6 @@ msgstr "" msgid "Delete part" msgstr "" -#: part/templates/part/part_base.html:102 -msgid "Available Stock" -msgstr "" - #: part/templates/part/part_base.html:108 templates/js/table_filters.html:57 msgid "In Stock" msgstr "" @@ -2567,12 +2625,8 @@ msgstr "" msgid "Part Stock" msgstr "" -#: part/templates/part/stock.html:76 -msgid "Create New Part" -msgstr "" - -#: part/templates/part/stock_count.html:7 templates/js/bom.html:203 -#: templates/js/part.html:227 +#: part/templates/part/stock_count.html:7 templates/js/bom.html:204 +#: templates/js/part.html:319 msgid "No Stock" msgstr "" @@ -2612,7 +2666,7 @@ msgstr "" msgid "Used In" msgstr "" -#: part/templates/part/tabs.html:55 stock/templates/stock/item_base.html:272 +#: part/templates/part/tabs.html:55 stock/templates/stock/item_base.html:270 msgid "Tests" msgstr "" @@ -2624,10 +2678,22 @@ msgstr "" msgid "Assemblies" msgstr "" -#: part/templates/part/used_in.html:42 +#: part/templates/part/used_in.html:43 msgid "INACTIVE" msgstr "" +#: part/templates/part/variants.html:11 +msgid "Part Variants" +msgstr "" + +#: part/templates/part/variants.html:21 +msgid "Create new variant" +msgstr "" + +#: part/templates/part/variants.html:21 +msgid "New Variant" +msgstr "" + #: part/views.py:75 msgid "Add part attachment" msgstr "" @@ -2733,123 +2799,131 @@ msgstr "" msgid "Duplicate part selected" msgstr "" -#: part/views.py:1329 +#: part/views.py:1331 msgid "Select a part" msgstr "" -#: part/views.py:1333 +#: part/views.py:1337 +msgid "Selected part creates a circular BOM" +msgstr "" + +#: part/views.py:1341 msgid "Specify quantity" msgstr "" -#: part/views.py:1565 +#: part/views.py:1591 msgid "Confirm Part Deletion" msgstr "" -#: part/views.py:1572 +#: part/views.py:1598 msgid "Part was deleted" msgstr "" -#: part/views.py:1581 +#: part/views.py:1607 msgid "Part Pricing" msgstr "" -#: part/views.py:1703 +#: part/views.py:1729 msgid "Create Part Parameter Template" msgstr "" -#: part/views.py:1711 +#: part/views.py:1737 msgid "Edit Part Parameter Template" msgstr "" -#: part/views.py:1718 +#: part/views.py:1744 msgid "Delete Part Parameter Template" msgstr "" -#: part/views.py:1726 +#: part/views.py:1752 msgid "Create Part Parameter" msgstr "" -#: part/views.py:1776 +#: part/views.py:1802 msgid "Edit Part Parameter" msgstr "" -#: part/views.py:1790 +#: part/views.py:1816 msgid "Delete Part Parameter" msgstr "" -#: part/views.py:1806 +#: part/views.py:1832 msgid "Edit Part Category" msgstr "" -#: part/views.py:1841 +#: part/views.py:1867 msgid "Delete Part Category" msgstr "" -#: part/views.py:1847 +#: part/views.py:1873 msgid "Part category was deleted" msgstr "" -#: part/views.py:1855 +#: part/views.py:1881 msgid "Create new part category" msgstr "" -#: part/views.py:1906 +#: part/views.py:1932 msgid "Create BOM item" msgstr "" -#: part/views.py:1972 +#: part/views.py:1998 msgid "Edit BOM item" msgstr "" -#: part/views.py:2020 +#: part/views.py:2046 msgid "Confim BOM item deletion" msgstr "" -#: report/models.py:167 +#: report/models.py:138 msgid "Template name" msgstr "" -#: report/models.py:173 +#: report/models.py:144 msgid "Report template file" msgstr "" -#: report/models.py:177 +#: report/models.py:148 msgid "Report template description" msgstr "" -#: report/models.py:221 +#: report/models.py:152 +msgid "Report template is enabled" +msgstr "" + +#: report/models.py:159 msgid "Part query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:266 +#: report/models.py:218 msgid "Report asset file" msgstr "" -#: report/models.py:269 +#: report/models.py:221 msgid "Asset file description" msgstr "" -#: stock/forms.py:185 +#: stock/forms.py:187 msgid "Label" msgstr "" -#: stock/forms.py:186 stock/forms.py:237 +#: stock/forms.py:188 stock/forms.py:244 msgid "Select test report template" msgstr "" -#: stock/forms.py:245 +#: stock/forms.py:252 msgid "Include stock items in sub locations" msgstr "" -#: stock/forms.py:278 +#: stock/forms.py:285 msgid "Destination stock location" msgstr "" -#: stock/forms.py:284 +#: stock/forms.py:291 msgid "Confirm movement of stock items" msgstr "" -#: stock/forms.py:286 +#: stock/forms.py:293 msgid "Set the destination as the default location for selected parts" msgstr "" @@ -2976,80 +3050,80 @@ msgstr "" msgid "Quantity must not exceed available stock quantity ({n})" msgstr "" -#: stock/models.py:688 stock/models.py:691 +#: stock/models.py:688 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:694 +#: stock/models.py:691 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:704 +#: stock/models.py:701 msgid "Serial numbers already exist: " msgstr "" -#: stock/models.py:729 +#: stock/models.py:726 msgid "Add serial number" msgstr "" -#: stock/models.py:732 +#: stock/models.py:729 #, python-brace-format msgid "Serialized {n} items" msgstr "" -#: stock/models.py:843 +#: stock/models.py:840 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:1170 +#: stock/models.py:1167 msgid "Tracking entry title" msgstr "" -#: stock/models.py:1172 +#: stock/models.py:1169 msgid "Entry notes" msgstr "" -#: stock/models.py:1174 +#: stock/models.py:1171 msgid "Link to external page for further information" msgstr "" -#: stock/models.py:1234 +#: stock/models.py:1231 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:1240 +#: stock/models.py:1237 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:1257 +#: stock/models.py:1254 msgid "Test" msgstr "" -#: stock/models.py:1258 +#: stock/models.py:1255 msgid "Test name" msgstr "" -#: stock/models.py:1263 +#: stock/models.py:1260 msgid "Result" msgstr "" -#: stock/models.py:1264 templates/js/table_filters.html:90 +#: stock/models.py:1261 templates/js/table_filters.html:90 msgid "Test result" msgstr "" -#: stock/models.py:1270 +#: stock/models.py:1267 msgid "Test output value" msgstr "" -#: stock/models.py:1276 +#: stock/models.py:1273 msgid "Attachment" msgstr "" -#: stock/models.py:1277 +#: stock/models.py:1274 msgid "Test result attachment" msgstr "" -#: stock/models.py:1283 +#: stock/models.py:1280 msgid "Test notes" msgstr "" @@ -3151,39 +3225,39 @@ msgstr "" msgid "Delete stock item" msgstr "" -#: stock/templates/stock/item_base.html:128 +#: stock/templates/stock/item_base.html:127 msgid "Generate test report" msgstr "" -#: stock/templates/stock/item_base.html:137 +#: stock/templates/stock/item_base.html:135 msgid "Stock Item Details" msgstr "" -#: stock/templates/stock/item_base.html:170 +#: stock/templates/stock/item_base.html:168 msgid "Belongs To" msgstr "" -#: stock/templates/stock/item_base.html:192 +#: stock/templates/stock/item_base.html:190 msgid "No location set" msgstr "" -#: stock/templates/stock/item_base.html:199 +#: stock/templates/stock/item_base.html:197 msgid "Unique Identifier" msgstr "" -#: stock/templates/stock/item_base.html:227 +#: stock/templates/stock/item_base.html:225 msgid "Parent Item" msgstr "" -#: stock/templates/stock/item_base.html:252 +#: stock/templates/stock/item_base.html:250 msgid "Last Updated" msgstr "" -#: stock/templates/stock/item_base.html:257 +#: stock/templates/stock/item_base.html:255 msgid "Last Stocktake" msgstr "" -#: stock/templates/stock/item_base.html:261 +#: stock/templates/stock/item_base.html:259 msgid "No stocktake performed" msgstr "" @@ -3211,7 +3285,7 @@ msgstr "" msgid "Add Test Data" msgstr "" -#: stock/templates/stock/item_tests.html:21 +#: stock/templates/stock/item_tests.html:20 msgid "Test Report" msgstr "" @@ -3270,11 +3344,7 @@ msgstr "" msgid "Are you sure you want to delete this stock location?" msgstr "" -#: stock/templates/stock/stock_adjust.html:35 -msgid "Stock item is serialized and quantity cannot be adjusted" -msgstr "" - -#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:1052 +#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:1053 msgid "Convert Stock Item" msgstr "" @@ -3342,174 +3412,174 @@ msgstr "" msgid "Select Label Template" msgstr "" -#: stock/views.py:326 +#: stock/views.py:327 msgid "Select valid label" msgstr "" -#: stock/views.py:388 +#: stock/views.py:389 msgid "Delete All Test Data" msgstr "" -#: stock/views.py:403 +#: stock/views.py:404 msgid "Confirm test data deletion" msgstr "" -#: stock/views.py:423 +#: stock/views.py:424 msgid "Add Test Result" msgstr "" -#: stock/views.py:460 +#: stock/views.py:461 msgid "Edit Test Result" msgstr "" -#: stock/views.py:477 +#: stock/views.py:478 msgid "Delete Test Result" msgstr "" -#: stock/views.py:488 +#: stock/views.py:489 msgid "Select Test Report Template" msgstr "" -#: stock/views.py:502 +#: stock/views.py:503 msgid "Select valid template" msgstr "" -#: stock/views.py:554 +#: stock/views.py:555 msgid "Stock Export Options" msgstr "" -#: stock/views.py:674 +#: stock/views.py:675 msgid "Stock Item QR Code" msgstr "" -#: stock/views.py:697 +#: stock/views.py:698 msgid "Adjust Stock" msgstr "" -#: stock/views.py:806 +#: stock/views.py:807 msgid "Move Stock Items" msgstr "" -#: stock/views.py:807 +#: stock/views.py:808 msgid "Count Stock Items" msgstr "" -#: stock/views.py:808 +#: stock/views.py:809 msgid "Remove From Stock" msgstr "" -#: stock/views.py:809 +#: stock/views.py:810 msgid "Add Stock Items" msgstr "" -#: stock/views.py:810 +#: stock/views.py:811 msgid "Delete Stock Items" msgstr "" -#: stock/views.py:838 +#: stock/views.py:839 msgid "Must enter integer value" msgstr "" -#: stock/views.py:843 +#: stock/views.py:844 msgid "Quantity must be positive" msgstr "" -#: stock/views.py:850 +#: stock/views.py:851 #, python-brace-format msgid "Quantity must not exceed {x}" msgstr "" -#: stock/views.py:858 +#: stock/views.py:859 msgid "Confirm stock adjustment" msgstr "" -#: stock/views.py:929 +#: stock/views.py:930 #, python-brace-format msgid "Added stock to {n} items" msgstr "" -#: stock/views.py:944 +#: stock/views.py:945 #, python-brace-format msgid "Removed stock from {n} items" msgstr "" -#: stock/views.py:957 +#: stock/views.py:958 #, python-brace-format msgid "Counted stock for {n} items" msgstr "" -#: stock/views.py:985 +#: stock/views.py:986 msgid "No items were moved" msgstr "" -#: stock/views.py:988 +#: stock/views.py:989 #, python-brace-format msgid "Moved {n} items to {dest}" msgstr "" -#: stock/views.py:1007 +#: stock/views.py:1008 #, python-brace-format msgid "Deleted {n} stock items" msgstr "" -#: stock/views.py:1019 +#: stock/views.py:1020 msgid "Edit Stock Item" msgstr "" -#: stock/views.py:1079 +#: stock/views.py:1080 msgid "Create new Stock Location" msgstr "" -#: stock/views.py:1100 +#: stock/views.py:1101 msgid "Serialize Stock" msgstr "" -#: stock/views.py:1192 +#: stock/views.py:1194 msgid "Create new Stock Item" msgstr "" -#: stock/views.py:1285 +#: stock/views.py:1293 msgid "Duplicate Stock Item" msgstr "" -#: stock/views.py:1358 +#: stock/views.py:1361 msgid "Invalid quantity" msgstr "" -#: stock/views.py:1361 +#: stock/views.py:1364 msgid "Quantity cannot be less than zero" msgstr "" -#: stock/views.py:1365 +#: stock/views.py:1368 msgid "Invalid part selection" msgstr "" -#: stock/views.py:1414 +#: stock/views.py:1417 #, python-brace-format msgid "Created {n} new stock items" msgstr "" -#: stock/views.py:1433 stock/views.py:1449 +#: stock/views.py:1436 stock/views.py:1452 msgid "Created new stock item" msgstr "" -#: stock/views.py:1468 +#: stock/views.py:1471 msgid "Delete Stock Location" msgstr "" -#: stock/views.py:1481 +#: stock/views.py:1484 msgid "Delete Stock Item" msgstr "" -#: stock/views.py:1492 +#: stock/views.py:1495 msgid "Delete Stock Tracking Entry" msgstr "" -#: stock/views.py:1509 +#: stock/views.py:1512 msgid "Edit Stock Tracking Entry" msgstr "" -#: stock/views.py:1518 +#: stock/views.py:1521 msgid "Add Stock Tracking Entry" msgstr "" @@ -3529,11 +3599,11 @@ msgstr "" msgid "No part parameter templates found" msgstr "" -#: templates/InvenTree/settings/part.html:47 +#: templates/InvenTree/settings/part.html:48 msgid "Edit Template" msgstr "" -#: templates/InvenTree/settings/part.html:48 +#: templates/InvenTree/settings/part.html:49 msgid "Delete Template" msgstr "" @@ -3678,27 +3748,27 @@ msgstr "" msgid "Open subassembly" msgstr "" -#: templates/js/bom.html:194 templates/js/build.html:113 +#: templates/js/bom.html:195 templates/js/build.html:115 msgid "Available" msgstr "" -#: templates/js/bom.html:219 +#: templates/js/bom.html:220 msgid "No pricing available" msgstr "" -#: templates/js/bom.html:239 +#: templates/js/bom.html:242 msgid "Validate BOM Item" msgstr "" -#: templates/js/bom.html:240 +#: templates/js/bom.html:243 msgid "This line has been validated" msgstr "" -#: templates/js/bom.html:242 +#: templates/js/bom.html:245 msgid "Edit BOM Item" msgstr "" -#: templates/js/bom.html:243 +#: templates/js/bom.html:246 msgid "Delete BOM Item" msgstr "" @@ -3706,7 +3776,7 @@ msgstr "" msgid "No builds matching query" msgstr "" -#: templates/js/build.html:102 +#: templates/js/build.html:104 msgid "No parts allocated for" msgstr "" @@ -3714,87 +3784,91 @@ msgstr "" msgid "No company information found" msgstr "" -#: templates/js/company.html:101 +#: templates/js/company.html:106 msgid "No supplier parts found" msgstr "" -#: templates/js/company.html:117 templates/js/part.html:145 +#: templates/js/company.html:123 templates/js/part.html:237 msgid "Template part" msgstr "" -#: templates/js/company.html:121 templates/js/part.html:149 +#: templates/js/company.html:127 templates/js/part.html:241 msgid "Assembled part" msgstr "" -#: templates/js/company.html:178 +#: templates/js/company.html:184 msgid "Link" msgstr "" -#: templates/js/order.html:126 +#: templates/js/order.html:127 msgid "No purchase orders found" msgstr "" -#: templates/js/order.html:170 templates/js/stock.html:625 +#: templates/js/order.html:172 templates/js/stock.html:629 msgid "Date" msgstr "" -#: templates/js/order.html:199 +#: templates/js/order.html:202 msgid "No sales orders found" msgstr "" -#: templates/js/order.html:248 +#: templates/js/order.html:252 msgid "Shipment Date" msgstr "" -#: templates/js/part.html:106 templates/js/stock.html:406 +#: templates/js/part.html:134 +msgid "No variants found" +msgstr "" + +#: templates/js/part.html:198 templates/js/stock.html:409 msgid "Select" msgstr "" -#: templates/js/part.html:153 +#: templates/js/part.html:245 msgid "Starred part" msgstr "" -#: templates/js/part.html:157 +#: templates/js/part.html:249 msgid "Salable part" msgstr "" -#: templates/js/part.html:196 +#: templates/js/part.html:288 msgid "No category" msgstr "" -#: templates/js/part.html:214 templates/js/table_filters.html:167 +#: templates/js/part.html:306 templates/js/table_filters.html:167 msgid "Low stock" msgstr "" -#: templates/js/part.html:223 +#: templates/js/part.html:315 msgid "Building" msgstr "" -#: templates/js/part.html:241 +#: templates/js/part.html:334 msgid "No parts found" msgstr "" -#: templates/js/part.html:301 +#: templates/js/part.html:394 msgid "YES" msgstr "" -#: templates/js/part.html:303 +#: templates/js/part.html:396 msgid "NO" msgstr "" -#: templates/js/part.html:337 +#: templates/js/part.html:430 msgid "No test templates matching query" msgstr "" -#: templates/js/part.html:387 templates/js/stock.html:63 +#: templates/js/part.html:481 templates/js/stock.html:63 msgid "Edit test result" msgstr "" -#: templates/js/part.html:388 templates/js/stock.html:64 +#: templates/js/part.html:482 templates/js/stock.html:64 msgid "Delete test result" msgstr "" -#: templates/js/part.html:394 +#: templates/js/part.html:488 msgid "This test is defined for a parent part" msgstr "" @@ -3814,62 +3888,70 @@ msgstr "" msgid "Add test result" msgstr "" -#: templates/js/stock.html:77 +#: templates/js/stock.html:78 msgid "No test results found" msgstr "" -#: templates/js/stock.html:118 +#: templates/js/stock.html:120 msgid "Test Date" msgstr "" -#: templates/js/stock.html:261 +#: templates/js/stock.html:263 msgid "No stock items matching query" msgstr "" -#: templates/js/stock.html:358 templates/js/stock.html:373 +#: templates/js/stock.html:361 templates/js/stock.html:376 msgid "Undefined location" msgstr "" -#: templates/js/stock.html:464 +#: templates/js/stock.html:468 msgid "Stock item has been allocated" msgstr "" -#: templates/js/stock.html:468 +#: templates/js/stock.html:472 msgid "Stock item has been assigned to customer" msgstr "" -#: templates/js/stock.html:470 +#: templates/js/stock.html:474 msgid "Stock item was assigned to a build order" msgstr "" -#: templates/js/stock.html:472 +#: templates/js/stock.html:476 msgid "Stock item was assigned to a sales order" msgstr "" -#: templates/js/stock.html:479 +#: templates/js/stock.html:483 msgid "Stock item has been rejected" msgstr "" -#: templates/js/stock.html:483 +#: templates/js/stock.html:487 msgid "Stock item is lost" msgstr "" -#: templates/js/stock.html:487 templates/js/table_filters.html:52 +#: templates/js/stock.html:491 templates/js/table_filters.html:52 msgid "Depleted" msgstr "" -#: templates/js/stock.html:516 +#: templates/js/stock.html:520 msgid "Shipped to customer" msgstr "" -#: templates/js/stock.html:519 +#: templates/js/stock.html:523 msgid "No stock location set" msgstr "" -#: templates/js/stock.html:691 +#: templates/js/stock.html:695 msgid "No user information" msgstr "" +#: templates/js/stock.html:779 +msgid "Create New Part" +msgstr "" + +#: templates/js/stock.html:791 +msgid "Create New Location" +msgstr "" + #: templates/js/table_filters.html:19 templates/js/table_filters.html:67 msgid "Is Serialized" msgstr "" @@ -3970,39 +4052,39 @@ msgstr "" msgid "Purchasable" msgstr "" -#: templates/navbar.html:14 +#: templates/navbar.html:22 msgid "Buy" msgstr "" -#: templates/navbar.html:22 +#: templates/navbar.html:30 msgid "Sell" msgstr "" -#: templates/navbar.html:32 +#: templates/navbar.html:40 msgid "Scan Barcode" msgstr "" -#: templates/navbar.html:41 +#: templates/navbar.html:49 msgid "Admin" msgstr "" -#: templates/navbar.html:44 +#: templates/navbar.html:52 msgid "Settings" msgstr "" -#: templates/navbar.html:45 +#: templates/navbar.html:53 msgid "Logout" msgstr "" -#: templates/navbar.html:47 +#: templates/navbar.html:55 msgid "Login" msgstr "" -#: templates/navbar.html:50 +#: templates/navbar.html:58 msgid "About InvenTree" msgstr "" -#: templates/navbar.html:51 +#: templates/navbar.html:59 msgid "Statistics" msgstr "" diff --git a/tasks.py b/tasks.py index 2707f377ba..51c5a68849 100644 --- a/tasks.py +++ b/tasks.py @@ -162,7 +162,7 @@ def translate(c): or after adding translations for existing strings. """ - manage(c, "makemigrations") + manage(c, "makemessages") manage(c, "compilemessages") @task From 303572bc03c5580fc3f666992d07f926547d7634 Mon Sep 17 00:00:00 2001 From: Oliver Walters Date: Wed, 2 Sep 2020 23:57:51 +1000 Subject: [PATCH 4/5] More translation updates --- InvenTree/locale/de/LC_MESSAGES/django.po | 6 +++--- InvenTree/locale/en/LC_MESSAGES/django.po | 6 +++--- InvenTree/locale/es/LC_MESSAGES/django.po | 6 +++--- InvenTree/part/templates/part/cat_link.html | 4 +++- InvenTree/part/views.py | 2 +- 5 files changed, 13 insertions(+), 11 deletions(-) diff --git a/InvenTree/locale/de/LC_MESSAGES/django.po b/InvenTree/locale/de/LC_MESSAGES/django.po index 8648a87c90..16356efbab 100644 --- a/InvenTree/locale/de/LC_MESSAGES/django.po +++ b/InvenTree/locale/de/LC_MESSAGES/django.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-09-02 13:54+0000\n" +"POT-Creation-Date: 2020-09-02 13:57+0000\n" "PO-Revision-Date: 2020-05-03 11:32+0200\n" "Last-Translator: Christian Schlüter \n" "Language-Team: C \n" @@ -1232,8 +1232,8 @@ msgstr "Bestellungen" #: company/templates/company/tabs.html:9 #: order/templates/order/receive_parts.html:14 part/models.py:240 -#: part/templates/part/category.html:83 templates/navbar.html:18 -#: templates/stats.html:8 templates/stats.html:17 +#: part/templates/part/cat_link.html:7 part/templates/part/category.html:83 +#: templates/navbar.html:18 templates/stats.html:8 templates/stats.html:17 msgid "Parts" msgstr "Teile" diff --git a/InvenTree/locale/en/LC_MESSAGES/django.po b/InvenTree/locale/en/LC_MESSAGES/django.po index bddb8825ea..435cbd5be4 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: 2020-09-02 13:54+0000\n" +"POT-Creation-Date: 2020-09-02 13:57+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -1198,8 +1198,8 @@ msgstr "" #: company/templates/company/tabs.html:9 #: order/templates/order/receive_parts.html:14 part/models.py:240 -#: part/templates/part/category.html:83 templates/navbar.html:18 -#: templates/stats.html:8 templates/stats.html:17 +#: part/templates/part/cat_link.html:7 part/templates/part/category.html:83 +#: templates/navbar.html:18 templates/stats.html:8 templates/stats.html:17 msgid "Parts" msgstr "" diff --git a/InvenTree/locale/es/LC_MESSAGES/django.po b/InvenTree/locale/es/LC_MESSAGES/django.po index bddb8825ea..435cbd5be4 100644 --- a/InvenTree/locale/es/LC_MESSAGES/django.po +++ b/InvenTree/locale/es/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-09-02 13:54+0000\n" +"POT-Creation-Date: 2020-09-02 13:57+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -1198,8 +1198,8 @@ msgstr "" #: company/templates/company/tabs.html:9 #: order/templates/order/receive_parts.html:14 part/models.py:240 -#: part/templates/part/category.html:83 templates/navbar.html:18 -#: templates/stats.html:8 templates/stats.html:17 +#: part/templates/part/cat_link.html:7 part/templates/part/category.html:83 +#: templates/navbar.html:18 templates/stats.html:8 templates/stats.html:17 msgid "Parts" msgstr "" diff --git a/InvenTree/part/templates/part/cat_link.html b/InvenTree/part/templates/part/cat_link.html index 9438c535bf..3fe4a5ed99 100644 --- a/InvenTree/part/templates/part/cat_link.html +++ b/InvenTree/part/templates/part/cat_link.html @@ -1,8 +1,10 @@ +{% load i18n %} +