From 38dcdcad543a098ad91ea257c9bececd259f25f7 Mon Sep 17 00:00:00 2001 From: Oliver Walters Date: Tue, 9 Jun 2020 16:18:38 +1000 Subject: [PATCH] Update translation hooks --- InvenTree/locale/de/LC_MESSAGES/django.mo | Bin 52382 -> 51410 bytes InvenTree/locale/de/LC_MESSAGES/django.po | 1736 +++++++++++------ InvenTree/locale/en/LC_MESSAGES/django.po | 1564 +++++++++------ InvenTree/locale/es/LC_MESSAGES/django.po | 1564 +++++++++------ .../stock/templates/stock/item_base.html | 2 +- 5 files changed, 3119 insertions(+), 1747 deletions(-) diff --git a/InvenTree/locale/de/LC_MESSAGES/django.mo b/InvenTree/locale/de/LC_MESSAGES/django.mo index f7a6d40005722514da82cb5f51827ae5fde1d1e6..6cdb283c865efeaa301ad19cc331fe34bc76119c 100644 GIT binary patch delta 16011 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 delta 16899 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 diff --git a/InvenTree/locale/de/LC_MESSAGES/django.po b/InvenTree/locale/de/LC_MESSAGES/django.po index 6bf0d28301..8a0f157f70 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-05-04 09:50+0000\n" +"POT-Creation-Date: 2020-06-09 06:17+0000\n" "PO-Revision-Date: 2020-05-03 11:32+0200\n" "Last-Translator: Christian Schlüter \n" "Language-Team: C \n" @@ -17,86 +17,120 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Lokalize 19.12.0\n" -#: InvenTree/api.py:61 +#: InvenTree/api.py:86 msgid "No action specified" msgstr "Keine Aktion angegeben" -#: InvenTree/api.py:75 +#: InvenTree/api.py:100 msgid "No matching action found" msgstr "Keine passende Aktion gefunden" -#: InvenTree/api.py:106 +#: InvenTree/api.py:131 msgid "No barcode data provided" msgstr "Keine Strichcodedaten bereitgestellt" -#: InvenTree/api.py:121 +#: InvenTree/api.py:146 msgid "Barcode successfully decoded" msgstr "Strichcode erfolgreich dekodiert" -#: InvenTree/api.py:124 +#: InvenTree/api.py:149 msgid "Barcode plugin returned incorrect response" msgstr "Ungültige Antwort vom Strichcode-Plugin" -#: InvenTree/api.py:134 +#: InvenTree/api.py:159 msgid "Unknown barcode format" msgstr "Unbekanntes Strichcode-Format" -#: InvenTree/helpers.py:258 order/models.py:150 order/models.py:224 +#: InvenTree/forms.py:101 build/forms.py:37 +msgid "Confirm" +msgstr "Bestätigen" + +#: InvenTree/forms.py:117 +#, fuzzy +#| msgid "Confim BOM item deletion" +msgid "Confirm item deletion" +msgstr "Löschung von BOM-Position bestätigen" + +#: InvenTree/forms.py:149 +#, fuzzy +#| msgid "Create new part" +msgid "Enter new password" +msgstr "Neues Teil anlegen" + +#: InvenTree/forms.py:156 +msgid "Confirm new password" +msgstr "" + +#: InvenTree/helpers.py:328 order/models.py:187 order/models.py:261 msgid "Invalid quantity provided" msgstr "Keine gültige Menge" -#: InvenTree/helpers.py:261 +#: InvenTree/helpers.py:331 msgid "Empty serial number string" msgstr "Keine Seriennummer angegeben" -#: InvenTree/helpers.py:282 InvenTree/helpers.py:299 +#: InvenTree/helpers.py:352 InvenTree/helpers.py:369 #, python-brace-format msgid "Duplicate serial: {n}" msgstr "Doppelte Seriennummer: {n}" -#: InvenTree/helpers.py:286 InvenTree/helpers.py:289 InvenTree/helpers.py:292 -#: InvenTree/helpers.py:303 +#: InvenTree/helpers.py:356 InvenTree/helpers.py:359 InvenTree/helpers.py:362 +#: InvenTree/helpers.py:373 #, python-brace-format msgid "Invalid group: {g}" msgstr "Ungültige Gruppe: {g}" -#: InvenTree/helpers.py:309 +#: InvenTree/helpers.py:379 msgid "No serial numbers found" msgstr "Keine Seriennummern gefunden" -#: InvenTree/helpers.py:313 +#: InvenTree/helpers.py:383 #, python-brace-format msgid "Number of unique serial number ({s}) must match quantity ({q})" msgstr "" "Anzahl der eindeutigen Seriennummern ({s}) muss mit der Anzahl ({q}) " "übereinstimmen" -#: InvenTree/models.py:54 +#: InvenTree/models.py:60 msgid "Select file to attach" msgstr "Datei zum Anhängen auswählen" -#: InvenTree/models.py:56 +#: InvenTree/models.py:62 msgid "File comment" msgstr "Datei-Kommentar" -#: InvenTree/settings.py:295 +#: InvenTree/models.py:68 templates/js/stock.html:662 +msgid "User" +msgstr "Benutzer" + +#: InvenTree/models.py:106 part/templates/part/params.html:20 +msgid "Name" +msgstr "Name" + +#: InvenTree/models.py:112 +#, fuzzy +#| msgid "Description of the company" +msgid "Description (optional)" +msgstr "Firmenbeschreibung" + +#: InvenTree/settings.py:330 msgid "English" msgstr "Englisch" -#: InvenTree/settings.py:296 +#: InvenTree/settings.py:331 msgid "German" msgstr "Deutsch" -#: InvenTree/settings.py:297 +#: InvenTree/settings.py:332 msgid "French" msgstr "Französisch" -#: InvenTree/settings.py:298 +#: InvenTree/settings.py:333 msgid "Polish" msgstr "Polnisch" #: InvenTree/status_codes.py:94 InvenTree/status_codes.py:135 -#: InvenTree/status_codes.py:230 +#: InvenTree/status_codes.py:235 msgid "Pending" msgstr "Ausstehend" @@ -104,61 +138,61 @@ msgstr "Ausstehend" msgid "Placed" msgstr "Platziert" -#: InvenTree/status_codes.py:96 InvenTree/status_codes.py:233 +#: InvenTree/status_codes.py:96 InvenTree/status_codes.py:238 msgid "Complete" msgstr "Fertig" #: InvenTree/status_codes.py:97 InvenTree/status_codes.py:137 -#: InvenTree/status_codes.py:232 +#: InvenTree/status_codes.py:237 msgid "Cancelled" msgstr "Storniert" #: InvenTree/status_codes.py:98 InvenTree/status_codes.py:138 -#: InvenTree/status_codes.py:174 +#: InvenTree/status_codes.py:179 msgid "Lost" msgstr "Verloren" #: InvenTree/status_codes.py:99 InvenTree/status_codes.py:139 -#: InvenTree/status_codes.py:176 +#: InvenTree/status_codes.py:181 msgid "Returned" msgstr "Zurückgegeben" -#: InvenTree/status_codes.py:136 InvenTree/status_codes.py:177 +#: InvenTree/status_codes.py:136 InvenTree/status_codes.py:182 #: order/templates/order/sales_order_base.html:98 msgid "Shipped" msgstr "Versendet" -#: InvenTree/status_codes.py:170 +#: InvenTree/status_codes.py:175 msgid "OK" msgstr "OK" -#: InvenTree/status_codes.py:171 +#: InvenTree/status_codes.py:176 msgid "Attention needed" msgstr "erfordert Eingriff" -#: InvenTree/status_codes.py:172 +#: InvenTree/status_codes.py:177 msgid "Damaged" msgstr "Beschädigt" -#: InvenTree/status_codes.py:173 +#: InvenTree/status_codes.py:178 msgid "Destroyed" msgstr "Zerstört" -#: InvenTree/status_codes.py:175 +#: InvenTree/status_codes.py:180 msgid "Rejected" msgstr "" -#: InvenTree/status_codes.py:178 +#: InvenTree/status_codes.py:183 msgid "Used for Build" msgstr "Verwendet für Bau" -#: InvenTree/status_codes.py:179 +#: InvenTree/status_codes.py:184 msgid "Installed in Stock Item" msgstr "In Lagerobjekt installiert" -#: InvenTree/status_codes.py:231 build/templates/build/allocate.html:349 +#: InvenTree/status_codes.py:236 build/templates/build/allocate.html:349 #: order/templates/order/sales_order_detail.html:220 -#: part/templates/part/tabs.html:21 templates/js/build.html:120 +#: part/templates/part/tabs.html:23 templates/js/build.html:120 msgid "Allocated" msgstr "Zugeordnet" @@ -187,69 +221,83 @@ msgstr "Überschuss darf 100% nicht überschreiten" msgid "Overage must be an integer value or a percentage" msgstr "Überschuss muss eine Ganzzahl oder ein Prozentwert sein" -#: InvenTree/views.py:547 +#: InvenTree/views.py:563 msgid "Database Statistics" msgstr "Datenbankstatistiken" -#: build/forms.py:37 -msgid "Confirm" -msgstr "Bestätigen" +#: build/forms.py:58 +#, fuzzy +#| msgid "Location Details" +msgid "Location of completed parts" +msgstr "Standort-Details" -#: build/forms.py:54 stock/forms.py:34 +#: build/forms.py:62 +#, fuzzy +#| msgid "Serial Number" +msgid "Serial numbers" +msgstr "Seriennummer" + +#: build/forms.py:64 stock/forms.py:93 msgid "Enter unique serial numbers (or leave blank)" msgstr "Eindeutige Seriennummern eingeben (oder leer lassen)" -#: build/forms.py:56 +#: build/forms.py:67 msgid "Confirm build completion" msgstr "Bau-Fertigstellung bestätigen" -#: build/models.py:57 build/templates/build/build_base.html:65 +#: build/models.py:67 +#, fuzzy +#| msgid "Overage must be an integer value or a percentage" +msgid "Build quantity must be integer value for trackable parts" +msgstr "Überschuss muss eine Ganzzahl oder ein Prozentwert sein" + +#: build/models.py:73 build/templates/build/build_base.html:65 msgid "Build Title" msgstr "Bau-Titel" -#: build/models.py:60 +#: build/models.py:76 msgid "Brief description of the build" msgstr "Kurze Beschreibung des Baus" -#: build/models.py:68 build/templates/build/build_base.html:86 +#: build/models.py:84 build/templates/build/build_base.html:86 msgid "Parent Build" msgstr "Eltern-Bau" -#: build/models.py:69 +#: build/models.py:85 msgid "Parent build to which this build is allocated" msgstr "Eltern-Bau, dem dieser Bau zugewiesen ist" -#: build/models.py:74 build/templates/build/allocate.html:320 +#: build/models.py:90 build/templates/build/allocate.html:320 #: build/templates/build/auto_allocate.html:18 #: build/templates/build/build_base.html:70 -#: build/templates/build/detail.html:22 order/models.py:464 +#: 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 +#: order/templates/order/receive_parts.html:19 part/models.py:240 #: part/templates/part/part_app_base.html:7 #: part/templates/part/set_category.html:13 templates/js/bom.html:135 #: templates/js/build.html:41 templates/js/company.html:109 -#: templates/js/part.html:111 templates/js/stock.html:206 +#: templates/js/part.html:120 templates/js/stock.html:422 msgid "Part" msgstr "Teil" -#: build/models.py:83 +#: build/models.py:99 msgid "Select part to build" msgstr "Teil für den Bau wählen" -#: build/models.py:88 +#: build/models.py:104 msgid "Sales Order Reference" msgstr "Bestellungsreferenz" -#: build/models.py:92 +#: build/models.py:108 msgid "SalesOrder to which this build is allocated" msgstr "Bestellung, die diesem Bau zugwiesen ist" -#: build/models.py:97 +#: build/models.py:113 msgid "Source Location" msgstr "Quell-Standort" -#: build/models.py:101 +#: build/models.py:117 msgid "" "Select location to take stock from for this build (leave blank to take from " "any stock location)" @@ -257,92 +305,93 @@ msgstr "" "Lager-Entnahmestandort für diesen Bau wählen (oder leer lassen für einen " "beliebigen Lager-Standort)" -#: build/models.py:105 +#: build/models.py:121 msgid "Build Quantity" msgstr "Bau-Anzahl" -#: build/models.py:108 +#: build/models.py:124 msgid "Number of parts to build" msgstr "Anzahl der zu bauenden Teile" -#: build/models.py:112 part/templates/part/part_base.html:138 +#: build/models.py:128 part/templates/part/part_base.html:141 msgid "Build Status" msgstr "Bau-Status" -#: build/models.py:116 +#: build/models.py:132 msgid "Build status code" msgstr "Bau-Statuscode" -#: build/models.py:120 stock/models.py:377 +#: build/models.py:136 stock/models.py:374 msgid "Batch Code" msgstr "Losnummer" -#: build/models.py:124 +#: build/models.py:140 msgid "Batch code for this build output" msgstr "Chargennummer für diese Bau-Ausgabe" -#: build/models.py:139 build/templates/build/detail.html:55 +#: 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:67 part/templates/part/part_base.html:85 -#: stock/models.py:371 stock/templates/stock/item_base.html:189 +#: part/templates/part/detail.html:74 part/templates/part/part_base.html:88 +#: stock/models.py:368 stock/templates/stock/item_base.html:221 msgid "External Link" msgstr "Externer Link" -#: build/models.py:140 stock/models.py:373 +#: build/models.py:156 stock/models.py:370 msgid "Link to external URL" msgstr "Link zu einer externen URL" -#: build/models.py:144 build/templates/build/tabs.html:14 company/models.py:302 -#: company/templates/company/tabs.html:26 order/templates/order/po_tabs.html:15 +#: build/models.py:160 build/templates/build/tabs.html:14 company/models.py:302 +#: company/templates/company/tabs.html:33 order/templates/order/po_tabs.html:15 #: order/templates/order/purchase_order_detail.html:200 -#: order/templates/order/so_tabs.html:23 part/templates/part/tabs.html:63 -#: stock/models.py:439 stock/templates/stock/tabs.html:17 -#: templates/js/bom.html:229 templates/js/stock.html:290 +#: order/templates/order/so_tabs.html:23 part/templates/part/tabs.html:73 +#: stock/models.py:436 stock/models.py:1265 stock/templates/stock/tabs.html:26 +#: templates/js/bom.html:229 templates/js/stock.html:113 +#: templates/js/stock.html:506 msgid "Notes" msgstr "Notizen" -#: build/models.py:145 +#: build/models.py:161 msgid "Extra build notes" msgstr "Notizen für den Bau" -#: build/models.py:451 +#: build/models.py:467 #, python-brace-format msgid "Selected stock item not found in BOM for part '{p}'" msgstr "Ausgewähltes Lagerobjekt nicht in BOM für Teil '{p}' gefunden" -#: build/models.py:454 +#: build/models.py:470 #, python-brace-format msgid "Allocated quantity ({n}) must not exceed available quantity ({q})" msgstr "" "zugewiesene Anzahl ({n}) darf nicht die verfügbare ({q}) Anzahl überschreiten" -#: build/models.py:460 order/models.py:548 +#: build/models.py:476 order/models.py:585 msgid "StockItem is over-allocated" msgstr "Zu viele Lagerobjekte zugewiesen" -#: build/models.py:463 order/models.py:551 +#: build/models.py:479 order/models.py:588 msgid "Allocation quantity must be greater than zero" msgstr "Anzahl muss größer null sein" -#: build/models.py:466 +#: build/models.py:482 msgid "Quantity must be 1 for serialized stock" msgstr "Anzahl muss 1 für Objekte mit Seriennummer sein" -#: build/models.py:496 +#: build/models.py:512 msgid "Build to allocate parts" msgstr "Bau starten um Teile zuzuweisen" -#: build/models.py:503 +#: build/models.py:519 msgid "Stock Item to allocate to build" msgstr "Lagerobjekt dem Bau zuweisen" -#: build/models.py:516 +#: build/models.py:532 msgid "Stock quantity to allocate to build" msgstr "Lagerobjekt-Anzahl dem Bau zuweisen" #: build/templates/build/allocate.html:17 -#: company/templates/company/detail_part.html:18 order/views.py:763 +#: company/templates/company/detail_part.html:18 order/views.py:779 msgid "Order Parts" msgstr "Teile bestellen" @@ -364,8 +413,8 @@ 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:365 -#: stock/templates/stock/item_base.html:148 +#: order/templates/order/sales_order_detail.html:150 stock/models.py:362 +#: stock/templates/stock/item_base.html:180 msgid "Serial Number" msgstr "Seriennummer" @@ -380,18 +429,18 @@ msgstr "Seriennummer" #: 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:20 #: stock/templates/stock/item_base.html:26 -#: stock/templates/stock/item_base.html:154 +#: stock/templates/stock/item_base.html:32 +#: stock/templates/stock/item_base.html:186 #: stock/templates/stock/stock_adjust.html:18 templates/js/bom.html:172 -#: templates/js/build.html:52 templates/js/stock.html:437 +#: templates/js/build.html:52 templates/js/stock.html:653 msgid "Quantity" msgstr "Anzahl" #: build/templates/build/allocate.html:177 #: build/templates/build/auto_allocate.html:20 -#: stock/templates/stock/item_base.html:134 -#: stock/templates/stock/stock_adjust.html:17 templates/js/stock.html:277 +#: stock/templates/stock/item_base.html:162 +#: stock/templates/stock/stock_adjust.html:17 templates/js/stock.html:493 msgid "Location" msgstr "Standort" @@ -413,11 +462,11 @@ msgstr "Keine BOM-Einträge gefunden" #: 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:38 part/templates/part/set_category.html:14 +#: 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:167 templates/js/stock.html:227 -#: templates/js/stock.html:418 +#: templates/js/part.html:176 templates/js/part.html:355 +#: templates/js/stock.html:443 templates/js/stock.html:634 msgid "Description" msgstr "Beschreibung" @@ -427,7 +476,8 @@ msgstr "Beschreibung" msgid "Reference" msgstr "Referenz" -#: build/templates/build/allocate.html:338 +#: build/templates/build/allocate.html:338 part/models.py:1260 +#: templates/js/part.html:359 templates/js/table_filters.html:63 msgid "Required" msgstr "benötigt" @@ -471,7 +521,7 @@ 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:168 templates/js/build.html:33 +#: stock/templates/stock/item_base.html:200 templates/js/build.html:33 #: templates/navbar.html:12 msgid "Build" msgstr "Bau" @@ -491,19 +541,19 @@ 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:221 templates/js/build.html:57 +#: stock/templates/stock/item_base.html:253 templates/js/build.html:57 #: templates/js/order.html:162 templates/js/order.html:235 -#: templates/js/stock.html:264 +#: templates/js/stock.html:480 msgid "Status" msgstr "Status" -#: build/templates/build/build_base.html:93 order/models.py:462 +#: build/templates/build/build_base.html:93 order/models.py:499 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:33 #: 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:122 templates/js/order.html:209 +#: stock/templates/stock/item_base.html:150 templates/js/order.html:209 msgid "Sales Order" msgstr "Bestellung" @@ -572,7 +622,7 @@ 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:161 templates/js/stock.html:272 +#: stock/templates/stock/item_base.html:193 templates/js/stock.html:488 msgid "Batch" msgstr "Los" @@ -600,7 +650,7 @@ msgstr "Fertig" #: build/templates/build/index.html:6 build/templates/build/index.html:14 #: order/templates/order/so_builds.html:11 order/templates/order/so_tabs.html:9 -#: part/templates/part/tabs.html:28 +#: part/templates/part/tabs.html:30 msgid "Build Orders" msgstr "Bauaufträge" @@ -615,14 +665,14 @@ msgstr "Bau-Bemerkungen" #: build/templates/build/notes.html:20 company/templates/company/notes.html:17 #: order/templates/order/order_notes.html:21 #: order/templates/order/sales_order_notes.html:26 -#: part/templates/part/notes.html:20 stock/templates/stock/item_notes.html:21 +#: part/templates/part/notes.html:20 stock/templates/stock/item_notes.html:22 msgid "Save" msgstr "Speichern" #: build/templates/build/notes.html:33 company/templates/company/notes.html:30 #: order/templates/order/order_notes.html:32 #: order/templates/order/sales_order_notes.html:37 -#: part/templates/part/notes.html:32 stock/templates/stock/item_notes.html:32 +#: part/templates/part/notes.html:32 stock/templates/stock/item_notes.html:33 msgid "Edit notes" msgstr "Bermerkungen bearbeiten" @@ -668,7 +718,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:446 +#: build/views.py:148 build/views.py:456 msgid "Unallocate Stock" msgstr "Zuweisung aufheben" @@ -676,7 +726,7 @@ msgstr "Zuweisung aufheben" msgid "Confirm unallocation of build stock" msgstr "Zuweisungsaufhebung bestätigen" -#: build/views.py:162 +#: build/views.py:162 stock/views.py:286 msgid "Check the confirmation box" msgstr "Bestätigungsbox bestätigen" @@ -684,56 +734,66 @@ msgstr "Bestätigungsbox bestätigen" msgid "Complete Build" msgstr "Bau fertigstellen" -#: build/views.py:258 +#: build/views.py:201 stock/views.py:1118 stock/views.py:1232 +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 msgid "Confirm completion of build" msgstr "Baufertigstellung bestätigen" -#: build/views.py:265 +#: build/views.py:275 msgid "Invalid location selected" msgstr "Ungültige Ortsauswahl" -#: build/views.py:290 stock/views.py:917 +#: build/views.py:300 stock/views.py:1268 #, python-brace-format msgid "The following serial numbers already exist: ({sn})" msgstr "Die folgende Seriennummer existiert bereits: ({sn})" -#: build/views.py:311 +#: build/views.py:321 msgid "Build marked as COMPLETE" msgstr "Bau als FERTIG markiert" -#: build/views.py:387 +#: build/views.py:397 msgid "Start new Build" msgstr "Neuen Bau beginnen" -#: build/views.py:412 +#: build/views.py:422 msgid "Created new build" msgstr "Neuen Bau angelegt" -#: build/views.py:422 +#: build/views.py:432 msgid "Edit Build Details" msgstr "Baudetails bearbeiten" -#: build/views.py:427 +#: build/views.py:437 msgid "Edited build" msgstr "Bau bearbeitet" -#: build/views.py:436 +#: build/views.py:446 msgid "Delete Build" msgstr "Bau entfernt" -#: build/views.py:451 +#: build/views.py:461 msgid "Removed parts from build allocation" msgstr "Teile von Bauzuordnung entfernt" -#: build/views.py:461 +#: build/views.py:471 msgid "Allocate new Part" msgstr "Neues Teil zuordnen" -#: build/views.py:614 +#: build/views.py:624 msgid "Edit Stock Allocation" msgstr "Teilzuordnung bearbeiten" -#: build/views.py:618 +#: build/views.py:628 msgid "Updated Build Item" msgstr "Bauobjekt aktualisiert" @@ -867,6 +927,13 @@ msgstr "Mindestpreis" msgid "Part packaging" msgstr "Teile-Packaging" +#: company/templates/company/assigned_stock.html:9 +#: company/templates/company/tabs.html:25 +#, fuzzy +#| msgid "Assigned" +msgid "Assigned Stock" +msgstr "Zugewiesen" + #: company/templates/company/company_base.html:7 #: company/templates/company/company_base.html:22 templates/js/company.html:38 msgid "Company" @@ -906,17 +973,18 @@ 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:111 +#: company/templates/company/supplier_part_detail.html:21 order/models.py:148 #: order/templates/order/order_base.html:74 #: order/templates/order/order_wizard/select_pos.html:30 -#: stock/templates/stock/item_base.html:196 templates/js/company.html:52 +#: stock/templates/stock/item_base.html:228 templates/js/company.html:52 #: templates/js/company.html:134 templates/js/order.html:144 msgid "Supplier" msgstr "Zulieferer" -#: company/templates/company/detail.html:26 order/models.py:277 -#: order/templates/order/sales_order_base.html:73 templates/js/company.html:44 -#: templates/js/order.html:217 +#: company/templates/company/detail.html:26 order/models.py:314 +#: order/templates/order/sales_order_base.html:73 stock/models.py:357 +#: stock/models.py:358 stock/templates/stock/item_base.html:137 +#: templates/js/company.html:44 templates/js/order.html:217 msgid "Customer" msgstr "Kunde" @@ -971,7 +1039,7 @@ msgid "Supplier Stock" msgstr "Zuliefererbestand" #: company/templates/company/detail_stock.html:34 -#: company/templates/company/supplier_part_stock.html:38 +#: company/templates/company/supplier_part_stock.html:33 #: part/templates/part/stock.html:54 templates/stock_table.html:5 msgid "Export" msgstr "Exportieren" @@ -994,7 +1062,7 @@ msgstr "" #: company/templates/company/tabs.html:17 #: 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:43 +#: part/templates/part/orders.html:9 part/templates/part/tabs.html:45 #: templates/navbar.html:18 msgid "Purchase Orders" msgstr "Bestellungen" @@ -1013,7 +1081,7 @@ msgstr "Neue Bestellung" #: company/templates/company/tabs.html:22 #: 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:48 +#: part/templates/part/sales_orders.html:9 part/templates/part/tabs.html:50 #: templates/navbar.html:25 msgid "Sales Orders" msgstr "Bestellungen" @@ -1029,8 +1097,8 @@ msgid "New Sales Order" msgstr "Neuer Auftrag" #: company/templates/company/supplier_part_base.html:6 -#: company/templates/company/supplier_part_base.html:19 stock/models.py:344 -#: stock/templates/stock/item_base.html:201 templates/js/company.html:150 +#: company/templates/company/supplier_part_base.html:19 stock/models.py:331 +#: stock/templates/stock/item_base.html:233 templates/js/company.html:150 msgid "Supplier Part" msgstr "Zulieferer-Teil" @@ -1110,14 +1178,14 @@ msgstr "Keine Preisstaffelung für dieses Teil" msgid "Supplier Part Stock" msgstr "Zuliefererbestand" -#: company/templates/company/supplier_part_stock.html:61 +#: 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:91 msgid "New Location" msgstr "Neuer Standort" -#: company/templates/company/supplier_part_stock.html:62 +#: company/templates/company/supplier_part_stock.html:57 #: part/templates/part/stock.html:92 msgid "Create New Location" msgstr "Neuen Standort anlegen" @@ -1127,9 +1195,9 @@ msgid "Pricing" msgstr "Bepreisung" #: company/templates/company/supplier_part_tabs.html:8 -#: company/templates/company/tabs.html:12 part/templates/part/tabs.html:17 -#: stock/templates/stock/location.html:12 templates/js/part.html:194 -#: templates/js/stock.html:235 templates/navbar.html:11 +#: 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:451 templates/navbar.html:11 msgid "Stock" msgstr "Lagerbestand" @@ -1138,13 +1206,13 @@ msgid "Orders" msgstr "Bestellungen" #: company/templates/company/tabs.html:9 -#: order/templates/order/receive_parts.html:14 +#: order/templates/order/receive_parts.html:14 part/models.py:241 #: part/templates/part/category.html:83 templates/navbar.html:10 #: templates/stats.html:8 templates/stats.html:17 msgid "Parts" msgstr "Teile" -#: company/views.py:50 part/templates/part/tabs.html:37 +#: company/views.py:50 part/templates/part/tabs.html:39 #: templates/navbar.html:16 msgid "Suppliers" msgstr "Zulieferer" @@ -1250,99 +1318,112 @@ msgstr "Bestellung versenden" msgid "Receive parts to this location" msgstr "Teile in diesen Ort empfangen" -#: order/models.py:71 +#: order/forms.py:99 +#, fuzzy +#| msgid "Select a purchase order for" +msgid "Enter purchase order number" +msgstr "Bestellung auswählen für" + +#: order/forms.py:126 +#, fuzzy +#| msgid "Cancel sales order" +msgid "Enter sales order number" +msgstr "Auftrag stornieren" + +#: order/models.py:108 msgid "Order reference" msgstr "Bestell-Referenz" -#: order/models.py:73 +#: order/models.py:110 msgid "Order description" msgstr "Bestellungs-Beschreibung" -#: order/models.py:75 +#: order/models.py:112 msgid "Link to external page" msgstr "Link auf externe Seite" -#: order/models.py:85 +#: order/models.py:122 msgid "Order notes" msgstr "Bestell-Notizen" -#: order/models.py:114 +#: order/models.py:151 msgid "Supplier order reference code" msgstr "Bestellreferenz" -#: order/models.py:148 order/models.py:222 part/views.py:1113 -#: stock/models.py:607 +#: order/models.py:185 order/models.py:259 part/views.py:1167 +#: stock/models.py:243 stock/models.py:665 stock/views.py:1243 msgid "Quantity must be greater than zero" msgstr "Anzahl muss größer Null sein" -#: order/models.py:153 +#: order/models.py:190 msgid "Part supplier must match PO supplier" msgstr "Teile-Zulieferer muss dem Zulieferer des Kaufvertrags entsprechen" -#: order/models.py:217 +#: order/models.py:254 msgid "Lines can only be received against an order marked as 'Placed'" msgstr "Nur Teile aufgegebener Bestllungen können empfangen werden" -#: order/models.py:283 +#: order/models.py:320 msgid "Customer order reference code" msgstr "Bestellreferenz" -#: order/models.py:322 +#: order/models.py:359 msgid "SalesOrder cannot be shipped as it is not currently pending" msgstr "Bestellung kann nicht versendet werden weil sie nicht anhängig ist" -#: order/models.py:399 +#: order/models.py:436 msgid "Item quantity" msgstr "Anzahl" -#: order/models.py:401 +#: order/models.py:438 msgid "Line item reference" msgstr "Position - Referenz" -#: order/models.py:403 +#: order/models.py:440 msgid "Line item notes" msgstr "Position - Notizen" -#: order/models.py:429 order/templates/order/order_base.html:9 +#: order/models.py:466 order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:23 -#: stock/templates/stock/item_base.html:175 templates/js/order.html:136 +#: stock/templates/stock/item_base.html:207 templates/js/order.html:136 msgid "Purchase Order" msgstr "Kaufvertrag" -#: order/models.py:442 +#: order/models.py:479 msgid "Supplier part" msgstr "Zulieferer-Teil" -#: order/models.py:445 +#: order/models.py:482 msgid "Number of items received" msgstr "Empfangene Objekt-Anzahl" -#: order/models.py:539 +#: order/models.py:576 msgid "Cannot allocate stock item to a line with a different part" msgstr "Kann Lagerobjekt keiner Zeile mit einem anderen Teil hinzufügen" -#: order/models.py:541 +#: order/models.py:578 msgid "Cannot allocate stock to a line without a part" msgstr "Kann Lagerobjekt keiner Zeile ohne Teil hinzufügen" -#: order/models.py:544 +#: order/models.py:581 msgid "Allocation quantity cannot exceed stock quantity" msgstr "zugewiesene Anzahl darf nicht die verfügbare Anzahl überschreiten" -#: order/models.py:554 +#: order/models.py:591 msgid "Quantity must be 1 for serialized stock item" msgstr "Anzahl muss 1 für Objekte mit Seriennummer sein" -#: order/models.py:571 +#: order/models.py:608 msgid "Select stock item to allocate" msgstr "Lagerobjekt für Zuordnung auswählen" -#: order/models.py:574 +#: order/models.py:611 msgid "Enter stock allocation quantity" msgstr "Zuordnungsanzahl eingeben" #: order/templates/order/delete_attachment.html:5 -#: part/templates/part/attachment_delete.html:5 +#: stock/templates/stock/attachment_delete.html:5 +#: templates/attachment_delete.html:5 msgid "Are you sure you want to delete this attachment?" msgstr "Sind Sie sicher, dass Sie diesen Anhang löschen wollen?" @@ -1434,44 +1515,14 @@ msgstr "Bestellung auswählen für" msgid "Purchase Order Attachments" msgstr "Bestellanhänge" -#: order/templates/order/po_attachments.html:17 -#: order/templates/order/so_attachments.html:17 -#: part/templates/part/attachments.html:14 -msgid "Add Attachment" -msgstr "Anhang hinzufügen" - -#: order/templates/order/po_attachments.html:24 -#: order/templates/order/so_attachments.html:24 -#: part/templates/part/attachments.html:22 -msgid "File" -msgstr "Datei" - -#: order/templates/order/po_attachments.html:25 -#: order/templates/order/so_attachments.html:25 -#: part/templates/part/attachments.html:23 -msgid "Comment" -msgstr "Kommentar" - -#: order/templates/order/po_attachments.html:36 -#: order/templates/order/so_attachments.html:36 -#: part/templates/part/attachments.html:34 part/views.py:118 -msgid "Edit attachment" -msgstr "Anhang bearbeiten" - -#: order/templates/order/po_attachments.html:39 -#: order/templates/order/so_attachments.html:39 -#: part/templates/part/attachments.html:37 -msgid "Delete attachment" -msgstr "Anhang löschen" - #: order/templates/order/po_tabs.html:8 order/templates/order/so_tabs.html:16 -#: part/templates/part/tabs.html:60 +#: part/templates/part/tabs.html:70 stock/templates/stock/tabs.html:32 msgid "Attachments" msgstr "Anhänge" #: order/templates/order/purchase_order_detail.html:16 -#: order/templates/order/sales_order_detail.html:17 order/views.py:1071 -#: order/views.py:1185 +#: order/templates/order/sales_order_detail.html:17 order/views.py:1087 +#: order/views.py:1201 msgid "Add Line Item" msgstr "Position hinzufügen" @@ -1520,7 +1571,7 @@ msgid "Select parts to receive against this order" msgstr "" #: order/templates/order/receive_parts.html:21 -#: part/templates/part/part_base.html:128 templates/js/part.html:210 +#: part/templates/part/part_base.html:131 templates/js/part.html:219 msgid "On Order" msgstr "bestellt" @@ -1552,6 +1603,7 @@ msgstr "Kundenreferenz" #: order/templates/order/sales_order_cancel.html:8 #: order/templates/order/sales_order_ship.html:9 +#: stock/templates/stock/stockitem_convert.html:13 msgid "Warning" msgstr "Warnung" @@ -1617,143 +1669,143 @@ msgstr "Bestellungspositionen" msgid "Add Purchase Order Attachment" msgstr "Bestellanhang hinzufügen" -#: order/views.py:98 order/views.py:138 part/views.py:79 +#: order/views.py:102 order/views.py:149 part/views.py:85 stock/views.py:166 msgid "Added attachment" msgstr "Anhang hinzugefügt" -#: order/views.py:134 +#: order/views.py:141 msgid "Add Sales Order Attachment" msgstr "Auftragsanhang hinzufügen" -#: order/views.py:162 order/views.py:183 +#: order/views.py:176 order/views.py:197 msgid "Edit Attachment" msgstr "Anhang bearbeiten" -#: order/views.py:166 order/views.py:187 +#: order/views.py:180 order/views.py:201 msgid "Attachment updated" msgstr "Anhang aktualisiert" -#: order/views.py:202 order/views.py:216 +#: order/views.py:216 order/views.py:230 msgid "Delete Attachment" msgstr "Anhang löschen" -#: order/views.py:208 order/views.py:222 +#: order/views.py:222 order/views.py:236 stock/views.py:222 msgid "Deleted attachment" msgstr "Anhang gelöscht" -#: order/views.py:273 +#: order/views.py:287 msgid "Create Purchase Order" msgstr "Bestellung anlegen" -#: order/views.py:303 +#: order/views.py:318 msgid "Create Sales Order" msgstr "Auftrag anlegen" -#: order/views.py:332 +#: order/views.py:348 msgid "Edit Purchase Order" msgstr "Bestellung bearbeiten" -#: order/views.py:352 +#: order/views.py:368 msgid "Edit Sales Order" msgstr "Auftrag bearbeiten" -#: order/views.py:368 +#: order/views.py:384 msgid "Cancel Order" msgstr "Bestellung stornieren" -#: order/views.py:383 order/views.py:415 +#: order/views.py:399 order/views.py:431 msgid "Confirm order cancellation" msgstr "Bestellstornierung bestätigen" -#: order/views.py:401 +#: order/views.py:417 msgid "Cancel sales order" msgstr "Auftrag stornieren" -#: order/views.py:421 +#: order/views.py:437 msgid "Could not cancel order" msgstr "Stornierung fehlgeschlagen" -#: order/views.py:435 +#: order/views.py:451 msgid "Issue Order" msgstr "Bestellung aufgeben" -#: order/views.py:450 +#: order/views.py:466 msgid "Confirm order placement" msgstr "Bestellungstätigung bestätigen" -#: order/views.py:471 +#: order/views.py:487 msgid "Complete Order" msgstr "Auftrag fertigstellen" -#: order/views.py:506 +#: order/views.py:522 msgid "Ship Order" msgstr "Versenden" -#: order/views.py:522 +#: order/views.py:538 msgid "Confirm order shipment" msgstr "Versand bestätigen" -#: order/views.py:528 +#: order/views.py:544 msgid "Could not ship order" msgstr "Versand fehlgeschlagen" -#: order/views.py:579 +#: order/views.py:595 msgid "Receive Parts" msgstr "Teile empfangen" -#: order/views.py:646 +#: order/views.py:662 msgid "Items received" msgstr "Anzahl empfangener Positionen" -#: order/views.py:660 +#: order/views.py:676 msgid "No destination set" msgstr "Kein Ziel gesetzt" -#: order/views.py:705 +#: order/views.py:721 msgid "Error converting quantity to number" msgstr "Fehler beim Konvertieren zu Zahl" -#: order/views.py:711 +#: order/views.py:727 msgid "Receive quantity less than zero" msgstr "Anzahl kleiner null empfangen" -#: order/views.py:717 +#: order/views.py:733 msgid "No lines specified" msgstr "Keine Zeilen angegeben" -#: order/views.py:1091 +#: order/views.py:1107 msgid "Invalid Purchase Order" msgstr "Ungültige Bestellung" -#: order/views.py:1099 +#: order/views.py:1115 msgid "Supplier must match for Part and Order" msgstr "Zulieferer muss zum Teil und zur Bestellung passen" -#: order/views.py:1104 +#: order/views.py:1120 msgid "Invalid SupplierPart selection" msgstr "Ungültige Wahl des Zulieferer-Teils" -#: order/views.py:1236 order/views.py:1254 +#: order/views.py:1252 order/views.py:1270 msgid "Edit Line Item" msgstr "Position bearbeiten" -#: order/views.py:1270 order/views.py:1282 +#: order/views.py:1286 order/views.py:1298 msgid "Delete Line Item" msgstr "Position löschen" -#: order/views.py:1275 order/views.py:1287 +#: order/views.py:1291 order/views.py:1303 msgid "Deleted line item" msgstr "Position gelöscht" -#: order/views.py:1296 +#: order/views.py:1312 msgid "Allocate Stock to Order" msgstr "Lagerbestand dem Auftrag zuweisen" -#: order/views.py:1365 +#: order/views.py:1381 msgid "Edit Allocation Quantity" msgstr "Zuordnung bearbeiten" -#: order/views.py:1380 +#: order/views.py:1396 msgid "Remove allocation" msgstr "Zuordnung entfernen" @@ -1770,219 +1822,279 @@ msgstr "Fehler beim Lesen der Stückliste (ungültige Daten)" msgid "Error reading BOM file (incorrect row size)" msgstr "Fehler beim Lesen der Stückliste (ungültige Zeilengröße)" -#: part/forms.py:37 stock/forms.py:91 +#: part/forms.py:55 stock/forms.py:200 msgid "File Format" msgstr "Dateiformat" -#: part/forms.py:37 stock/forms.py:91 +#: part/forms.py:55 stock/forms.py:200 msgid "Select output file format" msgstr "Ausgabe-Dateiformat auswählen" -#: part/forms.py:39 +#: part/forms.py:57 msgid "Cascading" msgstr "Kaskadierend" -#: part/forms.py:39 +#: part/forms.py:57 msgid "Download cascading / multi-level BOM" msgstr "Kaskadierende Stückliste herunterladen" -#: part/forms.py:58 +#: part/forms.py:76 msgid "Confirm that the BOM is correct" msgstr "Bestätigen, dass die Stückliste korrekt ist" -#: part/forms.py:70 +#: part/forms.py:88 msgid "Select BOM file to upload" msgstr "Stücklisten-Datei zum Upload auswählen" -#: part/forms.py:94 +#: part/forms.py:112 msgid "Select part category" msgstr "Teilekategorie wählen" -#: part/forms.py:102 +#: part/forms.py:126 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:107 +#: part/forms.py:131 msgid "Confirm part creation" msgstr "Erstellen des Teils bestätigen" -#: part/forms.py:193 +#: part/forms.py:221 msgid "Input quantity for price calculation" msgstr "Eintragsmenge zur Preisberechnung" -#: part/forms.py:196 +#: part/forms.py:224 msgid "Select currency for price calculation" msgstr "Währung zur Preisberechnung wählen" -#: part/models.py:64 +#: part/models.py:65 msgid "Default location for parts in this category" msgstr "Standard-Standort für Teile dieser Kategorie" -#: part/models.py:67 +#: part/models.py:68 msgid "Default keywords for parts in this category" msgstr "Standard-Stichworte für Teile dieser Kategorie" -#: part/models.py:341 +#: part/models.py:427 msgid "Part must be unique for name, IPN and revision" msgstr "Namen, Teile- und Revisionsnummern müssen eindeutig sein" -#: part/models.py:355 -msgid "Part cannot be a template part if it is a variant of another part" -msgstr "Teil kann keine Vorlage sein wenn es Variante eines anderen Teils ist" - -#: part/models.py:356 -msgid "Part cannot be a variant of another part if it is already a template" -msgstr "" -"Teil kann keine Variante eines anderen Teils sein wenn es bereits eine " -"Vorlage ist" - -#: part/models.py:360 part/templates/part/detail.html:19 +#: part/models.py:442 part/templates/part/detail.html:19 msgid "Part name" msgstr "Name des Teils" -#: part/models.py:364 +#: part/models.py:446 msgid "Is this part a template part?" msgstr "Ist dieses Teil eine Vorlage?" -#: part/models.py:373 +#: part/models.py:455 msgid "Is this part a variant of another part?" msgstr "Ist dieses Teil eine Variante eines anderen Teils?" -#: part/models.py:375 +#: part/models.py:457 msgid "Part description" msgstr "Beschreibung des Teils" -#: part/models.py:377 +#: part/models.py:459 msgid "Part keywords to improve visibility in search results" msgstr "Schlüsselworte um die Sichtbarkeit in Suchergebnissen zu verbessern" -#: part/models.py:382 +#: part/models.py:464 msgid "Part category" msgstr "Teile-Kategorie" -#: part/models.py:384 +#: part/models.py:466 msgid "Internal Part Number" msgstr "Interne Teilenummer" -#: part/models.py:386 +#: part/models.py:468 msgid "Part revision or version number" msgstr "Revisions- oder Versionsnummer" -#: part/models.py:388 +#: part/models.py:470 msgid "Link to extenal URL" msgstr "Link zu einer Externen URL" -#: part/models.py:400 +#: part/models.py:482 msgid "Where is this item normally stored?" msgstr "Wo wird dieses Teil normalerweise gelagert?" -#: part/models.py:444 +#: part/models.py:526 msgid "Default supplier part" msgstr "Standard-Zulieferer?" -#: part/models.py:447 +#: part/models.py:529 msgid "Minimum allowed stock level" msgstr "Minimal zulässiger Lagerbestand" -#: part/models.py:449 +#: part/models.py:531 msgid "Stock keeping units for this part" msgstr "Stock Keeping Units (SKU) für dieses Teil" -#: part/models.py:451 +#: part/models.py:533 msgid "Can this part be built from other parts?" msgstr "Kann dieses Teil aus anderen Teilen angefertigt werden?" -#: part/models.py:453 +#: part/models.py:535 msgid "Can this part be used to build other parts?" msgstr "Kann dieses Teil zum Bau von anderen genutzt werden?" -#: part/models.py:455 +#: part/models.py:537 msgid "Does this part have tracking for unique items?" msgstr "Hat dieses Teil Tracking für einzelne Objekte?" -#: part/models.py:457 +#: part/models.py:539 msgid "Can this part be purchased from external suppliers?" msgstr "Kann dieses Teil von externen Zulieferern gekauft werden?" -#: part/models.py:459 +#: part/models.py:541 msgid "Can this part be sold to customers?" msgstr "Kann dieses Teil an Kunden verkauft werden?" -#: part/models.py:461 +#: part/models.py:543 msgid "Is this part active?" msgstr "Ist dieses Teil aktiv?" -#: part/models.py:463 +#: part/models.py:545 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:465 +#: part/models.py:547 msgid "Part notes - supports Markdown formatting" msgstr "Bemerkungen - unterstüzt Markdown-Formatierung" -#: part/models.py:467 +#: part/models.py:549 msgid "Stored BOM checksum" msgstr "Prüfsumme der Stückliste gespeichert" -#: part/models.py:1069 +#: part/models.py:1212 +#, 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:1229 +#, fuzzy +#| msgid "" +#| "A stock item with this serial number already exists for template part " +#| "{part}" +msgid "Test with this name already exists for this part" +msgstr "" +"Ein Teil mit dieser Seriennummer existiert bereits für die Teilevorlage " +"{part}" + +#: part/models.py:1248 templates/js/part.html:350 templates/js/stock.html:89 +#, fuzzy +#| msgid "Instance Name" +msgid "Test Name" +msgstr "Instanzname" + +#: part/models.py:1249 +#, fuzzy +#| msgid "Serial number for this item" +msgid "Enter a name for the test" +msgstr "Seriennummer für dieses Teil" + +#: part/models.py:1254 +#, fuzzy +#| msgid "Description" +msgid "Test Description" +msgstr "Beschreibung" + +#: part/models.py:1255 +#, fuzzy +#| msgid "Brief description of the build" +msgid "Enter description for this test" +msgstr "Kurze Beschreibung des Baus" + +#: part/models.py:1261 +msgid "Is this test required to pass?" +msgstr "" + +#: part/models.py:1266 templates/js/part.html:367 +#, fuzzy +#| msgid "Required Parts" +msgid "Requires Value" +msgstr "benötigte Teile" + +#: part/models.py:1267 +msgid "Does this test require a value when adding a test result?" +msgstr "" + +#: part/models.py:1272 templates/js/part.html:374 +#, fuzzy +#| msgid "Delete Attachment" +msgid "Requires Attachment" +msgstr "Anhang löschen" + +#: part/models.py:1273 +msgid "Does this test require a file attachment when adding a test result?" +msgstr "" + +#: part/models.py:1306 msgid "Parameter template name must be unique" msgstr "Vorlagen-Name des Parameters muss eindeutig sein" -#: part/models.py:1074 +#: part/models.py:1311 msgid "Parameter Name" msgstr "Name des Parameters" -#: part/models.py:1076 +#: part/models.py:1313 msgid "Parameter Units" msgstr "Parameter Einheit" -#: part/models.py:1102 +#: part/models.py:1339 msgid "Parent Part" msgstr "Ausgangsteil" -#: part/models.py:1104 +#: part/models.py:1341 msgid "Parameter Template" msgstr "Parameter Vorlage" -#: part/models.py:1106 +#: part/models.py:1343 msgid "Parameter Value" msgstr "Parameter Wert" -#: part/models.py:1130 +#: part/models.py:1372 msgid "Select parent part" msgstr "Ausgangsteil auswählen" -#: part/models.py:1139 +#: part/models.py:1380 msgid "Select part to be used in BOM" msgstr "Teil für die Nutzung in der Stückliste auswählen" -#: part/models.py:1146 +#: part/models.py:1386 msgid "BOM quantity for this BOM item" msgstr "Stücklisten-Anzahl für dieses Stücklisten-Teil" -#: part/models.py:1149 +#: part/models.py:1389 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "Geschätzter Ausschuss (absolut oder prozentual)" -#: part/models.py:1152 +#: part/models.py:1392 msgid "BOM item reference" msgstr "Referenz des Objekts auf der Stückliste" -#: part/models.py:1155 +#: part/models.py:1395 msgid "BOM item notes" msgstr "Notizen zum Stücklisten-Objekt" -#: part/models.py:1157 +#: part/models.py:1397 msgid "BOM line checksum" msgstr "Prüfsumme der Stückliste" -#: part/models.py:1220 +#: part/models.py:1461 stock/models.py:233 +#, 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:1470 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:1227 +#: part/models.py:1477 #, 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)" @@ -2001,15 +2113,15 @@ msgstr "Bestellung" #: part/templates/part/allocation.html:28 #: part/templates/part/allocation.html:45 #: stock/templates/stock/item_base.html:8 -#: stock/templates/stock/item_base.html:52 -#: stock/templates/stock/item_base.html:183 +#: stock/templates/stock/item_base.html:58 +#: stock/templates/stock/item_base.html:215 #: stock/templates/stock/stock_adjust.html:16 templates/js/build.html:106 -#: templates/js/stock.html:407 +#: templates/js/stock.html:623 msgid "Stock Item" msgstr "Lagerobjekt" #: part/templates/part/allocation.html:20 -#: stock/templates/stock/item_base.html:128 +#: stock/templates/stock/item_base.html:156 msgid "Build Order" msgstr "Bauauftrag" @@ -2045,7 +2157,7 @@ msgstr "Stückliste bearbeiten" msgid "Validate Bill of Materials" msgstr "Stückliste validieren" -#: part/templates/part/bom.html:46 part/views.py:1358 +#: part/templates/part/bom.html:46 part/views.py:1412 msgid "Export Bill of Materials" msgstr "Stückliste exportieren" @@ -2070,11 +2182,11 @@ msgstr "Pfad zur Kategorie" msgid "Category Description" msgstr "Kategorie-Beschreibung" -#: part/templates/part/category.html:50 part/templates/part/detail.html:74 +#: 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:51 +#: part/templates/part/category.html:57 part/templates/part/detail.html:58 msgid "Keywords" msgstr "Schlüsselwörter" @@ -2090,7 +2202,7 @@ msgstr "Teile (inklusive Unter-Kategorien)" msgid "Part Details" msgstr "Teile-Details" -#: part/templates/part/detail.html:25 part/templates/part/part_base.html:78 +#: part/templates/part/detail.html:25 part/templates/part/part_base.html:81 msgid "IPN" msgstr "IPN (Interne Produktnummer)" @@ -2098,107 +2210,146 @@ msgstr "IPN (Interne Produktnummer)" msgid "Revision" msgstr "Revision" -#: part/templates/part/detail.html:44 +#: part/templates/part/detail.html:39 +#, fuzzy +#| msgid "Serial Number" +msgid "Next Serial Number" +msgstr "Seriennummer" + +#: part/templates/part/detail.html:51 msgid "Variant Of" msgstr "Variante von" -#: part/templates/part/detail.html:57 part/templates/part/set_category.html:15 -#: templates/js/part.html:181 +#: part/templates/part/detail.html:64 part/templates/part/set_category.html:15 +#: templates/js/part.html:190 msgid "Category" msgstr "Kategorie" -#: part/templates/part/detail.html:81 +#: part/templates/part/detail.html:88 msgid "Default Supplier" msgstr "Standard-Zulieferer" -#: part/templates/part/detail.html:89 part/templates/part/params.html:22 +#: part/templates/part/detail.html:96 part/templates/part/params.html:22 msgid "Units" msgstr "Einheiten" -#: part/templates/part/detail.html:95 +#: part/templates/part/detail.html:102 msgid "Minimum Stock" msgstr "Minimaler Lagerbestand" -#: part/templates/part/detail.html:101 templates/js/order.html:243 +#: part/templates/part/detail.html:108 templates/js/order.html:243 msgid "Creation Date" msgstr "Erstelldatum" -#: part/templates/part/detail.html:107 +#: part/templates/part/detail.html:114 msgid "Created By" msgstr "Erstellt von" -#: part/templates/part/detail.html:114 +#: part/templates/part/detail.html:121 msgid "Responsible User" msgstr "Verantwortlicher Benutzer" -#: part/templates/part/detail.html:123 +#: part/templates/part/detail.html:130 msgid "Virtual" msgstr "Virtuell" -#: part/templates/part/detail.html:126 +#: part/templates/part/detail.html:133 msgid "Part is virtual (not a physical part)" msgstr "Teil ist virtuell (kein physisches Teil)" -#: part/templates/part/detail.html:128 +#: part/templates/part/detail.html:135 msgid "Part is not a virtual part" msgstr "Teil ist nicht virtuell" -#: part/templates/part/detail.html:132 templates/table_filters.html:99 +#: part/templates/part/detail.html:139 stock/forms.py:194 +#: templates/js/table_filters.html:122 +msgid "Template" +msgstr "Vorlage" + +#: part/templates/part/detail.html:142 +#, 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 +#, 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:134 msgid "Assembly" msgstr "Baugruppe" -#: part/templates/part/detail.html:135 +#: part/templates/part/detail.html:151 msgid "Part can be assembled from other parts" msgstr "Teil kann aus anderen Teilen angefertigt werden" -#: part/templates/part/detail.html:137 +#: part/templates/part/detail.html:153 msgid "Part cannot be assembled from other parts" msgstr "Teil kann nicht aus anderen Teilen angefertigt werden" -#: part/templates/part/detail.html:141 templates/table_filters.html:103 +#: part/templates/part/detail.html:157 templates/js/table_filters.html:138 msgid "Component" msgstr "Komponente" -#: part/templates/part/detail.html:144 +#: part/templates/part/detail.html:160 msgid "Part can be used in assemblies" msgstr "Teil kann in Baugruppen benutzt werden" -#: part/templates/part/detail.html:146 +#: part/templates/part/detail.html:162 msgid "Part cannot be used in assemblies" msgstr "Teil kann nicht in Baugruppen benutzt werden" -#: part/templates/part/detail.html:150 +#: part/templates/part/detail.html:166 templates/js/table_filters.html:150 msgid "Trackable" msgstr "nachverfolgbar" -#: part/templates/part/detail.html:153 +#: part/templates/part/detail.html:169 msgid "Part stock is tracked by serial number" msgstr "Teilebestand in der Seriennummer hinterlegt" -#: part/templates/part/detail.html:155 +#: part/templates/part/detail.html:171 msgid "Part stock is not tracked by serial number" msgstr "Teilebestand ist nicht in der Seriennummer hinterlegt" -#: part/templates/part/detail.html:159 +#: part/templates/part/detail.html:175 msgid "Purchaseable" msgstr "Kaufbar" -#: part/templates/part/detail.html:162 part/templates/part/detail.html:164 +#: part/templates/part/detail.html:178 part/templates/part/detail.html:180 msgid "Part can be purchased from external suppliers" msgstr "Teil kann von externen Zulieferern gekauft werden" -#: part/templates/part/detail.html:168 templates/table_filters.html:111 +#: part/templates/part/detail.html:184 templates/js/table_filters.html:146 msgid "Salable" msgstr "Verkäuflich" -#: part/templates/part/detail.html:171 +#: part/templates/part/detail.html:187 msgid "Part can be sold to customers" msgstr "Teil kann an Kunden verkauft werden" -#: part/templates/part/detail.html:173 +#: part/templates/part/detail.html:189 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:117 +msgid "Active" +msgstr "Aktiv" + +#: part/templates/part/detail.html:196 +#, fuzzy +#| msgid "This part is not active" +msgid "Part is active" +msgstr "Dieses Teil ist nicht aktiv" + +#: part/templates/part/detail.html:198 +#, fuzzy +#| msgid "This part is not active" +msgid "Part is not active" +msgstr "Dieses Teil ist nicht aktiv" + #: part/templates/part/notes.html:13 part/templates/part/notes.html:29 msgid "Part Notes" msgstr "Teil-Bemerkungen" @@ -2219,11 +2370,8 @@ msgstr "Parameter hinzufügen" msgid "New Parameter" msgstr "Neuer Parameter" -#: part/templates/part/params.html:20 -msgid "Name" -msgstr "Name" - -#: part/templates/part/params.html:21 +#: part/templates/part/params.html:21 stock/models.py:1252 +#: templates/js/stock.html:109 msgid "Value" msgstr "Wert" @@ -2244,55 +2392,68 @@ msgid "Part List" msgstr "Teileliste" #: part/templates/part/part_base.html:11 +#, fuzzy +#| msgid "Part is not a virtual part" +msgid "This part is a virtual part" +msgstr "Teil ist nicht virtuell" + +#: part/templates/part/part_base.html:16 msgid "This part is a template part." msgstr "Dieses Teil ist eine Vorlage." -#: part/templates/part/part_base.html:13 -msgid "It is not a real part, but real parts can be based on this template." -msgstr "" -"Es ist kein echtes Teil, aber echte Teile können auf dieser Vorlage basieren." - -#: part/templates/part/part_base.html:18 +#: part/templates/part/part_base.html:21 msgid "This part is a variant of" msgstr "Dieses Teil ist eine Variante von" -#: part/templates/part/part_base.html:30 templates/js/company.html:125 -#: templates/js/part.html:158 +#: part/templates/part/part_base.html:33 templates/js/company.html:125 +#: templates/js/part.html:167 msgid "Inactive" msgstr "Inaktiv" -#: part/templates/part/part_base.html:38 +#: part/templates/part/part_base.html:41 msgid "Star this part" msgstr "Teil favorisieren" -#: part/templates/part/part_base.html:44 +#: part/templates/part/part_base.html:47 msgid "Show pricing information" msgstr "Kosteninformationen ansehen" -#: part/templates/part/part_base.html:101 +#: part/templates/part/part_base.html:104 msgid "Available Stock" msgstr "Verfügbarer Lagerbestand" -#: part/templates/part/part_base.html:107 +#: part/templates/part/part_base.html:110 msgid "In Stock" msgstr "Auf Lager" -#: part/templates/part/part_base.html:114 +#: part/templates/part/part_base.html:117 msgid "Allocated to Build Orders" msgstr "Zu Bauaufträgen zugeordnet" -#: part/templates/part/part_base.html:121 +#: part/templates/part/part_base.html:124 msgid "Allocated to Sales Orders" msgstr "Zu Aufträgen zugeordnet" -#: part/templates/part/part_base.html:143 +#: part/templates/part/part_base.html:146 msgid "Can Build" msgstr "Herstellbar?" -#: part/templates/part/part_base.html:149 +#: part/templates/part/part_base.html:152 msgid "Underway" msgstr "unterwegs" +#: part/templates/part/part_tests.html:8 +#, fuzzy +#| msgid "Parameter Template" +msgid "Part Test Templates" +msgstr "Parameter Vorlage" + +#: part/templates/part/part_tests.html:14 +#, fuzzy +#| msgid "Edit Template" +msgid "Add Test Template" +msgstr "Vorlage bearbeiten" + #: part/templates/part/part_thumb.html:16 msgid "Select from existing images" msgstr "Aus vorhandenen Bildern auswählen" @@ -2326,7 +2487,7 @@ msgid "Create New Part" msgstr "Neues Teil anlegen" #: part/templates/part/stock_count.html:7 templates/js/bom.html:203 -#: templates/js/part.html:218 +#: templates/js/part.html:227 msgid "No Stock" msgstr "Kein Bestand" @@ -2366,18 +2527,22 @@ msgstr "Parameter" msgid "Variants" msgstr "Varianten" -#: part/templates/part/tabs.html:26 +#: part/templates/part/tabs.html:28 msgid "BOM" msgstr "Stückliste" -#: part/templates/part/tabs.html:32 +#: part/templates/part/tabs.html:34 msgid "Used In" msgstr "Benutzt in" -#: part/templates/part/tabs.html:53 stock/templates/stock/tabs.html:5 +#: part/templates/part/tabs.html:57 stock/templates/stock/tabs.html:6 msgid "Tracking" msgstr "Tracking" +#: part/templates/part/tabs.html:64 stock/templates/stock/item_base.html:259 +msgid "Tests" +msgstr "" + #: part/templates/part/track.html:8 msgid "Part Tracking" msgstr "Teilverfolgung" @@ -2390,164 +2555,186 @@ msgstr "Baugruppen" msgid "INACTIVE" msgstr "INAKTIV" -#: part/views.py:74 +#: part/views.py:75 msgid "Add part attachment" msgstr "Teilanhang hinzufügen" -#: part/views.py:122 +#: part/views.py:124 templates/attachment_table.html:30 +msgid "Edit attachment" +msgstr "Anhang bearbeiten" + +#: part/views.py:128 msgid "Part attachment updated" msgstr "Teilanhang aktualisiert" -#: part/views.py:137 +#: part/views.py:143 msgid "Delete Part Attachment" msgstr "Teilanhang löschen" -#: part/views.py:143 +#: part/views.py:149 msgid "Deleted part attachment" msgstr "Teilanhang gelöscht" -#: part/views.py:151 +#: part/views.py:158 +#, fuzzy +#| msgid "Create Part Parameter Template" +msgid "Create Test Template" +msgstr "Teilparametervorlage anlegen" + +#: part/views.py:185 +#, fuzzy +#| msgid "Edit Template" +msgid "Edit Test Template" +msgstr "Vorlage bearbeiten" + +#: part/views.py:199 +#, fuzzy +#| msgid "Delete Template" +msgid "Delete Test Template" +msgstr "Vorlage löschen" + +#: part/views.py:206 msgid "Set Part Category" msgstr "Teilkategorie auswählen" -#: part/views.py:199 +#: part/views.py:254 #, python-brace-format msgid "Set category for {n} parts" msgstr "Kategorie für {n} Teile setzen" -#: part/views.py:234 +#: part/views.py:289 msgid "Create Variant" msgstr "Variante anlegen" -#: part/views.py:304 +#: part/views.py:358 msgid "Duplicate Part" msgstr "Teil duplizieren" -#: part/views.py:309 +#: part/views.py:363 msgid "Copied part" msgstr "Teil kopiert" -#: part/views.py:420 +#: part/views.py:474 msgid "Create new part" msgstr "Neues Teil anlegen" -#: part/views.py:425 +#: part/views.py:479 msgid "Created new part" msgstr "Neues Teil angelegt" -#: part/views.py:599 +#: part/views.py:653 msgid "Part QR Code" msgstr "Teil-QR-Code" -#: part/views.py:616 +#: part/views.py:670 msgid "Upload Part Image" msgstr "Teilbild hochladen" -#: part/views.py:621 part/views.py:656 +#: part/views.py:675 part/views.py:710 msgid "Updated part image" msgstr "Teilbild aktualisiert" -#: part/views.py:630 +#: part/views.py:684 msgid "Select Part Image" msgstr "Teilbild auswählen" -#: part/views.py:659 +#: part/views.py:713 msgid "Part image not found" msgstr "Teilbild nicht gefunden" -#: part/views.py:670 +#: part/views.py:724 msgid "Edit Part Properties" msgstr "Teileigenschaften bearbeiten" -#: part/views.py:692 +#: part/views.py:746 msgid "Validate BOM" msgstr "BOM validieren" -#: part/views.py:854 +#: part/views.py:908 msgid "No BOM file provided" msgstr "Keine Stückliste angegeben" -#: part/views.py:1115 +#: part/views.py:1169 msgid "Enter a valid quantity" msgstr "Bitte eine gültige Anzahl eingeben" -#: part/views.py:1139 part/views.py:1142 +#: part/views.py:1193 part/views.py:1196 msgid "Select valid part" msgstr "Bitte ein gültiges Teil auswählen" -#: part/views.py:1148 +#: part/views.py:1202 msgid "Duplicate part selected" msgstr "Teil doppelt ausgewählt" -#: part/views.py:1176 +#: part/views.py:1230 msgid "Select a part" msgstr "Teil auswählen" -#: part/views.py:1180 +#: part/views.py:1234 msgid "Specify quantity" msgstr "Anzahl angeben" -#: part/views.py:1396 +#: part/views.py:1450 msgid "Confirm Part Deletion" msgstr "Löschen des Teils bestätigen" -#: part/views.py:1403 +#: part/views.py:1457 msgid "Part was deleted" msgstr "Teil wurde gelöscht" -#: part/views.py:1412 +#: part/views.py:1466 msgid "Part Pricing" msgstr "Teilbepreisung" -#: part/views.py:1534 +#: part/views.py:1588 msgid "Create Part Parameter Template" msgstr "Teilparametervorlage anlegen" -#: part/views.py:1542 +#: part/views.py:1596 msgid "Edit Part Parameter Template" msgstr "Teilparametervorlage bearbeiten" -#: part/views.py:1549 +#: part/views.py:1603 msgid "Delete Part Parameter Template" msgstr "Teilparametervorlage löschen" -#: part/views.py:1557 +#: part/views.py:1611 msgid "Create Part Parameter" msgstr "Teilparameter anlegen" -#: part/views.py:1607 +#: part/views.py:1661 msgid "Edit Part Parameter" msgstr "Teilparameter bearbeiten" -#: part/views.py:1621 +#: part/views.py:1675 msgid "Delete Part Parameter" msgstr "Teilparameter löschen" -#: part/views.py:1637 +#: part/views.py:1691 msgid "Edit Part Category" msgstr "Teilkategorie bearbeiten" -#: part/views.py:1672 +#: part/views.py:1726 msgid "Delete Part Category" msgstr "Teilkategorie löschen" -#: part/views.py:1678 +#: part/views.py:1732 msgid "Part category was deleted" msgstr "Teilekategorie wurde gelöscht" -#: part/views.py:1686 +#: part/views.py:1740 msgid "Create new part category" msgstr "Teilkategorie anlegen" -#: part/views.py:1737 +#: part/views.py:1791 msgid "Create BOM item" msgstr "BOM-Position anlegen" -#: part/views.py:1803 +#: part/views.py:1857 msgid "Edit BOM item" msgstr "BOM-Position beaarbeiten" -#: part/views.py:1851 +#: part/views.py:1905 msgid "Confim BOM item deletion" msgstr "Löschung von BOM-Position bestätigen" @@ -2567,192 +2754,300 @@ msgstr "Lagerobjekt existiert nicht" msgid "No matching data" msgstr "Keine passenden Daten" -#: stock/forms.py:93 +#: report/models.py:167 +#, fuzzy +#| msgid "Template part" +msgid "Template name" +msgstr "Vorlagenteil" + +#: report/models.py:173 +msgid "Report template file" +msgstr "" + +#: report/models.py:177 +#, fuzzy +#| msgid "Supplier part description" +msgid "Report template description" +msgstr "Zuliefererbeschreibung des Teils" + +#: report/models.py:221 +msgid "Part query filters (comma-separated list of key=value pairs)" +msgstr "" + +#: report/models.py:266 +msgid "Report asset file" +msgstr "" + +#: report/models.py:269 +#, fuzzy +#| msgid "Settings description" +msgid "Asset file description" +msgstr "Einstellungs-Beschreibung" + +#: stock/forms.py:194 +#, fuzzy +#| msgid "Select stock item to allocate" +msgid "Select test report template" +msgstr "Lagerobjekt für Zuordnung auswählen" + +#: stock/forms.py:202 msgid "Include stock items in sub locations" msgstr "Lagerobjekte in untergeordneten Lagerorten einschließen" -#: stock/forms.py:126 +#: stock/forms.py:235 msgid "Destination stock location" msgstr "Ziel-Lagerbestand" -#: stock/forms.py:132 +#: stock/forms.py:241 msgid "Confirm movement of stock items" msgstr "Bewegung der Lagerobjekte bestätigen" -#: stock/forms.py:134 +#: stock/forms.py:243 msgid "Set the destination as the default location for selected parts" msgstr "Setze das Ziel als Standard-Ziel für ausgewählte Teile" -#: stock/models.py:217 -#, python-brace-format -msgid "" -"A stock item with this serial number already exists for template part {part}" -msgstr "" -"Ein Teil mit dieser Seriennummer existiert bereits für die Teilevorlage " -"{part}" - -#: stock/models.py:222 -msgid "A stock item with this serial number already exists" +#: stock/models.py:208 +#, fuzzy +#| msgid "A stock item with this serial number already exists" +msgid "StockItem with this serial number already exists" msgstr "Ein Teil mit dieser Seriennummer existiert bereits" -#: stock/models.py:253 +#: stock/models.py:250 #, python-brace-format msgid "Part type ('{pf}') must be {pe}" msgstr "Teile-Typ ('{pf}') muss {pe} sein" -#: stock/models.py:263 stock/models.py:272 +#: stock/models.py:260 stock/models.py:269 msgid "Quantity must be 1 for item with a serial number" msgstr "Anzahl muss für Objekte mit Seriennummer \"1\" sein" -#: stock/models.py:264 +#: stock/models.py:261 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" "Seriennummer kann nicht gesetzt werden wenn die Anzahl größer als \"1\" ist" -#: stock/models.py:280 -msgid "Stock item cannot be created for a template Part" -msgstr "Lagerobjekt kann nicht für Vorlagen-Teile angelegt werden" - -#: stock/models.py:289 +#: stock/models.py:282 msgid "Item cannot belong to itself" msgstr "Teil kann nicht zu sich selbst gehören" -#: stock/models.py:326 +#: stock/models.py:314 msgid "Parent Stock Item" msgstr "Eltern-Lagerobjekt" -#: stock/models.py:334 stock/templates/stock/item_base.html:108 +#: stock/models.py:322 stock/templates/stock/item_base.html:129 msgid "Base Part" msgstr "Basisteil" -#: stock/models.py:335 +#: stock/models.py:323 msgid "Base part" msgstr "Basis-Teil" -#: stock/models.py:345 +#: stock/models.py:332 msgid "Select a matching supplier part for this stock item" msgstr "Passenden Zulieferer für dieses Lagerobjekt auswählen" -#: stock/models.py:350 stock/templates/stock/stock_app_base.html:7 +#: stock/models.py:337 stock/templates/stock/stock_app_base.html:7 msgid "Stock Location" msgstr "Lagerort" -#: stock/models.py:353 +#: stock/models.py:340 msgid "Where is this stock item located?" msgstr "Wo wird dieses Teil normalerweise gelagert?" -#: stock/models.py:358 +#: stock/models.py:345 msgid "Installed In" msgstr "Installiert in" -#: stock/models.py:361 +#: stock/models.py:348 msgid "Is this item installed in another item?" msgstr "Ist dieses Teil in einem anderen verbaut?" -#: stock/models.py:367 +#: stock/models.py:364 msgid "Serial number for this item" msgstr "Seriennummer für dieses Teil" -#: stock/models.py:379 +#: stock/models.py:376 msgid "Batch code for this stock item" msgstr "Losnummer für dieses Lagerobjekt" -#: stock/models.py:383 +#: stock/models.py:380 msgid "Stock Quantity" msgstr "Bestand" -#: stock/models.py:392 +#: stock/models.py:389 msgid "Source Build" msgstr "Quellbau" -#: stock/models.py:394 +#: stock/models.py:391 msgid "Build for this stock item" msgstr "Bau für dieses Lagerobjekt" -#: stock/models.py:401 +#: stock/models.py:398 msgid "Source Purchase Order" msgstr "Quellbestellung" -#: stock/models.py:404 +#: stock/models.py:401 msgid "Purchase order for this stock item" msgstr "Bestellung für dieses Teil" -#: stock/models.py:410 +#: stock/models.py:407 msgid "Destination Sales Order" msgstr "Zielauftrag" -#: stock/models.py:417 +#: stock/models.py:414 msgid "Destination Build Order" msgstr "Zielbauauftrag" -#: stock/models.py:430 +#: stock/models.py:427 msgid "Delete this Stock Item when stock is depleted" msgstr "Objekt löschen wenn Lagerbestand aufgebraucht" -#: stock/models.py:440 stock/templates/stock/item_notes.html:13 -#: stock/templates/stock/item_notes.html:29 +#: stock/models.py:437 stock/templates/stock/item_notes.html:14 +#: stock/templates/stock/item_notes.html:30 msgid "Stock Item Notes" msgstr "Lagerobjekt-Notizen" -#: stock/models.py:604 +#: stock/models.py:489 +#, fuzzy +#| msgid "Item assigned to customer?" +msgid "Assigned to Customer" +msgstr "Ist dieses Objekt einem Kunden zugeteilt?" + +#: stock/models.py:491 +#, fuzzy +#| msgid "Item assigned to customer?" +msgid "Manually assigned to customer" +msgstr "Ist dieses Objekt einem Kunden zugeteilt?" + +#: stock/models.py:656 +#, fuzzy +#| msgid "Part is not a virtual part" +msgid "Part is not set as trackable" +msgstr "Teil ist nicht virtuell" + +#: stock/models.py:662 msgid "Quantity must be integer" msgstr "Anzahl muss eine Ganzzahl sein" -#: stock/models.py:610 +#: stock/models.py:668 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({n})" msgstr "Anzahl darf nicht die verfügbare Anzahl überschreiten ({n})" -#: stock/models.py:613 stock/models.py:616 +#: stock/models.py:671 stock/models.py:674 msgid "Serial numbers must be a list of integers" msgstr "Seriennummern muss eine Liste von Ganzzahlen sein" -#: stock/models.py:619 +#: stock/models.py:677 msgid "Quantity does not match serial numbers" msgstr "Anzahl stimmt nicht mit den Seriennummern überein" -#: stock/models.py:629 +#: stock/models.py:687 msgid "Serial numbers already exist: " msgstr "Seriennummern existieren bereits:" -#: stock/models.py:651 +#: stock/models.py:712 msgid "Add serial number" msgstr "Seriennummer hinzufügen" -#: stock/models.py:654 +#: stock/models.py:715 #, python-brace-format msgid "Serialized {n} items" msgstr "{n} Teile serialisiert" -#: stock/models.py:751 +#: stock/models.py:826 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:960 +#: stock/models.py:1153 msgid "Tracking entry title" msgstr "Name des Eintrags-Trackings" -#: stock/models.py:962 +#: stock/models.py:1155 msgid "Entry notes" msgstr "Eintrags-Notizen" -#: stock/models.py:964 +#: stock/models.py:1157 msgid "Link to external page for further information" msgstr "Link auf externe Seite für weitere Informationen" -#: stock/templates/stock/item.html:12 +#: stock/models.py:1217 +#, fuzzy +#| msgid "Serial number for this item" +msgid "Value must be provided for this test" +msgstr "Seriennummer für dieses Teil" + +#: stock/models.py:1223 +msgid "Attachment must be uploaded for this test" +msgstr "" + +#: stock/models.py:1240 +msgid "Test" +msgstr "" + +#: stock/models.py:1241 +#, fuzzy +#| msgid "Part name" +msgid "Test name" +msgstr "Name des Teils" + +#: stock/models.py:1246 +#, fuzzy +#| msgid "Search Results" +msgid "Result" +msgstr "Suchergebnisse" + +#: stock/models.py:1247 templates/js/table_filters.html:53 +msgid "Test result" +msgstr "" + +#: stock/models.py:1253 +msgid "Test output value" +msgstr "" + +#: stock/models.py:1259 +#, fuzzy +#| msgid "Attachments" +msgid "Attachment" +msgstr "Anhänge" + +#: stock/models.py:1260 +#, fuzzy +#| msgid "Delete attachment" +msgid "Test result attachment" +msgstr "Anhang löschen" + +#: stock/models.py:1266 +#, fuzzy +#| msgid "Edit notes" +msgid "Test notes" +msgstr "Bermerkungen bearbeiten" + +#: stock/templates/stock/item.html:11 msgid "Stock Tracking Information" msgstr "Informationen zum Lagerbestands-Tracking" +#: stock/templates/stock/item_attachments.html:10 +#, fuzzy +#| msgid "Stock Item Notes" +msgid "Stock Item Attachments" +msgstr "Lagerobjekt-Notizen" + #: stock/templates/stock/item_base.html:20 +#, fuzzy +#| msgid "This stock item does not have any child items" +msgid "This stock item has not passed all required tests" +msgstr "Dieses Lagerobjekt hat keine Kinder" + +#: stock/templates/stock/item_base.html:26 msgid "This stock item is allocated to Sales Order" msgstr "Dieses Lagerobjekt ist dem Auftrag zugewiesen" -#: stock/templates/stock/item_base.html:26 +#: stock/templates/stock/item_base.html:32 msgid "This stock item is allocated to Build" msgstr "Dieses Lagerobjekt ist dem Bau zugewiesen" -#: stock/templates/stock/item_base.html:32 +#: stock/templates/stock/item_base.html:38 msgid "" "This stock item is serialized - it has a unique serial number and the " "quantity cannot be adjusted." @@ -2760,42 +3055,110 @@ msgstr "" "Dieses Lagerobjekt ist serialisiert. Es hat eine eindeutige Seriennummer und " "die Anzahl kann nicht angepasst werden." -#: stock/templates/stock/item_base.html:36 +#: stock/templates/stock/item_base.html:42 msgid "This stock item cannot be deleted as it has child items" msgstr "Dieses Lagerobjekt kann nicht gelöscht werden, da es Kinder besitzt" -#: stock/templates/stock/item_base.html:40 +#: stock/templates/stock/item_base.html:46 msgid "" "This stock item will be automatically deleted when all stock is depleted." msgstr "" "Dieses Lagerobjekt wird automatisch gelöscht wenn der Lagerbestand " "aufgebraucht ist." -#: stock/templates/stock/item_base.html:103 +#: stock/templates/stock/item_base.html:74 +#, fuzzy +#| msgid "Add stock" +msgid "Add to stock" +msgstr "Bestand hinzufügen" + +#: stock/templates/stock/item_base.html:77 +#, fuzzy +#| msgid "Remove From Stock" +msgid "Take from stock" +msgstr "Aus Lagerbestand entfernen" + +#: stock/templates/stock/item_base.html:80 templates/stock_table.html:14 +msgid "Count stock" +msgstr "Bestand zählen" + +#: stock/templates/stock/item_base.html:84 +#, fuzzy +#| msgid "Serialize Stock" +msgid "Serialize stock" +msgstr "Lagerbestand erfassen" + +#: stock/templates/stock/item_base.html:90 stock/views.py:232 +#, fuzzy +#| msgid "Item assigned to customer?" +msgid "Assign to Customer" +msgstr "Ist dieses Objekt einem Kunden zugeteilt?" + +#: stock/templates/stock/item_base.html:94 +#, fuzzy +#| msgid "Order stock" +msgid "Transfer stock" +msgstr "Bestand bestellen" + +#: stock/templates/stock/item_base.html:97 +#, fuzzy +#| msgid "Count stock items" +msgid "Duplicate stock item" +msgstr "Lagerobjekte zählen" + +#: stock/templates/stock/item_base.html:102 +#, fuzzy +#| msgid "Count stock items" +msgid "Convert stock to variant" +msgstr "Lagerobjekte zählen" + +#: stock/templates/stock/item_base.html:107 +msgid "Generate test report" +msgstr "" + +#: stock/templates/stock/item_base.html:111 +#, fuzzy +#| msgid "Edit Stock Item" +msgid "Edit stock item" +msgstr "Lagerobjekt bearbeiten" + +#: stock/templates/stock/item_base.html:115 +#, fuzzy +#| msgid "Delete Stock Item" +msgid "Delete stock item" +msgstr "Lagerobjekt löschen" + +#: stock/templates/stock/item_base.html:124 msgid "Stock Item Details" msgstr "Lagerbestands-Details" -#: stock/templates/stock/item_base.html:116 +#: stock/templates/stock/item_base.html:144 msgid "Belongs To" msgstr "Gehört zu" -#: stock/templates/stock/item_base.html:141 +#: stock/templates/stock/item_base.html:166 +#, fuzzy +#| msgid "No stock location set" +msgid "No location set" +msgstr "Kein Lagerort gesetzt" + +#: stock/templates/stock/item_base.html:173 msgid "Unique Identifier" msgstr "Eindeutiger Bezeichner" -#: stock/templates/stock/item_base.html:182 +#: stock/templates/stock/item_base.html:214 msgid "Parent Item" msgstr "Elternposition" -#: stock/templates/stock/item_base.html:207 +#: stock/templates/stock/item_base.html:239 msgid "Last Updated" msgstr "Zuletzt aktualisiert" -#: stock/templates/stock/item_base.html:212 +#: stock/templates/stock/item_base.html:244 msgid "Last Stocktake" msgstr "Letzte Inventur" -#: stock/templates/stock/item_base.html:216 +#: stock/templates/stock/item_base.html:248 msgid "No stocktake performed" msgstr "Keine Inventur ausgeführt" @@ -2807,6 +3170,24 @@ msgstr "Kind-Lagerobjekte" msgid "This stock item does not have any child items" msgstr "Dieses Lagerobjekt hat keine Kinder" +#: stock/templates/stock/item_tests.html:10 stock/templates/stock/tabs.html:13 +msgid "Test Data" +msgstr "" + +#: stock/templates/stock/item_tests.html:17 +#, fuzzy +#| msgid "Delete Template" +msgid "Delete Test Data" +msgstr "Vorlage löschen" + +#: stock/templates/stock/item_tests.html:19 +msgid "Add Test Data" +msgstr "" + +#: stock/templates/stock/item_tests.html:21 +msgid "Test Report" +msgstr "" + #: stock/templates/stock/location.html:13 msgid "All stock items" msgstr "Alle Lagerobjekte" @@ -2854,154 +3235,232 @@ msgstr "Objekt-Details" msgid "Stock Locations" msgstr "Lagerobjekt-Standorte" -#: stock/templates/stock/tabs.html:8 -msgid "Children" -msgstr "Kinder" +#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:934 +#, fuzzy +#| msgid "Count Stock Items" +msgid "Convert Stock Item" +msgstr "Lagerobjekte zählen" -#: stock/templates/stock/tabs.html:13 +#: stock/templates/stock/stockitem_convert.html:8 +#, fuzzy +#| msgid "This stock item is allocated to Build" +msgid "This stock item is current an instance of " +msgstr "Dieses Lagerobjekt ist dem Bau zugewiesen" + +#: stock/templates/stock/stockitem_convert.html:9 +msgid "It can be converted to one of the part variants listed below." +msgstr "" + +#: stock/templates/stock/stockitem_convert.html:14 +msgid "This action cannot be easily undone" +msgstr "" + +#: stock/templates/stock/tabs.html:21 msgid "Builds" msgstr "Baue" -#: stock/views.py:117 +#: stock/templates/stock/tabs.html:38 +msgid "Children" +msgstr "Kinder" + +#: stock/views.py:113 msgid "Edit Stock Location" msgstr "Lagerobjekt-Standort bearbeiten" -#: stock/views.py:141 +#: stock/views.py:137 msgid "Stock Location QR code" msgstr "QR-Code für diesen Standort" -#: stock/views.py:156 +#: stock/views.py:155 +#, fuzzy +#| msgid "Add Attachment" +msgid "Add Stock Item Attachment" +msgstr "Anhang hinzufügen" + +#: stock/views.py:200 +#, fuzzy +#| msgid "Edit Stock Item" +msgid "Edit Stock Item Attachment" +msgstr "Lagerobjekt bearbeiten" + +#: stock/views.py:216 +#, fuzzy +#| msgid "Delete Part Attachment" +msgid "Delete Stock Item Attachment" +msgstr "Teilanhang löschen" + +#: stock/views.py:270 +#, fuzzy +#| msgid "Delete Template" +msgid "Delete All Test Data" +msgstr "Vorlage löschen" + +#: stock/views.py:285 +#, fuzzy +#| msgid "Confirm Part Deletion" +msgid "Confirm test data deletion" +msgstr "Löschen des Teils bestätigen" + +#: stock/views.py:305 +msgid "Add Test Result" +msgstr "" + +#: stock/views.py:342 +#, fuzzy +#| msgid "Edit Template" +msgid "Edit Test Result" +msgstr "Vorlage bearbeiten" + +#: stock/views.py:359 +#, fuzzy +#| msgid "Delete Template" +msgid "Delete Test Result" +msgstr "Vorlage löschen" + +#: stock/views.py:370 +#, fuzzy +#| msgid "Delete Template" +msgid "Select Test Report Template" +msgstr "Vorlage löschen" + +#: stock/views.py:384 +#, fuzzy +#| msgid "Select valid part" +msgid "Select valid template" +msgstr "Bitte ein gültiges Teil auswählen" + +#: stock/views.py:436 msgid "Stock Export Options" msgstr "Lagerbestandsexportoptionen" -#: stock/views.py:276 +#: stock/views.py:556 msgid "Stock Item QR Code" msgstr "Lagerobjekt-QR-Code" -#: stock/views.py:299 +#: stock/views.py:579 msgid "Adjust Stock" msgstr "Lagerbestand anpassen" -#: stock/views.py:408 +#: stock/views.py:688 msgid "Move Stock Items" msgstr "Lagerobjekte bewegen" -#: stock/views.py:409 +#: stock/views.py:689 msgid "Count Stock Items" msgstr "Lagerobjekte zählen" -#: stock/views.py:410 +#: stock/views.py:690 msgid "Remove From Stock" msgstr "Aus Lagerbestand entfernen" -#: stock/views.py:411 +#: stock/views.py:691 msgid "Add Stock Items" msgstr "Lagerobjekte hinzufügen" -#: stock/views.py:412 +#: stock/views.py:692 msgid "Delete Stock Items" msgstr "Lagerobjekte löschen" -#: stock/views.py:440 +#: stock/views.py:720 msgid "Must enter integer value" msgstr "Nur Ganzzahl eingeben" -#: stock/views.py:445 +#: stock/views.py:725 msgid "Quantity must be positive" msgstr "Anzahl muss positiv sein" -#: stock/views.py:452 +#: stock/views.py:732 #, python-brace-format msgid "Quantity must not exceed {x}" msgstr "Anzahl darf {x} nicht überschreiten" -#: stock/views.py:460 +#: stock/views.py:740 msgid "Confirm stock adjustment" msgstr "Bestands-Anpassung bestätigen" -#: stock/views.py:531 +#: stock/views.py:811 #, python-brace-format msgid "Added stock to {n} items" msgstr "Vorrat zu {n} Lagerobjekten hinzugefügt" -#: stock/views.py:546 +#: stock/views.py:826 #, python-brace-format msgid "Removed stock from {n} items" msgstr "Vorrat von {n} Lagerobjekten entfernt" -#: stock/views.py:559 +#: stock/views.py:839 #, python-brace-format msgid "Counted stock for {n} items" msgstr "Bestand für {n} Objekte erfasst" -#: stock/views.py:587 +#: stock/views.py:867 msgid "No items were moved" msgstr "Keine Lagerobjekte wurden bewegt" -#: stock/views.py:590 +#: stock/views.py:870 #, python-brace-format msgid "Moved {n} items to {dest}" msgstr "{n} Teile nach {dest} bewegt" -#: stock/views.py:609 +#: stock/views.py:889 #, python-brace-format msgid "Deleted {n} stock items" msgstr "{n} Teile im Lager gelöscht" -#: stock/views.py:621 +#: stock/views.py:901 msgid "Edit Stock Item" msgstr "Lagerobjekt bearbeiten" -#: stock/views.py:657 +#: stock/views.py:961 msgid "Create new Stock Location" msgstr "Neuen Lager-Standort erstellen" -#: stock/views.py:678 +#: stock/views.py:982 msgid "Serialize Stock" msgstr "Lagerbestand erfassen" -#: stock/views.py:758 +#: stock/views.py:1074 msgid "Create new Stock Item" msgstr "Neues Lagerobjekt hinzufügen" -#: stock/views.py:822 +#: stock/views.py:1167 msgid "Copy Stock Item" msgstr "Lagerobjekt kopieren" -#: stock/views.py:893 +#: stock/views.py:1240 msgid "Invalid quantity" msgstr "Ungültige Menge" -#: stock/views.py:896 +#: stock/views.py:1247 msgid "Invalid part selection" msgstr "Ungültige Teileauswahl" -#: stock/views.py:943 +#: stock/views.py:1296 #, python-brace-format msgid "Created {n} new stock items" msgstr "{n} neue Lagerobjekte erstellt" -#: stock/views.py:960 stock/views.py:973 +#: stock/views.py:1315 stock/views.py:1331 msgid "Created new stock item" msgstr "Neues Lagerobjekt erstellt" -#: stock/views.py:990 +#: stock/views.py:1350 msgid "Delete Stock Location" msgstr "Standort löschen" -#: stock/views.py:1003 +#: stock/views.py:1363 msgid "Delete Stock Item" msgstr "Lagerobjekt löschen" -#: stock/views.py:1014 +#: stock/views.py:1374 msgid "Delete Stock Tracking Entry" msgstr "Lagerbestands-Tracking-Eintrag löschen" -#: stock/views.py:1031 +#: stock/views.py:1391 msgid "Edit Stock Tracking Entry" msgstr "Lagerbestands-Tracking-Eintrag bearbeiten" -#: stock/views.py:1040 +#: stock/views.py:1400 msgid "Add Stock Tracking Entry" msgstr "Lagerbestands-Tracking-Eintrag hinzufügen" @@ -3013,6 +3472,12 @@ msgstr "Suchergebnisse" msgid "No results found" msgstr "Keine Ergebnisse gefunden" +#: templates/InvenTree/settings/part.html:9 +#, fuzzy +#| msgid "Edit Part Parameter Template" +msgid "Part Parameter Templates" +msgstr "Teilparametervorlage bearbeiten" + #: templates/InvenTree/settings/part.html:28 msgid "No part parameter templates found" msgstr "Keine Teilparametervorlagen gefunden" @@ -3065,6 +3530,26 @@ msgstr "Code auf GitHub ansehen" msgid "Submit Bug Report" msgstr "Fehlerbericht senden" +#: templates/attachment_table.html:5 +msgid "Add Attachment" +msgstr "Anhang hinzufügen" + +#: templates/attachment_table.html:13 +msgid "File" +msgstr "Datei" + +#: templates/attachment_table.html:14 +msgid "Comment" +msgstr "Kommentar" + +#: templates/attachment_table.html:15 +msgid "Uploaded" +msgstr "" + +#: templates/attachment_table.html:33 +msgid "Delete attachment" +msgstr "Anhang löschen" + #: templates/js/bom.html:143 msgid "Open subassembly" msgstr "Unterbaugruppe öffnen" @@ -3109,11 +3594,11 @@ msgstr "Keine Firmeninformation gefunden" msgid "No supplier parts found" msgstr "Keine Zuliefererteile gefunden" -#: templates/js/company.html:117 templates/js/part.html:136 +#: templates/js/company.html:117 templates/js/part.html:145 msgid "Template part" msgstr "Vorlagenteil" -#: templates/js/company.html:121 templates/js/part.html:140 +#: templates/js/company.html:121 templates/js/part.html:149 msgid "Assembled part" msgstr "Baugruppe" @@ -3125,7 +3610,7 @@ msgstr "Link" msgid "No purchase orders found" msgstr "Keine Bestellungen gefunden" -#: templates/js/order.html:170 templates/js/stock.html:389 +#: templates/js/order.html:170 templates/js/stock.html:605 msgid "Date" msgstr "Datum" @@ -3137,58 +3622,208 @@ msgstr "Keine Aufträge gefunden" msgid "Shipment Date" msgstr "Versanddatum" -#: templates/js/part.html:104 templates/js/stock.html:196 +#: templates/js/part.html:106 templates/js/stock.html:403 msgid "Select" msgstr "Auswählen" -#: templates/js/part.html:144 +#: templates/js/part.html:153 msgid "Starred part" msgstr "Favoritenteil" -#: templates/js/part.html:148 +#: templates/js/part.html:157 msgid "Salable part" msgstr "Verkäufliches Teil" -#: templates/js/part.html:187 +#: templates/js/part.html:196 msgid "No category" msgstr "Keine Kategorie" -#: templates/js/part.html:205 templates/table_filters.html:95 +#: templates/js/part.html:214 templates/js/table_filters.html:130 msgid "Low stock" msgstr "Bestand niedrig" -#: templates/js/part.html:214 +#: templates/js/part.html:223 msgid "Building" msgstr "Im Bau" -#: templates/js/part.html:232 +#: templates/js/part.html:241 msgid "No parts found" msgstr "Keine Teile gefunden" -#: templates/js/stock.html:66 +#: templates/js/part.html:301 +msgid "YES" +msgstr "" + +#: templates/js/part.html:303 +msgid "NO" +msgstr "" + +#: templates/js/part.html:337 +#, 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:62 +#, fuzzy +#| msgid "Edit Sales Order" +msgid "Edit test result" +msgstr "Auftrag bearbeiten" + +#: templates/js/part.html:388 templates/js/stock.html:63 +#, fuzzy +#| msgid "Delete attachment" +msgid "Delete test result" +msgstr "Anhang löschen" + +#: templates/js/part.html:394 +msgid "This test is defined for a parent part" +msgstr "" + +#: templates/js/stock.html:25 +msgid "PASS" +msgstr "" + +#: templates/js/stock.html:27 +msgid "FAIL" +msgstr "" + +#: templates/js/stock.html:32 +msgid "NO RESULT" +msgstr "" + +#: templates/js/stock.html:58 +msgid "Add test result" +msgstr "" + +#: templates/js/stock.html:76 +#, fuzzy +#| msgid "No results found" +msgid "No test results found" +msgstr "Keine Ergebnisse gefunden" + +#: templates/js/stock.html:117 +#, fuzzy +#| msgid "Shipment Date" +msgid "Test Date" +msgstr "Versanddatum" + +#: templates/js/stock.html:258 msgid "No stock items matching query" msgstr "Keine zur Anfrage passenden Lagerobjekte" -#: templates/js/stock.html:251 +#: templates/js/stock.html:355 templates/js/stock.html:370 +#, fuzzy +#| msgid "Include sublocations" +msgid "Undefined location" +msgstr "Unterlagerorte einschließen" + +#: templates/js/stock.html:467 msgid "StockItem has been allocated" msgstr "Lagerobjekt wurde zugewiesen" -#: templates/js/stock.html:256 +#: templates/js/stock.html:472 msgid "StockItem is lost" msgstr "Lagerobjekt verloren" -#: templates/js/stock.html:284 +#: templates/js/stock.html:500 msgid "No stock location set" msgstr "Kein Lagerort gesetzt" -#: templates/js/stock.html:446 -msgid "User" -msgstr "Benutzer" - -#: templates/js/stock.html:455 +#: templates/js/stock.html:671 msgid "No user information" msgstr "Keine Benutzerinformation" +#: templates/js/table_filters.html:19 +msgid "Include sublocations" +msgstr "Unterlagerorte einschließen" + +#: templates/js/table_filters.html:20 +msgid "Include stock in sublocations" +msgstr "Bestand in Unterlagerorten einschließen" + +#: templates/js/table_filters.html:24 +msgid "Active parts" +msgstr "Aktive Teile" + +#: templates/js/table_filters.html:25 +msgid "Show stock for active parts" +msgstr "Bestand aktiver Teile anzeigen" + +#: templates/js/table_filters.html:29 templates/js/table_filters.html:30 +msgid "Stock status" +msgstr "Bestandsstatus" + +#: templates/js/table_filters.html:34 +msgid "Is allocated" +msgstr "Ist zugeordnet" + +#: templates/js/table_filters.html:35 +msgid "Item has been alloacted" +msgstr "Position wurde zugeordnet" + +#: templates/js/table_filters.html:38 +#, fuzzy +#| msgid "Serial Number" +msgid "Serial number GTE" +msgstr "Seriennummer" + +#: templates/js/table_filters.html:39 +#, fuzzy +#| msgid "Serial number for this item" +msgid "Serial number greater than or equal to" +msgstr "Seriennummer für dieses Teil" + +#: templates/js/table_filters.html:42 +#, fuzzy +#| msgid "Serial Number" +msgid "Serial number LTE" +msgstr "Seriennummer" + +#: templates/js/table_filters.html:43 +#, fuzzy +#| msgid "Serial numbers already exist: " +msgid "Serial number less than or equal to" +msgstr "Seriennummern existieren bereits:" + +#: templates/js/table_filters.html:72 +msgid "Build status" +msgstr "Bau-Status" + +#: templates/js/table_filters.html:84 templates/js/table_filters.html:97 +msgid "Order status" +msgstr "Bestellstatus" + +#: templates/js/table_filters.html:89 templates/js/table_filters.html:102 +#, fuzzy +#| msgid "Cascading" +msgid "Outstanding" +msgstr "Kaskadierend" + +#: templates/js/table_filters.html:112 +msgid "Include subcategories" +msgstr "Unterkategorien einschließen" + +#: templates/js/table_filters.html:113 +msgid "Include parts in subcategories" +msgstr "Teile in Unterkategorien einschließen" + +#: templates/js/table_filters.html:118 +msgid "Show active parts" +msgstr "Aktive Teile anzeigen" + +#: templates/js/table_filters.html:126 +msgid "Stock available" +msgstr "Bestand verfügbar" + +#: templates/js/table_filters.html:142 +msgid "Starred" +msgstr "Favorit" + +#: templates/js/table_filters.html:154 +msgid "Purchasable" +msgstr "Käuflich" + #: templates/navbar.html:14 msgid "Buy" msgstr "Kaufen" @@ -3233,10 +3868,6 @@ msgstr "Bestand hinzufügen" msgid "Remove stock" msgstr "Bestand entfernen" -#: templates/stock_table.html:14 -msgid "Count stock" -msgstr "Bestand zählen" - #: templates/stock_table.html:15 msgid "Move stock" msgstr "Bestand bewegen" @@ -3249,91 +3880,24 @@ msgstr "Bestand bestellen" msgid "Delete Stock" msgstr "Bestand löschen" -#: templates/table_filters.html:21 -msgid "Include sublocations" -msgstr "Unterlagerorte einschließen" +#~ msgid "Part cannot be a variant of another part if it is already a template" +#~ msgstr "" +#~ "Teil kann keine Variante eines anderen Teils sein wenn es bereits eine " +#~ "Vorlage ist" -#: templates/table_filters.html:22 -msgid "Include stock in sublocations" -msgstr "Bestand in Unterlagerorten einschließen" - -#: templates/table_filters.html:26 -msgid "Active parts" -msgstr "Aktive Teile" - -#: templates/table_filters.html:27 -msgid "Show stock for active parts" -msgstr "Bestand aktiver Teile anzeigen" - -#: templates/table_filters.html:31 templates/table_filters.html:32 -msgid "Stock status" -msgstr "Bestandsstatus" - -#: templates/table_filters.html:36 -msgid "Is allocated" -msgstr "Ist zugeordnet" - -#: templates/table_filters.html:37 -msgid "Item has been alloacted" -msgstr "Position wurde zugeordnet" - -#: templates/table_filters.html:46 -msgid "Build status" -msgstr "Bau-Status" - -#: templates/table_filters.html:57 templates/table_filters.html:66 -msgid "Order status" -msgstr "Bestellstatus" - -#: templates/table_filters.html:77 -msgid "Include subcategories" -msgstr "Unterkategorien einschließen" - -#: templates/table_filters.html:78 -msgid "Include parts in subcategories" -msgstr "Teile in Unterkategorien einschließen" - -#: templates/table_filters.html:82 -msgid "Active" -msgstr "Aktiv" - -#: templates/table_filters.html:83 -msgid "Show active parts" -msgstr "Aktive Teile anzeigen" - -#: templates/table_filters.html:87 -msgid "Template" -msgstr "Vorlage" - -#: templates/table_filters.html:91 -msgid "Stock available" -msgstr "Bestand verfügbar" - -#: templates/table_filters.html:107 -msgid "Starred" -msgstr "Favorit" - -#: templates/table_filters.html:115 -msgid "Purchasable" -msgstr "Käuflich" +#~ msgid "It is not a real part, but real parts can be based on this template." +#~ msgstr "" +#~ "Es ist kein echtes Teil, aber echte Teile können auf dieser Vorlage " +#~ "basieren." #~ msgid "Allocate Stock to Build" #~ msgstr "Lagerbestand dem Bau zuweisen" -#~ msgid "Required Parts" -#~ msgstr "benötigte Teile" - #~ msgid "Allocate" #~ msgstr "zuweisen" #~ msgid "Line" #~ msgstr "Position" -#~ msgid "This part is not active" -#~ msgstr "Dieses Teil ist nicht aktiv" - -#~ msgid "Item assigned to customer?" -#~ msgstr "Ist dieses Objekt einem Kunden zugeteilt?" - #~ msgid "URL" #~ msgstr "URL" diff --git a/InvenTree/locale/en/LC_MESSAGES/django.po b/InvenTree/locale/en/LC_MESSAGES/django.po index 976f7abf2f..fb77271de8 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-05-04 09:50+0000\n" +"POT-Creation-Date: 2020-06-09 06:17+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -18,84 +18,112 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: InvenTree/api.py:61 +#: InvenTree/api.py:86 msgid "No action specified" msgstr "" -#: InvenTree/api.py:75 +#: InvenTree/api.py:100 msgid "No matching action found" msgstr "" -#: InvenTree/api.py:106 +#: InvenTree/api.py:131 msgid "No barcode data provided" msgstr "" -#: InvenTree/api.py:121 +#: InvenTree/api.py:146 msgid "Barcode successfully decoded" msgstr "" -#: InvenTree/api.py:124 +#: InvenTree/api.py:149 msgid "Barcode plugin returned incorrect response" msgstr "" -#: InvenTree/api.py:134 +#: InvenTree/api.py:159 msgid "Unknown barcode format" msgstr "" -#: InvenTree/helpers.py:258 order/models.py:150 order/models.py:224 +#: InvenTree/forms.py:101 build/forms.py:37 +msgid "Confirm" +msgstr "" + +#: InvenTree/forms.py:117 +msgid "Confirm item deletion" +msgstr "" + +#: InvenTree/forms.py:149 +msgid "Enter new password" +msgstr "" + +#: InvenTree/forms.py:156 +msgid "Confirm new password" +msgstr "" + +#: InvenTree/helpers.py:328 order/models.py:187 order/models.py:261 msgid "Invalid quantity provided" msgstr "" -#: InvenTree/helpers.py:261 +#: InvenTree/helpers.py:331 msgid "Empty serial number string" msgstr "" -#: InvenTree/helpers.py:282 InvenTree/helpers.py:299 +#: InvenTree/helpers.py:352 InvenTree/helpers.py:369 #, python-brace-format msgid "Duplicate serial: {n}" msgstr "" -#: InvenTree/helpers.py:286 InvenTree/helpers.py:289 InvenTree/helpers.py:292 -#: InvenTree/helpers.py:303 +#: InvenTree/helpers.py:356 InvenTree/helpers.py:359 InvenTree/helpers.py:362 +#: InvenTree/helpers.py:373 #, python-brace-format msgid "Invalid group: {g}" msgstr "" -#: InvenTree/helpers.py:309 +#: InvenTree/helpers.py:379 msgid "No serial numbers found" msgstr "" -#: InvenTree/helpers.py:313 +#: InvenTree/helpers.py:383 #, python-brace-format msgid "Number of unique serial number ({s}) must match quantity ({q})" msgstr "" -#: InvenTree/models.py:54 +#: InvenTree/models.py:60 msgid "Select file to attach" msgstr "" -#: InvenTree/models.py:56 +#: InvenTree/models.py:62 msgid "File comment" msgstr "" -#: InvenTree/settings.py:295 +#: InvenTree/models.py:68 templates/js/stock.html:662 +msgid "User" +msgstr "" + +#: InvenTree/models.py:106 part/templates/part/params.html:20 +msgid "Name" +msgstr "" + +#: InvenTree/models.py:112 +msgid "Description (optional)" +msgstr "" + +#: InvenTree/settings.py:330 msgid "English" msgstr "" -#: InvenTree/settings.py:296 +#: InvenTree/settings.py:331 msgid "German" msgstr "" -#: InvenTree/settings.py:297 +#: InvenTree/settings.py:332 msgid "French" msgstr "" -#: InvenTree/settings.py:298 +#: InvenTree/settings.py:333 msgid "Polish" msgstr "" #: InvenTree/status_codes.py:94 InvenTree/status_codes.py:135 -#: InvenTree/status_codes.py:230 +#: InvenTree/status_codes.py:235 msgid "Pending" msgstr "" @@ -103,61 +131,61 @@ msgstr "" msgid "Placed" msgstr "" -#: InvenTree/status_codes.py:96 InvenTree/status_codes.py:233 +#: InvenTree/status_codes.py:96 InvenTree/status_codes.py:238 msgid "Complete" msgstr "" #: InvenTree/status_codes.py:97 InvenTree/status_codes.py:137 -#: InvenTree/status_codes.py:232 +#: InvenTree/status_codes.py:237 msgid "Cancelled" msgstr "" #: InvenTree/status_codes.py:98 InvenTree/status_codes.py:138 -#: InvenTree/status_codes.py:174 +#: InvenTree/status_codes.py:179 msgid "Lost" msgstr "" #: InvenTree/status_codes.py:99 InvenTree/status_codes.py:139 -#: InvenTree/status_codes.py:176 +#: InvenTree/status_codes.py:181 msgid "Returned" msgstr "" -#: InvenTree/status_codes.py:136 InvenTree/status_codes.py:177 +#: InvenTree/status_codes.py:136 InvenTree/status_codes.py:182 #: order/templates/order/sales_order_base.html:98 msgid "Shipped" msgstr "" -#: InvenTree/status_codes.py:170 +#: InvenTree/status_codes.py:175 msgid "OK" msgstr "" -#: InvenTree/status_codes.py:171 +#: InvenTree/status_codes.py:176 msgid "Attention needed" msgstr "" -#: InvenTree/status_codes.py:172 +#: InvenTree/status_codes.py:177 msgid "Damaged" msgstr "" -#: InvenTree/status_codes.py:173 +#: InvenTree/status_codes.py:178 msgid "Destroyed" msgstr "" -#: InvenTree/status_codes.py:175 +#: InvenTree/status_codes.py:180 msgid "Rejected" msgstr "" -#: InvenTree/status_codes.py:178 +#: InvenTree/status_codes.py:183 msgid "Used for Build" msgstr "" -#: InvenTree/status_codes.py:179 +#: InvenTree/status_codes.py:184 msgid "Installed in Stock Item" msgstr "" -#: InvenTree/status_codes.py:231 build/templates/build/allocate.html:349 +#: InvenTree/status_codes.py:236 build/templates/build/allocate.html:349 #: order/templates/order/sales_order_detail.html:220 -#: part/templates/part/tabs.html:21 templates/js/build.html:120 +#: part/templates/part/tabs.html:23 templates/js/build.html:120 msgid "Allocated" msgstr "" @@ -186,159 +214,168 @@ msgstr "" msgid "Overage must be an integer value or a percentage" msgstr "" -#: InvenTree/views.py:547 +#: InvenTree/views.py:563 msgid "Database Statistics" msgstr "" -#: build/forms.py:37 -msgid "Confirm" +#: build/forms.py:58 +msgid "Location of completed parts" msgstr "" -#: build/forms.py:54 stock/forms.py:34 +#: build/forms.py:62 +msgid "Serial numbers" +msgstr "" + +#: build/forms.py:64 stock/forms.py:93 msgid "Enter unique serial numbers (or leave blank)" msgstr "" -#: build/forms.py:56 +#: build/forms.py:67 msgid "Confirm build completion" msgstr "" -#: build/models.py:57 build/templates/build/build_base.html:65 +#: build/models.py:67 +msgid "Build quantity must be integer value for trackable parts" +msgstr "" + +#: build/models.py:73 build/templates/build/build_base.html:65 msgid "Build Title" msgstr "" -#: build/models.py:60 +#: build/models.py:76 msgid "Brief description of the build" msgstr "" -#: build/models.py:68 build/templates/build/build_base.html:86 +#: build/models.py:84 build/templates/build/build_base.html:86 msgid "Parent Build" msgstr "" -#: build/models.py:69 +#: build/models.py:85 msgid "Parent build to which this build is allocated" msgstr "" -#: build/models.py:74 build/templates/build/allocate.html:320 +#: build/models.py:90 build/templates/build/allocate.html:320 #: build/templates/build/auto_allocate.html:18 #: build/templates/build/build_base.html:70 -#: build/templates/build/detail.html:22 order/models.py:464 +#: 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 +#: order/templates/order/receive_parts.html:19 part/models.py:240 #: part/templates/part/part_app_base.html:7 #: part/templates/part/set_category.html:13 templates/js/bom.html:135 #: templates/js/build.html:41 templates/js/company.html:109 -#: templates/js/part.html:111 templates/js/stock.html:206 +#: templates/js/part.html:120 templates/js/stock.html:422 msgid "Part" msgstr "" -#: build/models.py:83 +#: build/models.py:99 msgid "Select part to build" msgstr "" -#: build/models.py:88 +#: build/models.py:104 msgid "Sales Order Reference" msgstr "" -#: build/models.py:92 +#: build/models.py:108 msgid "SalesOrder to which this build is allocated" msgstr "" -#: build/models.py:97 +#: build/models.py:113 msgid "Source Location" msgstr "" -#: build/models.py:101 +#: build/models.py:117 msgid "" "Select location to take stock from for this build (leave blank to take from " "any stock location)" msgstr "" -#: build/models.py:105 +#: build/models.py:121 msgid "Build Quantity" msgstr "" -#: build/models.py:108 +#: build/models.py:124 msgid "Number of parts to build" msgstr "" -#: build/models.py:112 part/templates/part/part_base.html:138 +#: build/models.py:128 part/templates/part/part_base.html:141 msgid "Build Status" msgstr "" -#: build/models.py:116 +#: build/models.py:132 msgid "Build status code" msgstr "" -#: build/models.py:120 stock/models.py:377 +#: build/models.py:136 stock/models.py:374 msgid "Batch Code" msgstr "" -#: build/models.py:124 +#: build/models.py:140 msgid "Batch code for this build output" msgstr "" -#: build/models.py:139 build/templates/build/detail.html:55 +#: 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:67 part/templates/part/part_base.html:85 -#: stock/models.py:371 stock/templates/stock/item_base.html:189 +#: part/templates/part/detail.html:74 part/templates/part/part_base.html:88 +#: stock/models.py:368 stock/templates/stock/item_base.html:221 msgid "External Link" msgstr "" -#: build/models.py:140 stock/models.py:373 +#: build/models.py:156 stock/models.py:370 msgid "Link to external URL" msgstr "" -#: build/models.py:144 build/templates/build/tabs.html:14 company/models.py:302 -#: company/templates/company/tabs.html:26 order/templates/order/po_tabs.html:15 +#: build/models.py:160 build/templates/build/tabs.html:14 company/models.py:302 +#: company/templates/company/tabs.html:33 order/templates/order/po_tabs.html:15 #: order/templates/order/purchase_order_detail.html:200 -#: order/templates/order/so_tabs.html:23 part/templates/part/tabs.html:63 -#: stock/models.py:439 stock/templates/stock/tabs.html:17 -#: templates/js/bom.html:229 templates/js/stock.html:290 +#: order/templates/order/so_tabs.html:23 part/templates/part/tabs.html:73 +#: stock/models.py:436 stock/models.py:1265 stock/templates/stock/tabs.html:26 +#: templates/js/bom.html:229 templates/js/stock.html:113 +#: templates/js/stock.html:506 msgid "Notes" msgstr "" -#: build/models.py:145 +#: build/models.py:161 msgid "Extra build notes" msgstr "" -#: build/models.py:451 +#: build/models.py:467 #, python-brace-format msgid "Selected stock item not found in BOM for part '{p}'" msgstr "" -#: build/models.py:454 +#: build/models.py:470 #, python-brace-format msgid "Allocated quantity ({n}) must not exceed available quantity ({q})" msgstr "" -#: build/models.py:460 order/models.py:548 +#: build/models.py:476 order/models.py:585 msgid "StockItem is over-allocated" msgstr "" -#: build/models.py:463 order/models.py:551 +#: build/models.py:479 order/models.py:588 msgid "Allocation quantity must be greater than zero" msgstr "" -#: build/models.py:466 +#: build/models.py:482 msgid "Quantity must be 1 for serialized stock" msgstr "" -#: build/models.py:496 +#: build/models.py:512 msgid "Build to allocate parts" msgstr "" -#: build/models.py:503 +#: build/models.py:519 msgid "Stock Item to allocate to build" msgstr "" -#: build/models.py:516 +#: build/models.py:532 msgid "Stock quantity to allocate to build" msgstr "" #: build/templates/build/allocate.html:17 -#: company/templates/company/detail_part.html:18 order/views.py:763 +#: company/templates/company/detail_part.html:18 order/views.py:779 msgid "Order Parts" msgstr "" @@ -360,8 +397,8 @@ 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:365 -#: stock/templates/stock/item_base.html:148 +#: order/templates/order/sales_order_detail.html:150 stock/models.py:362 +#: stock/templates/stock/item_base.html:180 msgid "Serial Number" msgstr "" @@ -376,18 +413,18 @@ msgstr "" #: 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:20 #: stock/templates/stock/item_base.html:26 -#: stock/templates/stock/item_base.html:154 +#: stock/templates/stock/item_base.html:32 +#: stock/templates/stock/item_base.html:186 #: stock/templates/stock/stock_adjust.html:18 templates/js/bom.html:172 -#: templates/js/build.html:52 templates/js/stock.html:437 +#: templates/js/build.html:52 templates/js/stock.html:653 msgid "Quantity" msgstr "" #: build/templates/build/allocate.html:177 #: build/templates/build/auto_allocate.html:20 -#: stock/templates/stock/item_base.html:134 -#: stock/templates/stock/stock_adjust.html:17 templates/js/stock.html:277 +#: stock/templates/stock/item_base.html:162 +#: stock/templates/stock/stock_adjust.html:17 templates/js/stock.html:493 msgid "Location" msgstr "" @@ -409,11 +446,11 @@ msgstr "" #: 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:38 part/templates/part/set_category.html:14 +#: 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:167 templates/js/stock.html:227 -#: templates/js/stock.html:418 +#: templates/js/part.html:176 templates/js/part.html:355 +#: templates/js/stock.html:443 templates/js/stock.html:634 msgid "Description" msgstr "" @@ -423,7 +460,8 @@ msgstr "" msgid "Reference" msgstr "" -#: build/templates/build/allocate.html:338 +#: build/templates/build/allocate.html:338 part/models.py:1260 +#: templates/js/part.html:359 templates/js/table_filters.html:63 msgid "Required" msgstr "" @@ -466,7 +504,7 @@ 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:168 templates/js/build.html:33 +#: stock/templates/stock/item_base.html:200 templates/js/build.html:33 #: templates/navbar.html:12 msgid "Build" msgstr "" @@ -486,19 +524,19 @@ 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:221 templates/js/build.html:57 +#: stock/templates/stock/item_base.html:253 templates/js/build.html:57 #: templates/js/order.html:162 templates/js/order.html:235 -#: templates/js/stock.html:264 +#: templates/js/stock.html:480 msgid "Status" msgstr "" -#: build/templates/build/build_base.html:93 order/models.py:462 +#: build/templates/build/build_base.html:93 order/models.py:499 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:33 #: 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:122 templates/js/order.html:209 +#: stock/templates/stock/item_base.html:150 templates/js/order.html:209 msgid "Sales Order" msgstr "" @@ -565,7 +603,7 @@ msgid "Stock can be taken from any available location." msgstr "" #: build/templates/build/detail.html:48 -#: stock/templates/stock/item_base.html:161 templates/js/stock.html:272 +#: stock/templates/stock/item_base.html:193 templates/js/stock.html:488 msgid "Batch" msgstr "" @@ -593,7 +631,7 @@ msgstr "" #: build/templates/build/index.html:6 build/templates/build/index.html:14 #: order/templates/order/so_builds.html:11 order/templates/order/so_tabs.html:9 -#: part/templates/part/tabs.html:28 +#: part/templates/part/tabs.html:30 msgid "Build Orders" msgstr "" @@ -608,14 +646,14 @@ msgstr "" #: build/templates/build/notes.html:20 company/templates/company/notes.html:17 #: order/templates/order/order_notes.html:21 #: order/templates/order/sales_order_notes.html:26 -#: part/templates/part/notes.html:20 stock/templates/stock/item_notes.html:21 +#: part/templates/part/notes.html:20 stock/templates/stock/item_notes.html:22 msgid "Save" msgstr "" #: build/templates/build/notes.html:33 company/templates/company/notes.html:30 #: order/templates/order/order_notes.html:32 #: order/templates/order/sales_order_notes.html:37 -#: part/templates/part/notes.html:32 stock/templates/stock/item_notes.html:32 +#: part/templates/part/notes.html:32 stock/templates/stock/item_notes.html:33 msgid "Edit notes" msgstr "" @@ -660,7 +698,7 @@ msgstr "" msgid "Check the confirmation box at the bottom of the list" msgstr "" -#: build/views.py:148 build/views.py:446 +#: build/views.py:148 build/views.py:456 msgid "Unallocate Stock" msgstr "" @@ -668,7 +706,7 @@ msgstr "" msgid "Confirm unallocation of build stock" msgstr "" -#: build/views.py:162 +#: build/views.py:162 stock/views.py:286 msgid "Check the confirmation box" msgstr "" @@ -676,56 +714,64 @@ msgstr "" msgid "Complete Build" msgstr "" -#: build/views.py:258 +#: build/views.py:201 stock/views.py:1118 stock/views.py:1232 +msgid "Next available serial number is" +msgstr "" + +#: build/views.py:203 +msgid "Next available serial numbers are" +msgstr "" + +#: build/views.py:268 msgid "Confirm completion of build" msgstr "" -#: build/views.py:265 +#: build/views.py:275 msgid "Invalid location selected" msgstr "" -#: build/views.py:290 stock/views.py:917 +#: build/views.py:300 stock/views.py:1268 #, python-brace-format msgid "The following serial numbers already exist: ({sn})" msgstr "" -#: build/views.py:311 +#: build/views.py:321 msgid "Build marked as COMPLETE" msgstr "" -#: build/views.py:387 +#: build/views.py:397 msgid "Start new Build" msgstr "" -#: build/views.py:412 +#: build/views.py:422 msgid "Created new build" msgstr "" -#: build/views.py:422 +#: build/views.py:432 msgid "Edit Build Details" msgstr "" -#: build/views.py:427 +#: build/views.py:437 msgid "Edited build" msgstr "" -#: build/views.py:436 +#: build/views.py:446 msgid "Delete Build" msgstr "" -#: build/views.py:451 +#: build/views.py:461 msgid "Removed parts from build allocation" msgstr "" -#: build/views.py:461 +#: build/views.py:471 msgid "Allocate new Part" msgstr "" -#: build/views.py:614 +#: build/views.py:624 msgid "Edit Stock Allocation" msgstr "" -#: build/views.py:618 +#: build/views.py:628 msgid "Updated Build Item" msgstr "" @@ -857,6 +903,11 @@ msgstr "" msgid "Part packaging" msgstr "" +#: company/templates/company/assigned_stock.html:9 +#: company/templates/company/tabs.html:25 +msgid "Assigned Stock" +msgstr "" + #: company/templates/company/company_base.html:7 #: company/templates/company/company_base.html:22 templates/js/company.html:38 msgid "Company" @@ -896,17 +947,18 @@ 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:111 +#: company/templates/company/supplier_part_detail.html:21 order/models.py:148 #: order/templates/order/order_base.html:74 #: order/templates/order/order_wizard/select_pos.html:30 -#: stock/templates/stock/item_base.html:196 templates/js/company.html:52 +#: stock/templates/stock/item_base.html:228 templates/js/company.html:52 #: templates/js/company.html:134 templates/js/order.html:144 msgid "Supplier" msgstr "" -#: company/templates/company/detail.html:26 order/models.py:277 -#: order/templates/order/sales_order_base.html:73 templates/js/company.html:44 -#: templates/js/order.html:217 +#: company/templates/company/detail.html:26 order/models.py:314 +#: order/templates/order/sales_order_base.html:73 stock/models.py:357 +#: stock/models.py:358 stock/templates/stock/item_base.html:137 +#: templates/js/company.html:44 templates/js/order.html:217 msgid "Customer" msgstr "" @@ -961,7 +1013,7 @@ msgid "Supplier Stock" msgstr "" #: company/templates/company/detail_stock.html:34 -#: company/templates/company/supplier_part_stock.html:38 +#: company/templates/company/supplier_part_stock.html:33 #: part/templates/part/stock.html:54 templates/stock_table.html:5 msgid "Export" msgstr "" @@ -983,7 +1035,7 @@ msgstr "" #: company/templates/company/tabs.html:17 #: 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:43 +#: part/templates/part/orders.html:9 part/templates/part/tabs.html:45 #: templates/navbar.html:18 msgid "Purchase Orders" msgstr "" @@ -1002,7 +1054,7 @@ msgstr "" #: company/templates/company/tabs.html:22 #: 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:48 +#: part/templates/part/sales_orders.html:9 part/templates/part/tabs.html:50 #: templates/navbar.html:25 msgid "Sales Orders" msgstr "" @@ -1018,8 +1070,8 @@ msgid "New Sales Order" msgstr "" #: company/templates/company/supplier_part_base.html:6 -#: company/templates/company/supplier_part_base.html:19 stock/models.py:344 -#: stock/templates/stock/item_base.html:201 templates/js/company.html:150 +#: company/templates/company/supplier_part_base.html:19 stock/models.py:331 +#: stock/templates/stock/item_base.html:233 templates/js/company.html:150 msgid "Supplier Part" msgstr "" @@ -1099,14 +1151,14 @@ msgstr "" msgid "Supplier Part Stock" msgstr "" -#: company/templates/company/supplier_part_stock.html:61 +#: 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:91 msgid "New Location" msgstr "" -#: company/templates/company/supplier_part_stock.html:62 +#: company/templates/company/supplier_part_stock.html:57 #: part/templates/part/stock.html:92 msgid "Create New Location" msgstr "" @@ -1116,9 +1168,9 @@ msgid "Pricing" msgstr "" #: company/templates/company/supplier_part_tabs.html:8 -#: company/templates/company/tabs.html:12 part/templates/part/tabs.html:17 -#: stock/templates/stock/location.html:12 templates/js/part.html:194 -#: templates/js/stock.html:235 templates/navbar.html:11 +#: 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:451 templates/navbar.html:11 msgid "Stock" msgstr "" @@ -1127,13 +1179,13 @@ msgid "Orders" msgstr "" #: company/templates/company/tabs.html:9 -#: order/templates/order/receive_parts.html:14 +#: order/templates/order/receive_parts.html:14 part/models.py:241 #: part/templates/part/category.html:83 templates/navbar.html:10 #: templates/stats.html:8 templates/stats.html:17 msgid "Parts" msgstr "" -#: company/views.py:50 part/templates/part/tabs.html:37 +#: company/views.py:50 part/templates/part/tabs.html:39 #: templates/navbar.html:16 msgid "Suppliers" msgstr "" @@ -1239,99 +1291,108 @@ msgstr "" msgid "Receive parts to this location" msgstr "" -#: order/models.py:71 +#: order/forms.py:99 +msgid "Enter purchase order number" +msgstr "" + +#: order/forms.py:126 +msgid "Enter sales order number" +msgstr "" + +#: order/models.py:108 msgid "Order reference" msgstr "" -#: order/models.py:73 +#: order/models.py:110 msgid "Order description" msgstr "" -#: order/models.py:75 +#: order/models.py:112 msgid "Link to external page" msgstr "" -#: order/models.py:85 +#: order/models.py:122 msgid "Order notes" msgstr "" -#: order/models.py:114 +#: order/models.py:151 msgid "Supplier order reference code" msgstr "" -#: order/models.py:148 order/models.py:222 part/views.py:1113 -#: stock/models.py:607 +#: order/models.py:185 order/models.py:259 part/views.py:1167 +#: stock/models.py:243 stock/models.py:665 stock/views.py:1243 msgid "Quantity must be greater than zero" msgstr "" -#: order/models.py:153 +#: order/models.py:190 msgid "Part supplier must match PO supplier" msgstr "" -#: order/models.py:217 +#: order/models.py:254 msgid "Lines can only be received against an order marked as 'Placed'" msgstr "" -#: order/models.py:283 +#: order/models.py:320 msgid "Customer order reference code" msgstr "" -#: order/models.py:322 +#: order/models.py:359 msgid "SalesOrder cannot be shipped as it is not currently pending" msgstr "" -#: order/models.py:399 +#: order/models.py:436 msgid "Item quantity" msgstr "" -#: order/models.py:401 +#: order/models.py:438 msgid "Line item reference" msgstr "" -#: order/models.py:403 +#: order/models.py:440 msgid "Line item notes" msgstr "" -#: order/models.py:429 order/templates/order/order_base.html:9 +#: order/models.py:466 order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:23 -#: stock/templates/stock/item_base.html:175 templates/js/order.html:136 +#: stock/templates/stock/item_base.html:207 templates/js/order.html:136 msgid "Purchase Order" msgstr "" -#: order/models.py:442 +#: order/models.py:479 msgid "Supplier part" msgstr "" -#: order/models.py:445 +#: order/models.py:482 msgid "Number of items received" msgstr "" -#: order/models.py:539 +#: order/models.py:576 msgid "Cannot allocate stock item to a line with a different part" msgstr "" -#: order/models.py:541 +#: order/models.py:578 msgid "Cannot allocate stock to a line without a part" msgstr "" -#: order/models.py:544 +#: order/models.py:581 msgid "Allocation quantity cannot exceed stock quantity" msgstr "" -#: order/models.py:554 +#: order/models.py:591 msgid "Quantity must be 1 for serialized stock item" msgstr "" -#: order/models.py:571 +#: order/models.py:608 msgid "Select stock item to allocate" msgstr "" -#: order/models.py:574 +#: order/models.py:611 msgid "Enter stock allocation quantity" msgstr "" #: order/templates/order/delete_attachment.html:5 -#: part/templates/part/attachment_delete.html:5 +#: stock/templates/stock/attachment_delete.html:5 +#: templates/attachment_delete.html:5 msgid "Are you sure you want to delete this attachment?" msgstr "" @@ -1422,44 +1483,14 @@ msgstr "" msgid "Purchase Order Attachments" msgstr "" -#: order/templates/order/po_attachments.html:17 -#: order/templates/order/so_attachments.html:17 -#: part/templates/part/attachments.html:14 -msgid "Add Attachment" -msgstr "" - -#: order/templates/order/po_attachments.html:24 -#: order/templates/order/so_attachments.html:24 -#: part/templates/part/attachments.html:22 -msgid "File" -msgstr "" - -#: order/templates/order/po_attachments.html:25 -#: order/templates/order/so_attachments.html:25 -#: part/templates/part/attachments.html:23 -msgid "Comment" -msgstr "" - -#: order/templates/order/po_attachments.html:36 -#: order/templates/order/so_attachments.html:36 -#: part/templates/part/attachments.html:34 part/views.py:118 -msgid "Edit attachment" -msgstr "" - -#: order/templates/order/po_attachments.html:39 -#: order/templates/order/so_attachments.html:39 -#: part/templates/part/attachments.html:37 -msgid "Delete attachment" -msgstr "" - #: order/templates/order/po_tabs.html:8 order/templates/order/so_tabs.html:16 -#: part/templates/part/tabs.html:60 +#: part/templates/part/tabs.html:70 stock/templates/stock/tabs.html:32 msgid "Attachments" msgstr "" #: order/templates/order/purchase_order_detail.html:16 -#: order/templates/order/sales_order_detail.html:17 order/views.py:1071 -#: order/views.py:1185 +#: order/templates/order/sales_order_detail.html:17 order/views.py:1087 +#: order/views.py:1201 msgid "Add Line Item" msgstr "" @@ -1508,7 +1539,7 @@ msgid "Select parts to receive against this order" msgstr "" #: order/templates/order/receive_parts.html:21 -#: part/templates/part/part_base.html:128 templates/js/part.html:210 +#: part/templates/part/part_base.html:131 templates/js/part.html:219 msgid "On Order" msgstr "" @@ -1538,6 +1569,7 @@ msgstr "" #: order/templates/order/sales_order_cancel.html:8 #: order/templates/order/sales_order_ship.html:9 +#: stock/templates/stock/stockitem_convert.html:13 msgid "Warning" msgstr "" @@ -1599,143 +1631,143 @@ msgstr "" msgid "Add Purchase Order Attachment" msgstr "" -#: order/views.py:98 order/views.py:138 part/views.py:79 +#: order/views.py:102 order/views.py:149 part/views.py:85 stock/views.py:166 msgid "Added attachment" msgstr "" -#: order/views.py:134 +#: order/views.py:141 msgid "Add Sales Order Attachment" msgstr "" -#: order/views.py:162 order/views.py:183 +#: order/views.py:176 order/views.py:197 msgid "Edit Attachment" msgstr "" -#: order/views.py:166 order/views.py:187 +#: order/views.py:180 order/views.py:201 msgid "Attachment updated" msgstr "" -#: order/views.py:202 order/views.py:216 +#: order/views.py:216 order/views.py:230 msgid "Delete Attachment" msgstr "" -#: order/views.py:208 order/views.py:222 +#: order/views.py:222 order/views.py:236 stock/views.py:222 msgid "Deleted attachment" msgstr "" -#: order/views.py:273 +#: order/views.py:287 msgid "Create Purchase Order" msgstr "" -#: order/views.py:303 +#: order/views.py:318 msgid "Create Sales Order" msgstr "" -#: order/views.py:332 +#: order/views.py:348 msgid "Edit Purchase Order" msgstr "" -#: order/views.py:352 +#: order/views.py:368 msgid "Edit Sales Order" msgstr "" -#: order/views.py:368 +#: order/views.py:384 msgid "Cancel Order" msgstr "" -#: order/views.py:383 order/views.py:415 +#: order/views.py:399 order/views.py:431 msgid "Confirm order cancellation" msgstr "" -#: order/views.py:401 +#: order/views.py:417 msgid "Cancel sales order" msgstr "" -#: order/views.py:421 +#: order/views.py:437 msgid "Could not cancel order" msgstr "" -#: order/views.py:435 +#: order/views.py:451 msgid "Issue Order" msgstr "" -#: order/views.py:450 +#: order/views.py:466 msgid "Confirm order placement" msgstr "" -#: order/views.py:471 +#: order/views.py:487 msgid "Complete Order" msgstr "" -#: order/views.py:506 +#: order/views.py:522 msgid "Ship Order" msgstr "" -#: order/views.py:522 +#: order/views.py:538 msgid "Confirm order shipment" msgstr "" -#: order/views.py:528 +#: order/views.py:544 msgid "Could not ship order" msgstr "" -#: order/views.py:579 +#: order/views.py:595 msgid "Receive Parts" msgstr "" -#: order/views.py:646 +#: order/views.py:662 msgid "Items received" msgstr "" -#: order/views.py:660 +#: order/views.py:676 msgid "No destination set" msgstr "" -#: order/views.py:705 +#: order/views.py:721 msgid "Error converting quantity to number" msgstr "" -#: order/views.py:711 +#: order/views.py:727 msgid "Receive quantity less than zero" msgstr "" -#: order/views.py:717 +#: order/views.py:733 msgid "No lines specified" msgstr "" -#: order/views.py:1091 +#: order/views.py:1107 msgid "Invalid Purchase Order" msgstr "" -#: order/views.py:1099 +#: order/views.py:1115 msgid "Supplier must match for Part and Order" msgstr "" -#: order/views.py:1104 +#: order/views.py:1120 msgid "Invalid SupplierPart selection" msgstr "" -#: order/views.py:1236 order/views.py:1254 +#: order/views.py:1252 order/views.py:1270 msgid "Edit Line Item" msgstr "" -#: order/views.py:1270 order/views.py:1282 +#: order/views.py:1286 order/views.py:1298 msgid "Delete Line Item" msgstr "" -#: order/views.py:1275 order/views.py:1287 +#: order/views.py:1291 order/views.py:1303 msgid "Deleted line item" msgstr "" -#: order/views.py:1296 +#: order/views.py:1312 msgid "Allocate Stock to Order" msgstr "" -#: order/views.py:1365 +#: order/views.py:1381 msgid "Edit Allocation Quantity" msgstr "" -#: order/views.py:1380 +#: order/views.py:1396 msgid "Remove allocation" msgstr "" @@ -1752,215 +1784,255 @@ msgstr "" msgid "Error reading BOM file (incorrect row size)" msgstr "" -#: part/forms.py:37 stock/forms.py:91 +#: part/forms.py:55 stock/forms.py:200 msgid "File Format" msgstr "" -#: part/forms.py:37 stock/forms.py:91 +#: part/forms.py:55 stock/forms.py:200 msgid "Select output file format" msgstr "" -#: part/forms.py:39 +#: part/forms.py:57 msgid "Cascading" msgstr "" -#: part/forms.py:39 +#: part/forms.py:57 msgid "Download cascading / multi-level BOM" msgstr "" -#: part/forms.py:58 +#: part/forms.py:76 msgid "Confirm that the BOM is correct" msgstr "" -#: part/forms.py:70 +#: part/forms.py:88 msgid "Select BOM file to upload" msgstr "" -#: part/forms.py:94 +#: part/forms.py:112 msgid "Select part category" msgstr "" -#: part/forms.py:102 +#: part/forms.py:126 msgid "Perform 'deep copy' which will duplicate all BOM data for this part" msgstr "" -#: part/forms.py:107 +#: part/forms.py:131 msgid "Confirm part creation" msgstr "" -#: part/forms.py:193 +#: part/forms.py:221 msgid "Input quantity for price calculation" msgstr "" -#: part/forms.py:196 +#: part/forms.py:224 msgid "Select currency for price calculation" msgstr "" -#: part/models.py:64 +#: part/models.py:65 msgid "Default location for parts in this category" msgstr "" -#: part/models.py:67 +#: part/models.py:68 msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:341 +#: part/models.py:427 msgid "Part must be unique for name, IPN and revision" msgstr "" -#: part/models.py:355 -msgid "Part cannot be a template part if it is a variant of another part" -msgstr "" - -#: part/models.py:356 -msgid "Part cannot be a variant of another part if it is already a template" -msgstr "" - -#: part/models.py:360 part/templates/part/detail.html:19 +#: part/models.py:442 part/templates/part/detail.html:19 msgid "Part name" msgstr "" -#: part/models.py:364 +#: part/models.py:446 msgid "Is this part a template part?" msgstr "" -#: part/models.py:373 +#: part/models.py:455 msgid "Is this part a variant of another part?" msgstr "" -#: part/models.py:375 +#: part/models.py:457 msgid "Part description" msgstr "" -#: part/models.py:377 +#: part/models.py:459 msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:382 +#: part/models.py:464 msgid "Part category" msgstr "" -#: part/models.py:384 +#: part/models.py:466 msgid "Internal Part Number" msgstr "" -#: part/models.py:386 +#: part/models.py:468 msgid "Part revision or version number" msgstr "" -#: part/models.py:388 +#: part/models.py:470 msgid "Link to extenal URL" msgstr "" -#: part/models.py:400 +#: part/models.py:482 msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:444 +#: part/models.py:526 msgid "Default supplier part" msgstr "" -#: part/models.py:447 +#: part/models.py:529 msgid "Minimum allowed stock level" msgstr "" -#: part/models.py:449 +#: part/models.py:531 msgid "Stock keeping units for this part" msgstr "" -#: part/models.py:451 +#: part/models.py:533 msgid "Can this part be built from other parts?" msgstr "" -#: part/models.py:453 +#: part/models.py:535 msgid "Can this part be used to build other parts?" msgstr "" -#: part/models.py:455 +#: part/models.py:537 msgid "Does this part have tracking for unique items?" msgstr "" -#: part/models.py:457 +#: part/models.py:539 msgid "Can this part be purchased from external suppliers?" msgstr "" -#: part/models.py:459 +#: part/models.py:541 msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:461 +#: part/models.py:543 msgid "Is this part active?" msgstr "" -#: part/models.py:463 +#: part/models.py:545 msgid "Is this a virtual part, such as a software product or license?" msgstr "" -#: part/models.py:465 +#: part/models.py:547 msgid "Part notes - supports Markdown formatting" msgstr "" -#: part/models.py:467 +#: part/models.py:549 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:1069 +#: part/models.py:1212 +msgid "Test templates can only be created for trackable parts" +msgstr "" + +#: part/models.py:1229 +msgid "Test with this name already exists for this part" +msgstr "" + +#: part/models.py:1248 templates/js/part.html:350 templates/js/stock.html:89 +msgid "Test Name" +msgstr "" + +#: part/models.py:1249 +msgid "Enter a name for the test" +msgstr "" + +#: part/models.py:1254 +msgid "Test Description" +msgstr "" + +#: part/models.py:1255 +msgid "Enter description for this test" +msgstr "" + +#: part/models.py:1261 +msgid "Is this test required to pass?" +msgstr "" + +#: part/models.py:1266 templates/js/part.html:367 +msgid "Requires Value" +msgstr "" + +#: part/models.py:1267 +msgid "Does this test require a value when adding a test result?" +msgstr "" + +#: part/models.py:1272 templates/js/part.html:374 +msgid "Requires Attachment" +msgstr "" + +#: part/models.py:1273 +msgid "Does this test require a file attachment when adding a test result?" +msgstr "" + +#: part/models.py:1306 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:1074 +#: part/models.py:1311 msgid "Parameter Name" msgstr "" -#: part/models.py:1076 +#: part/models.py:1313 msgid "Parameter Units" msgstr "" -#: part/models.py:1102 +#: part/models.py:1339 msgid "Parent Part" msgstr "" -#: part/models.py:1104 +#: part/models.py:1341 msgid "Parameter Template" msgstr "" -#: part/models.py:1106 +#: part/models.py:1343 msgid "Parameter Value" msgstr "" -#: part/models.py:1130 +#: part/models.py:1372 msgid "Select parent part" msgstr "" -#: part/models.py:1139 +#: part/models.py:1380 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:1146 +#: part/models.py:1386 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:1149 +#: part/models.py:1389 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:1152 +#: part/models.py:1392 msgid "BOM item reference" msgstr "" -#: part/models.py:1155 +#: part/models.py:1395 msgid "BOM item notes" msgstr "" -#: part/models.py:1157 +#: part/models.py:1397 msgid "BOM line checksum" msgstr "" -#: part/models.py:1220 +#: part/models.py:1461 stock/models.py:233 +msgid "Quantity must be integer value for trackable parts" +msgstr "" + +#: part/models.py:1470 msgid "Part cannot be added to its own Bill of Materials" msgstr "" -#: part/models.py:1227 +#: part/models.py:1477 #, python-brace-format msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)" msgstr "" @@ -1979,15 +2051,15 @@ msgstr "" #: part/templates/part/allocation.html:28 #: part/templates/part/allocation.html:45 #: stock/templates/stock/item_base.html:8 -#: stock/templates/stock/item_base.html:52 -#: stock/templates/stock/item_base.html:183 +#: stock/templates/stock/item_base.html:58 +#: stock/templates/stock/item_base.html:215 #: stock/templates/stock/stock_adjust.html:16 templates/js/build.html:106 -#: templates/js/stock.html:407 +#: templates/js/stock.html:623 msgid "Stock Item" msgstr "" #: part/templates/part/allocation.html:20 -#: stock/templates/stock/item_base.html:128 +#: stock/templates/stock/item_base.html:156 msgid "Build Order" msgstr "" @@ -2023,7 +2095,7 @@ msgstr "" msgid "Validate Bill of Materials" msgstr "" -#: part/templates/part/bom.html:46 part/views.py:1358 +#: part/templates/part/bom.html:46 part/views.py:1412 msgid "Export Bill of Materials" msgstr "" @@ -2048,11 +2120,11 @@ msgstr "" msgid "Category Description" msgstr "" -#: part/templates/part/category.html:50 part/templates/part/detail.html:74 +#: 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:51 +#: part/templates/part/category.html:57 part/templates/part/detail.html:58 msgid "Keywords" msgstr "" @@ -2068,7 +2140,7 @@ msgstr "" msgid "Part Details" msgstr "" -#: part/templates/part/detail.html:25 part/templates/part/part_base.html:78 +#: part/templates/part/detail.html:25 part/templates/part/part_base.html:81 msgid "IPN" msgstr "" @@ -2076,107 +2148,136 @@ msgstr "" msgid "Revision" msgstr "" -#: part/templates/part/detail.html:44 +#: part/templates/part/detail.html:39 +msgid "Next Serial Number" +msgstr "" + +#: part/templates/part/detail.html:51 msgid "Variant Of" msgstr "" -#: part/templates/part/detail.html:57 part/templates/part/set_category.html:15 -#: templates/js/part.html:181 +#: part/templates/part/detail.html:64 part/templates/part/set_category.html:15 +#: templates/js/part.html:190 msgid "Category" msgstr "" -#: part/templates/part/detail.html:81 +#: part/templates/part/detail.html:88 msgid "Default Supplier" msgstr "" -#: part/templates/part/detail.html:89 part/templates/part/params.html:22 +#: part/templates/part/detail.html:96 part/templates/part/params.html:22 msgid "Units" msgstr "" -#: part/templates/part/detail.html:95 +#: part/templates/part/detail.html:102 msgid "Minimum Stock" msgstr "" -#: part/templates/part/detail.html:101 templates/js/order.html:243 +#: part/templates/part/detail.html:108 templates/js/order.html:243 msgid "Creation Date" msgstr "" -#: part/templates/part/detail.html:107 +#: part/templates/part/detail.html:114 msgid "Created By" msgstr "" -#: part/templates/part/detail.html:114 +#: part/templates/part/detail.html:121 msgid "Responsible User" msgstr "" -#: part/templates/part/detail.html:123 +#: part/templates/part/detail.html:130 msgid "Virtual" msgstr "" -#: part/templates/part/detail.html:126 +#: part/templates/part/detail.html:133 msgid "Part is virtual (not a physical part)" msgstr "" -#: part/templates/part/detail.html:128 +#: part/templates/part/detail.html:135 msgid "Part is not a virtual part" msgstr "" -#: part/templates/part/detail.html:132 templates/table_filters.html:99 -msgid "Assembly" +#: part/templates/part/detail.html:139 stock/forms.py:194 +#: templates/js/table_filters.html:122 +msgid "Template" msgstr "" -#: part/templates/part/detail.html:135 -msgid "Part can be assembled from other parts" -msgstr "" - -#: part/templates/part/detail.html:137 -msgid "Part cannot be assembled from other parts" -msgstr "" - -#: part/templates/part/detail.html:141 templates/table_filters.html:103 -msgid "Component" +#: part/templates/part/detail.html:142 +msgid "Part is a template part (variants can be made from this part)" msgstr "" #: part/templates/part/detail.html:144 -msgid "Part can be used in assemblies" +msgid "Part is not a template part" msgstr "" -#: part/templates/part/detail.html:146 -msgid "Part cannot be used in assemblies" +#: part/templates/part/detail.html:148 templates/js/table_filters.html:134 +msgid "Assembly" msgstr "" -#: part/templates/part/detail.html:150 -msgid "Trackable" +#: part/templates/part/detail.html:151 +msgid "Part can be assembled from other parts" msgstr "" #: part/templates/part/detail.html:153 +msgid "Part cannot be assembled from other parts" +msgstr "" + +#: part/templates/part/detail.html:157 templates/js/table_filters.html:138 +msgid "Component" +msgstr "" + +#: part/templates/part/detail.html:160 +msgid "Part can be used in assemblies" +msgstr "" + +#: part/templates/part/detail.html:162 +msgid "Part cannot be used in assemblies" +msgstr "" + +#: part/templates/part/detail.html:166 templates/js/table_filters.html:150 +msgid "Trackable" +msgstr "" + +#: part/templates/part/detail.html:169 msgid "Part stock is tracked by serial number" msgstr "" -#: part/templates/part/detail.html:155 +#: part/templates/part/detail.html:171 msgid "Part stock is not tracked by serial number" msgstr "" -#: part/templates/part/detail.html:159 +#: part/templates/part/detail.html:175 msgid "Purchaseable" msgstr "" -#: part/templates/part/detail.html:162 part/templates/part/detail.html:164 +#: part/templates/part/detail.html:178 part/templates/part/detail.html:180 msgid "Part can be purchased from external suppliers" msgstr "" -#: part/templates/part/detail.html:168 templates/table_filters.html:111 +#: part/templates/part/detail.html:184 templates/js/table_filters.html:146 msgid "Salable" msgstr "" -#: part/templates/part/detail.html:171 +#: part/templates/part/detail.html:187 msgid "Part can be sold to customers" msgstr "" -#: part/templates/part/detail.html:173 +#: part/templates/part/detail.html:189 msgid "Part cannot be sold to customers" msgstr "" +#: part/templates/part/detail.html:193 templates/js/table_filters.html:117 +msgid "Active" +msgstr "" + +#: part/templates/part/detail.html:196 +msgid "Part is active" +msgstr "" + +#: part/templates/part/detail.html:198 +msgid "Part is not active" +msgstr "" + #: part/templates/part/notes.html:13 part/templates/part/notes.html:29 msgid "Part Notes" msgstr "" @@ -2197,11 +2298,8 @@ msgstr "" msgid "New Parameter" msgstr "" -#: part/templates/part/params.html:20 -msgid "Name" -msgstr "" - -#: part/templates/part/params.html:21 +#: part/templates/part/params.html:21 stock/models.py:1252 +#: templates/js/stock.html:109 msgid "Value" msgstr "" @@ -2222,54 +2320,62 @@ msgid "Part List" msgstr "" #: part/templates/part/part_base.html:11 +msgid "This part is a virtual part" +msgstr "" + +#: part/templates/part/part_base.html:16 msgid "This part is a template part." msgstr "" -#: part/templates/part/part_base.html:13 -msgid "It is not a real part, but real parts can be based on this template." -msgstr "" - -#: part/templates/part/part_base.html:18 +#: part/templates/part/part_base.html:21 msgid "This part is a variant of" msgstr "" -#: part/templates/part/part_base.html:30 templates/js/company.html:125 -#: templates/js/part.html:158 +#: part/templates/part/part_base.html:33 templates/js/company.html:125 +#: templates/js/part.html:167 msgid "Inactive" msgstr "" -#: part/templates/part/part_base.html:38 +#: part/templates/part/part_base.html:41 msgid "Star this part" msgstr "" -#: part/templates/part/part_base.html:44 +#: part/templates/part/part_base.html:47 msgid "Show pricing information" msgstr "" -#: part/templates/part/part_base.html:101 +#: part/templates/part/part_base.html:104 msgid "Available Stock" msgstr "" -#: part/templates/part/part_base.html:107 +#: part/templates/part/part_base.html:110 msgid "In Stock" msgstr "" -#: part/templates/part/part_base.html:114 +#: part/templates/part/part_base.html:117 msgid "Allocated to Build Orders" msgstr "" -#: part/templates/part/part_base.html:121 +#: part/templates/part/part_base.html:124 msgid "Allocated to Sales Orders" msgstr "" -#: part/templates/part/part_base.html:143 +#: part/templates/part/part_base.html:146 msgid "Can Build" msgstr "" -#: part/templates/part/part_base.html:149 +#: part/templates/part/part_base.html:152 msgid "Underway" msgstr "" +#: part/templates/part/part_tests.html:8 +msgid "Part Test Templates" +msgstr "" + +#: part/templates/part/part_tests.html:14 +msgid "Add Test Template" +msgstr "" + #: part/templates/part/part_thumb.html:16 msgid "Select from existing images" msgstr "" @@ -2303,7 +2409,7 @@ msgid "Create New Part" msgstr "" #: part/templates/part/stock_count.html:7 templates/js/bom.html:203 -#: templates/js/part.html:218 +#: templates/js/part.html:227 msgid "No Stock" msgstr "" @@ -2335,18 +2441,22 @@ msgstr "" msgid "Variants" msgstr "" -#: part/templates/part/tabs.html:26 +#: part/templates/part/tabs.html:28 msgid "BOM" msgstr "" -#: part/templates/part/tabs.html:32 +#: part/templates/part/tabs.html:34 msgid "Used In" msgstr "" -#: part/templates/part/tabs.html:53 stock/templates/stock/tabs.html:5 +#: part/templates/part/tabs.html:57 stock/templates/stock/tabs.html:6 msgid "Tracking" msgstr "" +#: part/templates/part/tabs.html:64 stock/templates/stock/item_base.html:259 +msgid "Tests" +msgstr "" + #: part/templates/part/track.html:8 msgid "Part Tracking" msgstr "" @@ -2359,164 +2469,180 @@ msgstr "" msgid "INACTIVE" msgstr "" -#: part/views.py:74 +#: part/views.py:75 msgid "Add part attachment" msgstr "" -#: part/views.py:122 +#: part/views.py:124 templates/attachment_table.html:30 +msgid "Edit attachment" +msgstr "" + +#: part/views.py:128 msgid "Part attachment updated" msgstr "" -#: part/views.py:137 +#: part/views.py:143 msgid "Delete Part Attachment" msgstr "" -#: part/views.py:143 +#: part/views.py:149 msgid "Deleted part attachment" msgstr "" -#: part/views.py:151 -msgid "Set Part Category" +#: part/views.py:158 +msgid "Create Test Template" +msgstr "" + +#: part/views.py:185 +msgid "Edit Test Template" msgstr "" #: part/views.py:199 +msgid "Delete Test Template" +msgstr "" + +#: part/views.py:206 +msgid "Set Part Category" +msgstr "" + +#: part/views.py:254 #, python-brace-format msgid "Set category for {n} parts" msgstr "" -#: part/views.py:234 +#: part/views.py:289 msgid "Create Variant" msgstr "" -#: part/views.py:304 +#: part/views.py:358 msgid "Duplicate Part" msgstr "" -#: part/views.py:309 +#: part/views.py:363 msgid "Copied part" msgstr "" -#: part/views.py:420 +#: part/views.py:474 msgid "Create new part" msgstr "" -#: part/views.py:425 +#: part/views.py:479 msgid "Created new part" msgstr "" -#: part/views.py:599 +#: part/views.py:653 msgid "Part QR Code" msgstr "" -#: part/views.py:616 +#: part/views.py:670 msgid "Upload Part Image" msgstr "" -#: part/views.py:621 part/views.py:656 +#: part/views.py:675 part/views.py:710 msgid "Updated part image" msgstr "" -#: part/views.py:630 +#: part/views.py:684 msgid "Select Part Image" msgstr "" -#: part/views.py:659 +#: part/views.py:713 msgid "Part image not found" msgstr "" -#: part/views.py:670 +#: part/views.py:724 msgid "Edit Part Properties" msgstr "" -#: part/views.py:692 +#: part/views.py:746 msgid "Validate BOM" msgstr "" -#: part/views.py:854 +#: part/views.py:908 msgid "No BOM file provided" msgstr "" -#: part/views.py:1115 +#: part/views.py:1169 msgid "Enter a valid quantity" msgstr "" -#: part/views.py:1139 part/views.py:1142 +#: part/views.py:1193 part/views.py:1196 msgid "Select valid part" msgstr "" -#: part/views.py:1148 +#: part/views.py:1202 msgid "Duplicate part selected" msgstr "" -#: part/views.py:1176 +#: part/views.py:1230 msgid "Select a part" msgstr "" -#: part/views.py:1180 +#: part/views.py:1234 msgid "Specify quantity" msgstr "" -#: part/views.py:1396 +#: part/views.py:1450 msgid "Confirm Part Deletion" msgstr "" -#: part/views.py:1403 +#: part/views.py:1457 msgid "Part was deleted" msgstr "" -#: part/views.py:1412 +#: part/views.py:1466 msgid "Part Pricing" msgstr "" -#: part/views.py:1534 +#: part/views.py:1588 msgid "Create Part Parameter Template" msgstr "" -#: part/views.py:1542 +#: part/views.py:1596 msgid "Edit Part Parameter Template" msgstr "" -#: part/views.py:1549 +#: part/views.py:1603 msgid "Delete Part Parameter Template" msgstr "" -#: part/views.py:1557 +#: part/views.py:1611 msgid "Create Part Parameter" msgstr "" -#: part/views.py:1607 +#: part/views.py:1661 msgid "Edit Part Parameter" msgstr "" -#: part/views.py:1621 +#: part/views.py:1675 msgid "Delete Part Parameter" msgstr "" -#: part/views.py:1637 +#: part/views.py:1691 msgid "Edit Part Category" msgstr "" -#: part/views.py:1672 +#: part/views.py:1726 msgid "Delete Part Category" msgstr "" -#: part/views.py:1678 +#: part/views.py:1732 msgid "Part category was deleted" msgstr "" -#: part/views.py:1686 +#: part/views.py:1740 msgid "Create new part category" msgstr "" -#: part/views.py:1737 +#: part/views.py:1791 msgid "Create BOM item" msgstr "" -#: part/views.py:1803 +#: part/views.py:1857 msgid "Edit BOM item" msgstr "" -#: part/views.py:1851 +#: part/views.py:1905 msgid "Confim BOM item deletion" msgstr "" @@ -2536,228 +2662,354 @@ msgstr "" msgid "No matching data" msgstr "" -#: stock/forms.py:93 +#: report/models.py:167 +msgid "Template name" +msgstr "" + +#: report/models.py:173 +msgid "Report template file" +msgstr "" + +#: report/models.py:177 +msgid "Report template description" +msgstr "" + +#: report/models.py:221 +msgid "Part query filters (comma-separated list of key=value pairs)" +msgstr "" + +#: report/models.py:266 +msgid "Report asset file" +msgstr "" + +#: report/models.py:269 +msgid "Asset file description" +msgstr "" + +#: stock/forms.py:194 +msgid "Select test report template" +msgstr "" + +#: stock/forms.py:202 msgid "Include stock items in sub locations" msgstr "" -#: stock/forms.py:126 +#: stock/forms.py:235 msgid "Destination stock location" msgstr "" -#: stock/forms.py:132 +#: stock/forms.py:241 msgid "Confirm movement of stock items" msgstr "" -#: stock/forms.py:134 +#: stock/forms.py:243 msgid "Set the destination as the default location for selected parts" msgstr "" -#: stock/models.py:217 -#, python-brace-format -msgid "" -"A stock item with this serial number already exists for template part {part}" +#: stock/models.py:208 +msgid "StockItem with this serial number already exists" msgstr "" -#: stock/models.py:222 -msgid "A stock item with this serial number already exists" -msgstr "" - -#: stock/models.py:253 +#: stock/models.py:250 #, python-brace-format msgid "Part type ('{pf}') must be {pe}" msgstr "" -#: stock/models.py:263 stock/models.py:272 +#: stock/models.py:260 stock/models.py:269 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:264 +#: stock/models.py:261 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:280 -msgid "Stock item cannot be created for a template Part" -msgstr "" - -#: stock/models.py:289 +#: stock/models.py:282 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:326 +#: stock/models.py:314 msgid "Parent Stock Item" msgstr "" -#: stock/models.py:334 stock/templates/stock/item_base.html:108 +#: stock/models.py:322 stock/templates/stock/item_base.html:129 msgid "Base Part" msgstr "" -#: stock/models.py:335 +#: stock/models.py:323 msgid "Base part" msgstr "" -#: stock/models.py:345 +#: stock/models.py:332 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:350 stock/templates/stock/stock_app_base.html:7 +#: stock/models.py:337 stock/templates/stock/stock_app_base.html:7 msgid "Stock Location" msgstr "" -#: stock/models.py:353 +#: stock/models.py:340 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:358 +#: stock/models.py:345 msgid "Installed In" msgstr "" -#: stock/models.py:361 +#: stock/models.py:348 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:367 +#: stock/models.py:364 msgid "Serial number for this item" msgstr "" -#: stock/models.py:379 +#: stock/models.py:376 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:383 +#: stock/models.py:380 msgid "Stock Quantity" msgstr "" -#: stock/models.py:392 +#: stock/models.py:389 msgid "Source Build" msgstr "" -#: stock/models.py:394 +#: stock/models.py:391 msgid "Build for this stock item" msgstr "" -#: stock/models.py:401 +#: stock/models.py:398 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:404 +#: stock/models.py:401 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:410 +#: stock/models.py:407 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:417 +#: stock/models.py:414 msgid "Destination Build Order" msgstr "" -#: stock/models.py:430 +#: stock/models.py:427 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:440 stock/templates/stock/item_notes.html:13 -#: stock/templates/stock/item_notes.html:29 +#: stock/models.py:437 stock/templates/stock/item_notes.html:14 +#: stock/templates/stock/item_notes.html:30 msgid "Stock Item Notes" msgstr "" -#: stock/models.py:604 +#: stock/models.py:489 +msgid "Assigned to Customer" +msgstr "" + +#: stock/models.py:491 +msgid "Manually assigned to customer" +msgstr "" + +#: stock/models.py:656 +msgid "Part is not set as trackable" +msgstr "" + +#: stock/models.py:662 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:610 +#: stock/models.py:668 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({n})" msgstr "" -#: stock/models.py:613 stock/models.py:616 +#: stock/models.py:671 stock/models.py:674 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:619 +#: stock/models.py:677 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:629 +#: stock/models.py:687 msgid "Serial numbers already exist: " msgstr "" -#: stock/models.py:651 +#: stock/models.py:712 msgid "Add serial number" msgstr "" -#: stock/models.py:654 +#: stock/models.py:715 #, python-brace-format msgid "Serialized {n} items" msgstr "" -#: stock/models.py:751 +#: stock/models.py:826 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:960 +#: stock/models.py:1153 msgid "Tracking entry title" msgstr "" -#: stock/models.py:962 +#: stock/models.py:1155 msgid "Entry notes" msgstr "" -#: stock/models.py:964 +#: stock/models.py:1157 msgid "Link to external page for further information" msgstr "" -#: stock/templates/stock/item.html:12 +#: stock/models.py:1217 +msgid "Value must be provided for this test" +msgstr "" + +#: stock/models.py:1223 +msgid "Attachment must be uploaded for this test" +msgstr "" + +#: stock/models.py:1240 +msgid "Test" +msgstr "" + +#: stock/models.py:1241 +msgid "Test name" +msgstr "" + +#: stock/models.py:1246 +msgid "Result" +msgstr "" + +#: stock/models.py:1247 templates/js/table_filters.html:53 +msgid "Test result" +msgstr "" + +#: stock/models.py:1253 +msgid "Test output value" +msgstr "" + +#: stock/models.py:1259 +msgid "Attachment" +msgstr "" + +#: stock/models.py:1260 +msgid "Test result attachment" +msgstr "" + +#: stock/models.py:1266 +msgid "Test notes" +msgstr "" + +#: stock/templates/stock/item.html:11 msgid "Stock Tracking Information" msgstr "" +#: stock/templates/stock/item_attachments.html:10 +msgid "Stock Item Attachments" +msgstr "" + #: stock/templates/stock/item_base.html:20 -msgid "This stock item is allocated to Sales Order" +msgid "This stock item has not passed all required tests" msgstr "" #: stock/templates/stock/item_base.html:26 -msgid "This stock item is allocated to Build" +msgid "This stock item is allocated to Sales Order" msgstr "" #: stock/templates/stock/item_base.html:32 +msgid "This stock item is allocated to Build" +msgstr "" + +#: stock/templates/stock/item_base.html:38 msgid "" "This stock item is serialized - it has a unique serial number and the " "quantity cannot be adjusted." msgstr "" -#: stock/templates/stock/item_base.html:36 +#: stock/templates/stock/item_base.html:42 msgid "This stock item cannot be deleted as it has child items" msgstr "" -#: stock/templates/stock/item_base.html:40 +#: stock/templates/stock/item_base.html:46 msgid "" "This stock item will be automatically deleted when all stock is depleted." msgstr "" -#: stock/templates/stock/item_base.html:103 +#: stock/templates/stock/item_base.html:74 +msgid "Add to stock" +msgstr "" + +#: stock/templates/stock/item_base.html:77 +msgid "Take from stock" +msgstr "" + +#: stock/templates/stock/item_base.html:80 templates/stock_table.html:14 +msgid "Count stock" +msgstr "" + +#: stock/templates/stock/item_base.html:84 +msgid "Serialize stock" +msgstr "" + +#: stock/templates/stock/item_base.html:90 stock/views.py:232 +msgid "Assign to Customer" +msgstr "" + +#: stock/templates/stock/item_base.html:94 +msgid "Transfer stock" +msgstr "" + +#: stock/templates/stock/item_base.html:97 +msgid "Duplicate stock item" +msgstr "" + +#: stock/templates/stock/item_base.html:102 +msgid "Convert stock to variant" +msgstr "" + +#: stock/templates/stock/item_base.html:107 +msgid "Generate test report" +msgstr "" + +#: stock/templates/stock/item_base.html:111 +msgid "Edit stock item" +msgstr "" + +#: stock/templates/stock/item_base.html:115 +msgid "Delete stock item" +msgstr "" + +#: stock/templates/stock/item_base.html:124 msgid "Stock Item Details" msgstr "" -#: stock/templates/stock/item_base.html:116 +#: stock/templates/stock/item_base.html:144 msgid "Belongs To" msgstr "" -#: stock/templates/stock/item_base.html:141 +#: stock/templates/stock/item_base.html:166 +msgid "No location set" +msgstr "" + +#: stock/templates/stock/item_base.html:173 msgid "Unique Identifier" msgstr "" -#: stock/templates/stock/item_base.html:182 +#: stock/templates/stock/item_base.html:214 msgid "Parent Item" msgstr "" -#: stock/templates/stock/item_base.html:207 +#: stock/templates/stock/item_base.html:239 msgid "Last Updated" msgstr "" -#: stock/templates/stock/item_base.html:212 +#: stock/templates/stock/item_base.html:244 msgid "Last Stocktake" msgstr "" -#: stock/templates/stock/item_base.html:216 +#: stock/templates/stock/item_base.html:248 msgid "No stocktake performed" msgstr "" @@ -2769,6 +3021,22 @@ msgstr "" msgid "This stock item does not have any child items" msgstr "" +#: stock/templates/stock/item_tests.html:10 stock/templates/stock/tabs.html:13 +msgid "Test Data" +msgstr "" + +#: stock/templates/stock/item_tests.html:17 +msgid "Delete Test Data" +msgstr "" + +#: stock/templates/stock/item_tests.html:19 +msgid "Add Test Data" +msgstr "" + +#: stock/templates/stock/item_tests.html:21 +msgid "Test Report" +msgstr "" + #: stock/templates/stock/location.html:13 msgid "All stock items" msgstr "" @@ -2816,154 +3084,210 @@ msgstr "" msgid "Stock Locations" msgstr "" -#: stock/templates/stock/tabs.html:8 -msgid "Children" +#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:934 +msgid "Convert Stock Item" msgstr "" -#: stock/templates/stock/tabs.html:13 +#: stock/templates/stock/stockitem_convert.html:8 +msgid "This stock item is current an instance of " +msgstr "" + +#: stock/templates/stock/stockitem_convert.html:9 +msgid "It can be converted to one of the part variants listed below." +msgstr "" + +#: stock/templates/stock/stockitem_convert.html:14 +msgid "This action cannot be easily undone" +msgstr "" + +#: stock/templates/stock/tabs.html:21 msgid "Builds" msgstr "" -#: stock/views.py:117 +#: stock/templates/stock/tabs.html:38 +msgid "Children" +msgstr "" + +#: stock/views.py:113 msgid "Edit Stock Location" msgstr "" -#: stock/views.py:141 +#: stock/views.py:137 msgid "Stock Location QR code" msgstr "" -#: stock/views.py:156 +#: stock/views.py:155 +msgid "Add Stock Item Attachment" +msgstr "" + +#: stock/views.py:200 +msgid "Edit Stock Item Attachment" +msgstr "" + +#: stock/views.py:216 +msgid "Delete Stock Item Attachment" +msgstr "" + +#: stock/views.py:270 +msgid "Delete All Test Data" +msgstr "" + +#: stock/views.py:285 +msgid "Confirm test data deletion" +msgstr "" + +#: stock/views.py:305 +msgid "Add Test Result" +msgstr "" + +#: stock/views.py:342 +msgid "Edit Test Result" +msgstr "" + +#: stock/views.py:359 +msgid "Delete Test Result" +msgstr "" + +#: stock/views.py:370 +msgid "Select Test Report Template" +msgstr "" + +#: stock/views.py:384 +msgid "Select valid template" +msgstr "" + +#: stock/views.py:436 msgid "Stock Export Options" msgstr "" -#: stock/views.py:276 +#: stock/views.py:556 msgid "Stock Item QR Code" msgstr "" -#: stock/views.py:299 +#: stock/views.py:579 msgid "Adjust Stock" msgstr "" -#: stock/views.py:408 +#: stock/views.py:688 msgid "Move Stock Items" msgstr "" -#: stock/views.py:409 +#: stock/views.py:689 msgid "Count Stock Items" msgstr "" -#: stock/views.py:410 +#: stock/views.py:690 msgid "Remove From Stock" msgstr "" -#: stock/views.py:411 +#: stock/views.py:691 msgid "Add Stock Items" msgstr "" -#: stock/views.py:412 +#: stock/views.py:692 msgid "Delete Stock Items" msgstr "" -#: stock/views.py:440 +#: stock/views.py:720 msgid "Must enter integer value" msgstr "" -#: stock/views.py:445 +#: stock/views.py:725 msgid "Quantity must be positive" msgstr "" -#: stock/views.py:452 +#: stock/views.py:732 #, python-brace-format msgid "Quantity must not exceed {x}" msgstr "" -#: stock/views.py:460 +#: stock/views.py:740 msgid "Confirm stock adjustment" msgstr "" -#: stock/views.py:531 +#: stock/views.py:811 #, python-brace-format msgid "Added stock to {n} items" msgstr "" -#: stock/views.py:546 +#: stock/views.py:826 #, python-brace-format msgid "Removed stock from {n} items" msgstr "" -#: stock/views.py:559 +#: stock/views.py:839 #, python-brace-format msgid "Counted stock for {n} items" msgstr "" -#: stock/views.py:587 +#: stock/views.py:867 msgid "No items were moved" msgstr "" -#: stock/views.py:590 +#: stock/views.py:870 #, python-brace-format msgid "Moved {n} items to {dest}" msgstr "" -#: stock/views.py:609 +#: stock/views.py:889 #, python-brace-format msgid "Deleted {n} stock items" msgstr "" -#: stock/views.py:621 +#: stock/views.py:901 msgid "Edit Stock Item" msgstr "" -#: stock/views.py:657 +#: stock/views.py:961 msgid "Create new Stock Location" msgstr "" -#: stock/views.py:678 +#: stock/views.py:982 msgid "Serialize Stock" msgstr "" -#: stock/views.py:758 +#: stock/views.py:1074 msgid "Create new Stock Item" msgstr "" -#: stock/views.py:822 +#: stock/views.py:1167 msgid "Copy Stock Item" msgstr "" -#: stock/views.py:893 +#: stock/views.py:1240 msgid "Invalid quantity" msgstr "" -#: stock/views.py:896 +#: stock/views.py:1247 msgid "Invalid part selection" msgstr "" -#: stock/views.py:943 +#: stock/views.py:1296 #, python-brace-format msgid "Created {n} new stock items" msgstr "" -#: stock/views.py:960 stock/views.py:973 +#: stock/views.py:1315 stock/views.py:1331 msgid "Created new stock item" msgstr "" -#: stock/views.py:990 +#: stock/views.py:1350 msgid "Delete Stock Location" msgstr "" -#: stock/views.py:1003 +#: stock/views.py:1363 msgid "Delete Stock Item" msgstr "" -#: stock/views.py:1014 +#: stock/views.py:1374 msgid "Delete Stock Tracking Entry" msgstr "" -#: stock/views.py:1031 +#: stock/views.py:1391 msgid "Edit Stock Tracking Entry" msgstr "" -#: stock/views.py:1040 +#: stock/views.py:1400 msgid "Add Stock Tracking Entry" msgstr "" @@ -2975,6 +3299,10 @@ msgstr "" msgid "No results found" msgstr "" +#: templates/InvenTree/settings/part.html:9 +msgid "Part Parameter Templates" +msgstr "" + #: templates/InvenTree/settings/part.html:28 msgid "No part parameter templates found" msgstr "" @@ -3027,6 +3355,26 @@ msgstr "" msgid "Submit Bug Report" msgstr "" +#: templates/attachment_table.html:5 +msgid "Add Attachment" +msgstr "" + +#: templates/attachment_table.html:13 +msgid "File" +msgstr "" + +#: templates/attachment_table.html:14 +msgid "Comment" +msgstr "" + +#: templates/attachment_table.html:15 +msgid "Uploaded" +msgstr "" + +#: templates/attachment_table.html:33 +msgid "Delete attachment" +msgstr "" + #: templates/js/bom.html:143 msgid "Open subassembly" msgstr "" @@ -3071,11 +3419,11 @@ msgstr "" msgid "No supplier parts found" msgstr "" -#: templates/js/company.html:117 templates/js/part.html:136 +#: templates/js/company.html:117 templates/js/part.html:145 msgid "Template part" msgstr "" -#: templates/js/company.html:121 templates/js/part.html:140 +#: templates/js/company.html:121 templates/js/part.html:149 msgid "Assembled part" msgstr "" @@ -3087,7 +3435,7 @@ msgstr "" msgid "No purchase orders found" msgstr "" -#: templates/js/order.html:170 templates/js/stock.html:389 +#: templates/js/order.html:170 templates/js/stock.html:605 msgid "Date" msgstr "" @@ -3099,56 +3447,184 @@ msgstr "" msgid "Shipment Date" msgstr "" -#: templates/js/part.html:104 templates/js/stock.html:196 +#: templates/js/part.html:106 templates/js/stock.html:403 msgid "Select" msgstr "" -#: templates/js/part.html:144 +#: templates/js/part.html:153 msgid "Starred part" msgstr "" -#: templates/js/part.html:148 +#: templates/js/part.html:157 msgid "Salable part" msgstr "" -#: templates/js/part.html:187 +#: templates/js/part.html:196 msgid "No category" msgstr "" -#: templates/js/part.html:205 templates/table_filters.html:95 +#: templates/js/part.html:214 templates/js/table_filters.html:130 msgid "Low stock" msgstr "" -#: templates/js/part.html:214 +#: templates/js/part.html:223 msgid "Building" msgstr "" -#: templates/js/part.html:232 +#: templates/js/part.html:241 msgid "No parts found" msgstr "" -#: templates/js/stock.html:66 +#: templates/js/part.html:301 +msgid "YES" +msgstr "" + +#: templates/js/part.html:303 +msgid "NO" +msgstr "" + +#: templates/js/part.html:337 +msgid "No test templates matching query" +msgstr "" + +#: templates/js/part.html:387 templates/js/stock.html:62 +msgid "Edit test result" +msgstr "" + +#: templates/js/part.html:388 templates/js/stock.html:63 +msgid "Delete test result" +msgstr "" + +#: templates/js/part.html:394 +msgid "This test is defined for a parent part" +msgstr "" + +#: templates/js/stock.html:25 +msgid "PASS" +msgstr "" + +#: templates/js/stock.html:27 +msgid "FAIL" +msgstr "" + +#: templates/js/stock.html:32 +msgid "NO RESULT" +msgstr "" + +#: templates/js/stock.html:58 +msgid "Add test result" +msgstr "" + +#: templates/js/stock.html:76 +msgid "No test results found" +msgstr "" + +#: templates/js/stock.html:117 +msgid "Test Date" +msgstr "" + +#: templates/js/stock.html:258 msgid "No stock items matching query" msgstr "" -#: templates/js/stock.html:251 +#: templates/js/stock.html:355 templates/js/stock.html:370 +msgid "Undefined location" +msgstr "" + +#: templates/js/stock.html:467 msgid "StockItem has been allocated" msgstr "" -#: templates/js/stock.html:256 +#: templates/js/stock.html:472 msgid "StockItem is lost" msgstr "" -#: templates/js/stock.html:284 +#: templates/js/stock.html:500 msgid "No stock location set" msgstr "" -#: templates/js/stock.html:446 -msgid "User" +#: templates/js/stock.html:671 +msgid "No user information" msgstr "" -#: templates/js/stock.html:455 -msgid "No user information" +#: templates/js/table_filters.html:19 +msgid "Include sublocations" +msgstr "" + +#: templates/js/table_filters.html:20 +msgid "Include stock in sublocations" +msgstr "" + +#: templates/js/table_filters.html:24 +msgid "Active parts" +msgstr "" + +#: templates/js/table_filters.html:25 +msgid "Show stock for active parts" +msgstr "" + +#: templates/js/table_filters.html:29 templates/js/table_filters.html:30 +msgid "Stock status" +msgstr "" + +#: templates/js/table_filters.html:34 +msgid "Is allocated" +msgstr "" + +#: templates/js/table_filters.html:35 +msgid "Item has been alloacted" +msgstr "" + +#: templates/js/table_filters.html:38 +msgid "Serial number GTE" +msgstr "" + +#: templates/js/table_filters.html:39 +msgid "Serial number greater than or equal to" +msgstr "" + +#: templates/js/table_filters.html:42 +msgid "Serial number LTE" +msgstr "" + +#: templates/js/table_filters.html:43 +msgid "Serial number less than or equal to" +msgstr "" + +#: templates/js/table_filters.html:72 +msgid "Build status" +msgstr "" + +#: templates/js/table_filters.html:84 templates/js/table_filters.html:97 +msgid "Order status" +msgstr "" + +#: templates/js/table_filters.html:89 templates/js/table_filters.html:102 +msgid "Outstanding" +msgstr "" + +#: templates/js/table_filters.html:112 +msgid "Include subcategories" +msgstr "" + +#: templates/js/table_filters.html:113 +msgid "Include parts in subcategories" +msgstr "" + +#: templates/js/table_filters.html:118 +msgid "Show active parts" +msgstr "" + +#: templates/js/table_filters.html:126 +msgid "Stock available" +msgstr "" + +#: templates/js/table_filters.html:142 +msgid "Starred" +msgstr "" + +#: templates/js/table_filters.html:154 +msgid "Purchasable" msgstr "" #: templates/navbar.html:14 @@ -3195,10 +3671,6 @@ msgstr "" msgid "Remove stock" msgstr "" -#: templates/stock_table.html:14 -msgid "Count stock" -msgstr "" - #: templates/stock_table.html:15 msgid "Move stock" msgstr "" @@ -3210,71 +3682,3 @@ msgstr "" #: templates/stock_table.html:17 msgid "Delete Stock" msgstr "" - -#: templates/table_filters.html:21 -msgid "Include sublocations" -msgstr "" - -#: templates/table_filters.html:22 -msgid "Include stock in sublocations" -msgstr "" - -#: templates/table_filters.html:26 -msgid "Active parts" -msgstr "" - -#: templates/table_filters.html:27 -msgid "Show stock for active parts" -msgstr "" - -#: templates/table_filters.html:31 templates/table_filters.html:32 -msgid "Stock status" -msgstr "" - -#: templates/table_filters.html:36 -msgid "Is allocated" -msgstr "" - -#: templates/table_filters.html:37 -msgid "Item has been alloacted" -msgstr "" - -#: templates/table_filters.html:46 -msgid "Build status" -msgstr "" - -#: templates/table_filters.html:57 templates/table_filters.html:66 -msgid "Order status" -msgstr "" - -#: templates/table_filters.html:77 -msgid "Include subcategories" -msgstr "" - -#: templates/table_filters.html:78 -msgid "Include parts in subcategories" -msgstr "" - -#: templates/table_filters.html:82 -msgid "Active" -msgstr "" - -#: templates/table_filters.html:83 -msgid "Show active parts" -msgstr "" - -#: templates/table_filters.html:87 -msgid "Template" -msgstr "" - -#: templates/table_filters.html:91 -msgid "Stock available" -msgstr "" - -#: templates/table_filters.html:107 -msgid "Starred" -msgstr "" - -#: templates/table_filters.html:115 -msgid "Purchasable" -msgstr "" diff --git a/InvenTree/locale/es/LC_MESSAGES/django.po b/InvenTree/locale/es/LC_MESSAGES/django.po index 976f7abf2f..fb77271de8 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-05-04 09:50+0000\n" +"POT-Creation-Date: 2020-06-09 06:17+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -18,84 +18,112 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: InvenTree/api.py:61 +#: InvenTree/api.py:86 msgid "No action specified" msgstr "" -#: InvenTree/api.py:75 +#: InvenTree/api.py:100 msgid "No matching action found" msgstr "" -#: InvenTree/api.py:106 +#: InvenTree/api.py:131 msgid "No barcode data provided" msgstr "" -#: InvenTree/api.py:121 +#: InvenTree/api.py:146 msgid "Barcode successfully decoded" msgstr "" -#: InvenTree/api.py:124 +#: InvenTree/api.py:149 msgid "Barcode plugin returned incorrect response" msgstr "" -#: InvenTree/api.py:134 +#: InvenTree/api.py:159 msgid "Unknown barcode format" msgstr "" -#: InvenTree/helpers.py:258 order/models.py:150 order/models.py:224 +#: InvenTree/forms.py:101 build/forms.py:37 +msgid "Confirm" +msgstr "" + +#: InvenTree/forms.py:117 +msgid "Confirm item deletion" +msgstr "" + +#: InvenTree/forms.py:149 +msgid "Enter new password" +msgstr "" + +#: InvenTree/forms.py:156 +msgid "Confirm new password" +msgstr "" + +#: InvenTree/helpers.py:328 order/models.py:187 order/models.py:261 msgid "Invalid quantity provided" msgstr "" -#: InvenTree/helpers.py:261 +#: InvenTree/helpers.py:331 msgid "Empty serial number string" msgstr "" -#: InvenTree/helpers.py:282 InvenTree/helpers.py:299 +#: InvenTree/helpers.py:352 InvenTree/helpers.py:369 #, python-brace-format msgid "Duplicate serial: {n}" msgstr "" -#: InvenTree/helpers.py:286 InvenTree/helpers.py:289 InvenTree/helpers.py:292 -#: InvenTree/helpers.py:303 +#: InvenTree/helpers.py:356 InvenTree/helpers.py:359 InvenTree/helpers.py:362 +#: InvenTree/helpers.py:373 #, python-brace-format msgid "Invalid group: {g}" msgstr "" -#: InvenTree/helpers.py:309 +#: InvenTree/helpers.py:379 msgid "No serial numbers found" msgstr "" -#: InvenTree/helpers.py:313 +#: InvenTree/helpers.py:383 #, python-brace-format msgid "Number of unique serial number ({s}) must match quantity ({q})" msgstr "" -#: InvenTree/models.py:54 +#: InvenTree/models.py:60 msgid "Select file to attach" msgstr "" -#: InvenTree/models.py:56 +#: InvenTree/models.py:62 msgid "File comment" msgstr "" -#: InvenTree/settings.py:295 +#: InvenTree/models.py:68 templates/js/stock.html:662 +msgid "User" +msgstr "" + +#: InvenTree/models.py:106 part/templates/part/params.html:20 +msgid "Name" +msgstr "" + +#: InvenTree/models.py:112 +msgid "Description (optional)" +msgstr "" + +#: InvenTree/settings.py:330 msgid "English" msgstr "" -#: InvenTree/settings.py:296 +#: InvenTree/settings.py:331 msgid "German" msgstr "" -#: InvenTree/settings.py:297 +#: InvenTree/settings.py:332 msgid "French" msgstr "" -#: InvenTree/settings.py:298 +#: InvenTree/settings.py:333 msgid "Polish" msgstr "" #: InvenTree/status_codes.py:94 InvenTree/status_codes.py:135 -#: InvenTree/status_codes.py:230 +#: InvenTree/status_codes.py:235 msgid "Pending" msgstr "" @@ -103,61 +131,61 @@ msgstr "" msgid "Placed" msgstr "" -#: InvenTree/status_codes.py:96 InvenTree/status_codes.py:233 +#: InvenTree/status_codes.py:96 InvenTree/status_codes.py:238 msgid "Complete" msgstr "" #: InvenTree/status_codes.py:97 InvenTree/status_codes.py:137 -#: InvenTree/status_codes.py:232 +#: InvenTree/status_codes.py:237 msgid "Cancelled" msgstr "" #: InvenTree/status_codes.py:98 InvenTree/status_codes.py:138 -#: InvenTree/status_codes.py:174 +#: InvenTree/status_codes.py:179 msgid "Lost" msgstr "" #: InvenTree/status_codes.py:99 InvenTree/status_codes.py:139 -#: InvenTree/status_codes.py:176 +#: InvenTree/status_codes.py:181 msgid "Returned" msgstr "" -#: InvenTree/status_codes.py:136 InvenTree/status_codes.py:177 +#: InvenTree/status_codes.py:136 InvenTree/status_codes.py:182 #: order/templates/order/sales_order_base.html:98 msgid "Shipped" msgstr "" -#: InvenTree/status_codes.py:170 +#: InvenTree/status_codes.py:175 msgid "OK" msgstr "" -#: InvenTree/status_codes.py:171 +#: InvenTree/status_codes.py:176 msgid "Attention needed" msgstr "" -#: InvenTree/status_codes.py:172 +#: InvenTree/status_codes.py:177 msgid "Damaged" msgstr "" -#: InvenTree/status_codes.py:173 +#: InvenTree/status_codes.py:178 msgid "Destroyed" msgstr "" -#: InvenTree/status_codes.py:175 +#: InvenTree/status_codes.py:180 msgid "Rejected" msgstr "" -#: InvenTree/status_codes.py:178 +#: InvenTree/status_codes.py:183 msgid "Used for Build" msgstr "" -#: InvenTree/status_codes.py:179 +#: InvenTree/status_codes.py:184 msgid "Installed in Stock Item" msgstr "" -#: InvenTree/status_codes.py:231 build/templates/build/allocate.html:349 +#: InvenTree/status_codes.py:236 build/templates/build/allocate.html:349 #: order/templates/order/sales_order_detail.html:220 -#: part/templates/part/tabs.html:21 templates/js/build.html:120 +#: part/templates/part/tabs.html:23 templates/js/build.html:120 msgid "Allocated" msgstr "" @@ -186,159 +214,168 @@ msgstr "" msgid "Overage must be an integer value or a percentage" msgstr "" -#: InvenTree/views.py:547 +#: InvenTree/views.py:563 msgid "Database Statistics" msgstr "" -#: build/forms.py:37 -msgid "Confirm" +#: build/forms.py:58 +msgid "Location of completed parts" msgstr "" -#: build/forms.py:54 stock/forms.py:34 +#: build/forms.py:62 +msgid "Serial numbers" +msgstr "" + +#: build/forms.py:64 stock/forms.py:93 msgid "Enter unique serial numbers (or leave blank)" msgstr "" -#: build/forms.py:56 +#: build/forms.py:67 msgid "Confirm build completion" msgstr "" -#: build/models.py:57 build/templates/build/build_base.html:65 +#: build/models.py:67 +msgid "Build quantity must be integer value for trackable parts" +msgstr "" + +#: build/models.py:73 build/templates/build/build_base.html:65 msgid "Build Title" msgstr "" -#: build/models.py:60 +#: build/models.py:76 msgid "Brief description of the build" msgstr "" -#: build/models.py:68 build/templates/build/build_base.html:86 +#: build/models.py:84 build/templates/build/build_base.html:86 msgid "Parent Build" msgstr "" -#: build/models.py:69 +#: build/models.py:85 msgid "Parent build to which this build is allocated" msgstr "" -#: build/models.py:74 build/templates/build/allocate.html:320 +#: build/models.py:90 build/templates/build/allocate.html:320 #: build/templates/build/auto_allocate.html:18 #: build/templates/build/build_base.html:70 -#: build/templates/build/detail.html:22 order/models.py:464 +#: 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 +#: order/templates/order/receive_parts.html:19 part/models.py:240 #: part/templates/part/part_app_base.html:7 #: part/templates/part/set_category.html:13 templates/js/bom.html:135 #: templates/js/build.html:41 templates/js/company.html:109 -#: templates/js/part.html:111 templates/js/stock.html:206 +#: templates/js/part.html:120 templates/js/stock.html:422 msgid "Part" msgstr "" -#: build/models.py:83 +#: build/models.py:99 msgid "Select part to build" msgstr "" -#: build/models.py:88 +#: build/models.py:104 msgid "Sales Order Reference" msgstr "" -#: build/models.py:92 +#: build/models.py:108 msgid "SalesOrder to which this build is allocated" msgstr "" -#: build/models.py:97 +#: build/models.py:113 msgid "Source Location" msgstr "" -#: build/models.py:101 +#: build/models.py:117 msgid "" "Select location to take stock from for this build (leave blank to take from " "any stock location)" msgstr "" -#: build/models.py:105 +#: build/models.py:121 msgid "Build Quantity" msgstr "" -#: build/models.py:108 +#: build/models.py:124 msgid "Number of parts to build" msgstr "" -#: build/models.py:112 part/templates/part/part_base.html:138 +#: build/models.py:128 part/templates/part/part_base.html:141 msgid "Build Status" msgstr "" -#: build/models.py:116 +#: build/models.py:132 msgid "Build status code" msgstr "" -#: build/models.py:120 stock/models.py:377 +#: build/models.py:136 stock/models.py:374 msgid "Batch Code" msgstr "" -#: build/models.py:124 +#: build/models.py:140 msgid "Batch code for this build output" msgstr "" -#: build/models.py:139 build/templates/build/detail.html:55 +#: 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:67 part/templates/part/part_base.html:85 -#: stock/models.py:371 stock/templates/stock/item_base.html:189 +#: part/templates/part/detail.html:74 part/templates/part/part_base.html:88 +#: stock/models.py:368 stock/templates/stock/item_base.html:221 msgid "External Link" msgstr "" -#: build/models.py:140 stock/models.py:373 +#: build/models.py:156 stock/models.py:370 msgid "Link to external URL" msgstr "" -#: build/models.py:144 build/templates/build/tabs.html:14 company/models.py:302 -#: company/templates/company/tabs.html:26 order/templates/order/po_tabs.html:15 +#: build/models.py:160 build/templates/build/tabs.html:14 company/models.py:302 +#: company/templates/company/tabs.html:33 order/templates/order/po_tabs.html:15 #: order/templates/order/purchase_order_detail.html:200 -#: order/templates/order/so_tabs.html:23 part/templates/part/tabs.html:63 -#: stock/models.py:439 stock/templates/stock/tabs.html:17 -#: templates/js/bom.html:229 templates/js/stock.html:290 +#: order/templates/order/so_tabs.html:23 part/templates/part/tabs.html:73 +#: stock/models.py:436 stock/models.py:1265 stock/templates/stock/tabs.html:26 +#: templates/js/bom.html:229 templates/js/stock.html:113 +#: templates/js/stock.html:506 msgid "Notes" msgstr "" -#: build/models.py:145 +#: build/models.py:161 msgid "Extra build notes" msgstr "" -#: build/models.py:451 +#: build/models.py:467 #, python-brace-format msgid "Selected stock item not found in BOM for part '{p}'" msgstr "" -#: build/models.py:454 +#: build/models.py:470 #, python-brace-format msgid "Allocated quantity ({n}) must not exceed available quantity ({q})" msgstr "" -#: build/models.py:460 order/models.py:548 +#: build/models.py:476 order/models.py:585 msgid "StockItem is over-allocated" msgstr "" -#: build/models.py:463 order/models.py:551 +#: build/models.py:479 order/models.py:588 msgid "Allocation quantity must be greater than zero" msgstr "" -#: build/models.py:466 +#: build/models.py:482 msgid "Quantity must be 1 for serialized stock" msgstr "" -#: build/models.py:496 +#: build/models.py:512 msgid "Build to allocate parts" msgstr "" -#: build/models.py:503 +#: build/models.py:519 msgid "Stock Item to allocate to build" msgstr "" -#: build/models.py:516 +#: build/models.py:532 msgid "Stock quantity to allocate to build" msgstr "" #: build/templates/build/allocate.html:17 -#: company/templates/company/detail_part.html:18 order/views.py:763 +#: company/templates/company/detail_part.html:18 order/views.py:779 msgid "Order Parts" msgstr "" @@ -360,8 +397,8 @@ 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:365 -#: stock/templates/stock/item_base.html:148 +#: order/templates/order/sales_order_detail.html:150 stock/models.py:362 +#: stock/templates/stock/item_base.html:180 msgid "Serial Number" msgstr "" @@ -376,18 +413,18 @@ msgstr "" #: 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:20 #: stock/templates/stock/item_base.html:26 -#: stock/templates/stock/item_base.html:154 +#: stock/templates/stock/item_base.html:32 +#: stock/templates/stock/item_base.html:186 #: stock/templates/stock/stock_adjust.html:18 templates/js/bom.html:172 -#: templates/js/build.html:52 templates/js/stock.html:437 +#: templates/js/build.html:52 templates/js/stock.html:653 msgid "Quantity" msgstr "" #: build/templates/build/allocate.html:177 #: build/templates/build/auto_allocate.html:20 -#: stock/templates/stock/item_base.html:134 -#: stock/templates/stock/stock_adjust.html:17 templates/js/stock.html:277 +#: stock/templates/stock/item_base.html:162 +#: stock/templates/stock/stock_adjust.html:17 templates/js/stock.html:493 msgid "Location" msgstr "" @@ -409,11 +446,11 @@ msgstr "" #: 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:38 part/templates/part/set_category.html:14 +#: 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:167 templates/js/stock.html:227 -#: templates/js/stock.html:418 +#: templates/js/part.html:176 templates/js/part.html:355 +#: templates/js/stock.html:443 templates/js/stock.html:634 msgid "Description" msgstr "" @@ -423,7 +460,8 @@ msgstr "" msgid "Reference" msgstr "" -#: build/templates/build/allocate.html:338 +#: build/templates/build/allocate.html:338 part/models.py:1260 +#: templates/js/part.html:359 templates/js/table_filters.html:63 msgid "Required" msgstr "" @@ -466,7 +504,7 @@ 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:168 templates/js/build.html:33 +#: stock/templates/stock/item_base.html:200 templates/js/build.html:33 #: templates/navbar.html:12 msgid "Build" msgstr "" @@ -486,19 +524,19 @@ 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:221 templates/js/build.html:57 +#: stock/templates/stock/item_base.html:253 templates/js/build.html:57 #: templates/js/order.html:162 templates/js/order.html:235 -#: templates/js/stock.html:264 +#: templates/js/stock.html:480 msgid "Status" msgstr "" -#: build/templates/build/build_base.html:93 order/models.py:462 +#: build/templates/build/build_base.html:93 order/models.py:499 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:33 #: 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:122 templates/js/order.html:209 +#: stock/templates/stock/item_base.html:150 templates/js/order.html:209 msgid "Sales Order" msgstr "" @@ -565,7 +603,7 @@ msgid "Stock can be taken from any available location." msgstr "" #: build/templates/build/detail.html:48 -#: stock/templates/stock/item_base.html:161 templates/js/stock.html:272 +#: stock/templates/stock/item_base.html:193 templates/js/stock.html:488 msgid "Batch" msgstr "" @@ -593,7 +631,7 @@ msgstr "" #: build/templates/build/index.html:6 build/templates/build/index.html:14 #: order/templates/order/so_builds.html:11 order/templates/order/so_tabs.html:9 -#: part/templates/part/tabs.html:28 +#: part/templates/part/tabs.html:30 msgid "Build Orders" msgstr "" @@ -608,14 +646,14 @@ msgstr "" #: build/templates/build/notes.html:20 company/templates/company/notes.html:17 #: order/templates/order/order_notes.html:21 #: order/templates/order/sales_order_notes.html:26 -#: part/templates/part/notes.html:20 stock/templates/stock/item_notes.html:21 +#: part/templates/part/notes.html:20 stock/templates/stock/item_notes.html:22 msgid "Save" msgstr "" #: build/templates/build/notes.html:33 company/templates/company/notes.html:30 #: order/templates/order/order_notes.html:32 #: order/templates/order/sales_order_notes.html:37 -#: part/templates/part/notes.html:32 stock/templates/stock/item_notes.html:32 +#: part/templates/part/notes.html:32 stock/templates/stock/item_notes.html:33 msgid "Edit notes" msgstr "" @@ -660,7 +698,7 @@ msgstr "" msgid "Check the confirmation box at the bottom of the list" msgstr "" -#: build/views.py:148 build/views.py:446 +#: build/views.py:148 build/views.py:456 msgid "Unallocate Stock" msgstr "" @@ -668,7 +706,7 @@ msgstr "" msgid "Confirm unallocation of build stock" msgstr "" -#: build/views.py:162 +#: build/views.py:162 stock/views.py:286 msgid "Check the confirmation box" msgstr "" @@ -676,56 +714,64 @@ msgstr "" msgid "Complete Build" msgstr "" -#: build/views.py:258 +#: build/views.py:201 stock/views.py:1118 stock/views.py:1232 +msgid "Next available serial number is" +msgstr "" + +#: build/views.py:203 +msgid "Next available serial numbers are" +msgstr "" + +#: build/views.py:268 msgid "Confirm completion of build" msgstr "" -#: build/views.py:265 +#: build/views.py:275 msgid "Invalid location selected" msgstr "" -#: build/views.py:290 stock/views.py:917 +#: build/views.py:300 stock/views.py:1268 #, python-brace-format msgid "The following serial numbers already exist: ({sn})" msgstr "" -#: build/views.py:311 +#: build/views.py:321 msgid "Build marked as COMPLETE" msgstr "" -#: build/views.py:387 +#: build/views.py:397 msgid "Start new Build" msgstr "" -#: build/views.py:412 +#: build/views.py:422 msgid "Created new build" msgstr "" -#: build/views.py:422 +#: build/views.py:432 msgid "Edit Build Details" msgstr "" -#: build/views.py:427 +#: build/views.py:437 msgid "Edited build" msgstr "" -#: build/views.py:436 +#: build/views.py:446 msgid "Delete Build" msgstr "" -#: build/views.py:451 +#: build/views.py:461 msgid "Removed parts from build allocation" msgstr "" -#: build/views.py:461 +#: build/views.py:471 msgid "Allocate new Part" msgstr "" -#: build/views.py:614 +#: build/views.py:624 msgid "Edit Stock Allocation" msgstr "" -#: build/views.py:618 +#: build/views.py:628 msgid "Updated Build Item" msgstr "" @@ -857,6 +903,11 @@ msgstr "" msgid "Part packaging" msgstr "" +#: company/templates/company/assigned_stock.html:9 +#: company/templates/company/tabs.html:25 +msgid "Assigned Stock" +msgstr "" + #: company/templates/company/company_base.html:7 #: company/templates/company/company_base.html:22 templates/js/company.html:38 msgid "Company" @@ -896,17 +947,18 @@ 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:111 +#: company/templates/company/supplier_part_detail.html:21 order/models.py:148 #: order/templates/order/order_base.html:74 #: order/templates/order/order_wizard/select_pos.html:30 -#: stock/templates/stock/item_base.html:196 templates/js/company.html:52 +#: stock/templates/stock/item_base.html:228 templates/js/company.html:52 #: templates/js/company.html:134 templates/js/order.html:144 msgid "Supplier" msgstr "" -#: company/templates/company/detail.html:26 order/models.py:277 -#: order/templates/order/sales_order_base.html:73 templates/js/company.html:44 -#: templates/js/order.html:217 +#: company/templates/company/detail.html:26 order/models.py:314 +#: order/templates/order/sales_order_base.html:73 stock/models.py:357 +#: stock/models.py:358 stock/templates/stock/item_base.html:137 +#: templates/js/company.html:44 templates/js/order.html:217 msgid "Customer" msgstr "" @@ -961,7 +1013,7 @@ msgid "Supplier Stock" msgstr "" #: company/templates/company/detail_stock.html:34 -#: company/templates/company/supplier_part_stock.html:38 +#: company/templates/company/supplier_part_stock.html:33 #: part/templates/part/stock.html:54 templates/stock_table.html:5 msgid "Export" msgstr "" @@ -983,7 +1035,7 @@ msgstr "" #: company/templates/company/tabs.html:17 #: 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:43 +#: part/templates/part/orders.html:9 part/templates/part/tabs.html:45 #: templates/navbar.html:18 msgid "Purchase Orders" msgstr "" @@ -1002,7 +1054,7 @@ msgstr "" #: company/templates/company/tabs.html:22 #: 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:48 +#: part/templates/part/sales_orders.html:9 part/templates/part/tabs.html:50 #: templates/navbar.html:25 msgid "Sales Orders" msgstr "" @@ -1018,8 +1070,8 @@ msgid "New Sales Order" msgstr "" #: company/templates/company/supplier_part_base.html:6 -#: company/templates/company/supplier_part_base.html:19 stock/models.py:344 -#: stock/templates/stock/item_base.html:201 templates/js/company.html:150 +#: company/templates/company/supplier_part_base.html:19 stock/models.py:331 +#: stock/templates/stock/item_base.html:233 templates/js/company.html:150 msgid "Supplier Part" msgstr "" @@ -1099,14 +1151,14 @@ msgstr "" msgid "Supplier Part Stock" msgstr "" -#: company/templates/company/supplier_part_stock.html:61 +#: 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:91 msgid "New Location" msgstr "" -#: company/templates/company/supplier_part_stock.html:62 +#: company/templates/company/supplier_part_stock.html:57 #: part/templates/part/stock.html:92 msgid "Create New Location" msgstr "" @@ -1116,9 +1168,9 @@ msgid "Pricing" msgstr "" #: company/templates/company/supplier_part_tabs.html:8 -#: company/templates/company/tabs.html:12 part/templates/part/tabs.html:17 -#: stock/templates/stock/location.html:12 templates/js/part.html:194 -#: templates/js/stock.html:235 templates/navbar.html:11 +#: 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:451 templates/navbar.html:11 msgid "Stock" msgstr "" @@ -1127,13 +1179,13 @@ msgid "Orders" msgstr "" #: company/templates/company/tabs.html:9 -#: order/templates/order/receive_parts.html:14 +#: order/templates/order/receive_parts.html:14 part/models.py:241 #: part/templates/part/category.html:83 templates/navbar.html:10 #: templates/stats.html:8 templates/stats.html:17 msgid "Parts" msgstr "" -#: company/views.py:50 part/templates/part/tabs.html:37 +#: company/views.py:50 part/templates/part/tabs.html:39 #: templates/navbar.html:16 msgid "Suppliers" msgstr "" @@ -1239,99 +1291,108 @@ msgstr "" msgid "Receive parts to this location" msgstr "" -#: order/models.py:71 +#: order/forms.py:99 +msgid "Enter purchase order number" +msgstr "" + +#: order/forms.py:126 +msgid "Enter sales order number" +msgstr "" + +#: order/models.py:108 msgid "Order reference" msgstr "" -#: order/models.py:73 +#: order/models.py:110 msgid "Order description" msgstr "" -#: order/models.py:75 +#: order/models.py:112 msgid "Link to external page" msgstr "" -#: order/models.py:85 +#: order/models.py:122 msgid "Order notes" msgstr "" -#: order/models.py:114 +#: order/models.py:151 msgid "Supplier order reference code" msgstr "" -#: order/models.py:148 order/models.py:222 part/views.py:1113 -#: stock/models.py:607 +#: order/models.py:185 order/models.py:259 part/views.py:1167 +#: stock/models.py:243 stock/models.py:665 stock/views.py:1243 msgid "Quantity must be greater than zero" msgstr "" -#: order/models.py:153 +#: order/models.py:190 msgid "Part supplier must match PO supplier" msgstr "" -#: order/models.py:217 +#: order/models.py:254 msgid "Lines can only be received against an order marked as 'Placed'" msgstr "" -#: order/models.py:283 +#: order/models.py:320 msgid "Customer order reference code" msgstr "" -#: order/models.py:322 +#: order/models.py:359 msgid "SalesOrder cannot be shipped as it is not currently pending" msgstr "" -#: order/models.py:399 +#: order/models.py:436 msgid "Item quantity" msgstr "" -#: order/models.py:401 +#: order/models.py:438 msgid "Line item reference" msgstr "" -#: order/models.py:403 +#: order/models.py:440 msgid "Line item notes" msgstr "" -#: order/models.py:429 order/templates/order/order_base.html:9 +#: order/models.py:466 order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:23 -#: stock/templates/stock/item_base.html:175 templates/js/order.html:136 +#: stock/templates/stock/item_base.html:207 templates/js/order.html:136 msgid "Purchase Order" msgstr "" -#: order/models.py:442 +#: order/models.py:479 msgid "Supplier part" msgstr "" -#: order/models.py:445 +#: order/models.py:482 msgid "Number of items received" msgstr "" -#: order/models.py:539 +#: order/models.py:576 msgid "Cannot allocate stock item to a line with a different part" msgstr "" -#: order/models.py:541 +#: order/models.py:578 msgid "Cannot allocate stock to a line without a part" msgstr "" -#: order/models.py:544 +#: order/models.py:581 msgid "Allocation quantity cannot exceed stock quantity" msgstr "" -#: order/models.py:554 +#: order/models.py:591 msgid "Quantity must be 1 for serialized stock item" msgstr "" -#: order/models.py:571 +#: order/models.py:608 msgid "Select stock item to allocate" msgstr "" -#: order/models.py:574 +#: order/models.py:611 msgid "Enter stock allocation quantity" msgstr "" #: order/templates/order/delete_attachment.html:5 -#: part/templates/part/attachment_delete.html:5 +#: stock/templates/stock/attachment_delete.html:5 +#: templates/attachment_delete.html:5 msgid "Are you sure you want to delete this attachment?" msgstr "" @@ -1422,44 +1483,14 @@ msgstr "" msgid "Purchase Order Attachments" msgstr "" -#: order/templates/order/po_attachments.html:17 -#: order/templates/order/so_attachments.html:17 -#: part/templates/part/attachments.html:14 -msgid "Add Attachment" -msgstr "" - -#: order/templates/order/po_attachments.html:24 -#: order/templates/order/so_attachments.html:24 -#: part/templates/part/attachments.html:22 -msgid "File" -msgstr "" - -#: order/templates/order/po_attachments.html:25 -#: order/templates/order/so_attachments.html:25 -#: part/templates/part/attachments.html:23 -msgid "Comment" -msgstr "" - -#: order/templates/order/po_attachments.html:36 -#: order/templates/order/so_attachments.html:36 -#: part/templates/part/attachments.html:34 part/views.py:118 -msgid "Edit attachment" -msgstr "" - -#: order/templates/order/po_attachments.html:39 -#: order/templates/order/so_attachments.html:39 -#: part/templates/part/attachments.html:37 -msgid "Delete attachment" -msgstr "" - #: order/templates/order/po_tabs.html:8 order/templates/order/so_tabs.html:16 -#: part/templates/part/tabs.html:60 +#: part/templates/part/tabs.html:70 stock/templates/stock/tabs.html:32 msgid "Attachments" msgstr "" #: order/templates/order/purchase_order_detail.html:16 -#: order/templates/order/sales_order_detail.html:17 order/views.py:1071 -#: order/views.py:1185 +#: order/templates/order/sales_order_detail.html:17 order/views.py:1087 +#: order/views.py:1201 msgid "Add Line Item" msgstr "" @@ -1508,7 +1539,7 @@ msgid "Select parts to receive against this order" msgstr "" #: order/templates/order/receive_parts.html:21 -#: part/templates/part/part_base.html:128 templates/js/part.html:210 +#: part/templates/part/part_base.html:131 templates/js/part.html:219 msgid "On Order" msgstr "" @@ -1538,6 +1569,7 @@ msgstr "" #: order/templates/order/sales_order_cancel.html:8 #: order/templates/order/sales_order_ship.html:9 +#: stock/templates/stock/stockitem_convert.html:13 msgid "Warning" msgstr "" @@ -1599,143 +1631,143 @@ msgstr "" msgid "Add Purchase Order Attachment" msgstr "" -#: order/views.py:98 order/views.py:138 part/views.py:79 +#: order/views.py:102 order/views.py:149 part/views.py:85 stock/views.py:166 msgid "Added attachment" msgstr "" -#: order/views.py:134 +#: order/views.py:141 msgid "Add Sales Order Attachment" msgstr "" -#: order/views.py:162 order/views.py:183 +#: order/views.py:176 order/views.py:197 msgid "Edit Attachment" msgstr "" -#: order/views.py:166 order/views.py:187 +#: order/views.py:180 order/views.py:201 msgid "Attachment updated" msgstr "" -#: order/views.py:202 order/views.py:216 +#: order/views.py:216 order/views.py:230 msgid "Delete Attachment" msgstr "" -#: order/views.py:208 order/views.py:222 +#: order/views.py:222 order/views.py:236 stock/views.py:222 msgid "Deleted attachment" msgstr "" -#: order/views.py:273 +#: order/views.py:287 msgid "Create Purchase Order" msgstr "" -#: order/views.py:303 +#: order/views.py:318 msgid "Create Sales Order" msgstr "" -#: order/views.py:332 +#: order/views.py:348 msgid "Edit Purchase Order" msgstr "" -#: order/views.py:352 +#: order/views.py:368 msgid "Edit Sales Order" msgstr "" -#: order/views.py:368 +#: order/views.py:384 msgid "Cancel Order" msgstr "" -#: order/views.py:383 order/views.py:415 +#: order/views.py:399 order/views.py:431 msgid "Confirm order cancellation" msgstr "" -#: order/views.py:401 +#: order/views.py:417 msgid "Cancel sales order" msgstr "" -#: order/views.py:421 +#: order/views.py:437 msgid "Could not cancel order" msgstr "" -#: order/views.py:435 +#: order/views.py:451 msgid "Issue Order" msgstr "" -#: order/views.py:450 +#: order/views.py:466 msgid "Confirm order placement" msgstr "" -#: order/views.py:471 +#: order/views.py:487 msgid "Complete Order" msgstr "" -#: order/views.py:506 +#: order/views.py:522 msgid "Ship Order" msgstr "" -#: order/views.py:522 +#: order/views.py:538 msgid "Confirm order shipment" msgstr "" -#: order/views.py:528 +#: order/views.py:544 msgid "Could not ship order" msgstr "" -#: order/views.py:579 +#: order/views.py:595 msgid "Receive Parts" msgstr "" -#: order/views.py:646 +#: order/views.py:662 msgid "Items received" msgstr "" -#: order/views.py:660 +#: order/views.py:676 msgid "No destination set" msgstr "" -#: order/views.py:705 +#: order/views.py:721 msgid "Error converting quantity to number" msgstr "" -#: order/views.py:711 +#: order/views.py:727 msgid "Receive quantity less than zero" msgstr "" -#: order/views.py:717 +#: order/views.py:733 msgid "No lines specified" msgstr "" -#: order/views.py:1091 +#: order/views.py:1107 msgid "Invalid Purchase Order" msgstr "" -#: order/views.py:1099 +#: order/views.py:1115 msgid "Supplier must match for Part and Order" msgstr "" -#: order/views.py:1104 +#: order/views.py:1120 msgid "Invalid SupplierPart selection" msgstr "" -#: order/views.py:1236 order/views.py:1254 +#: order/views.py:1252 order/views.py:1270 msgid "Edit Line Item" msgstr "" -#: order/views.py:1270 order/views.py:1282 +#: order/views.py:1286 order/views.py:1298 msgid "Delete Line Item" msgstr "" -#: order/views.py:1275 order/views.py:1287 +#: order/views.py:1291 order/views.py:1303 msgid "Deleted line item" msgstr "" -#: order/views.py:1296 +#: order/views.py:1312 msgid "Allocate Stock to Order" msgstr "" -#: order/views.py:1365 +#: order/views.py:1381 msgid "Edit Allocation Quantity" msgstr "" -#: order/views.py:1380 +#: order/views.py:1396 msgid "Remove allocation" msgstr "" @@ -1752,215 +1784,255 @@ msgstr "" msgid "Error reading BOM file (incorrect row size)" msgstr "" -#: part/forms.py:37 stock/forms.py:91 +#: part/forms.py:55 stock/forms.py:200 msgid "File Format" msgstr "" -#: part/forms.py:37 stock/forms.py:91 +#: part/forms.py:55 stock/forms.py:200 msgid "Select output file format" msgstr "" -#: part/forms.py:39 +#: part/forms.py:57 msgid "Cascading" msgstr "" -#: part/forms.py:39 +#: part/forms.py:57 msgid "Download cascading / multi-level BOM" msgstr "" -#: part/forms.py:58 +#: part/forms.py:76 msgid "Confirm that the BOM is correct" msgstr "" -#: part/forms.py:70 +#: part/forms.py:88 msgid "Select BOM file to upload" msgstr "" -#: part/forms.py:94 +#: part/forms.py:112 msgid "Select part category" msgstr "" -#: part/forms.py:102 +#: part/forms.py:126 msgid "Perform 'deep copy' which will duplicate all BOM data for this part" msgstr "" -#: part/forms.py:107 +#: part/forms.py:131 msgid "Confirm part creation" msgstr "" -#: part/forms.py:193 +#: part/forms.py:221 msgid "Input quantity for price calculation" msgstr "" -#: part/forms.py:196 +#: part/forms.py:224 msgid "Select currency for price calculation" msgstr "" -#: part/models.py:64 +#: part/models.py:65 msgid "Default location for parts in this category" msgstr "" -#: part/models.py:67 +#: part/models.py:68 msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:341 +#: part/models.py:427 msgid "Part must be unique for name, IPN and revision" msgstr "" -#: part/models.py:355 -msgid "Part cannot be a template part if it is a variant of another part" -msgstr "" - -#: part/models.py:356 -msgid "Part cannot be a variant of another part if it is already a template" -msgstr "" - -#: part/models.py:360 part/templates/part/detail.html:19 +#: part/models.py:442 part/templates/part/detail.html:19 msgid "Part name" msgstr "" -#: part/models.py:364 +#: part/models.py:446 msgid "Is this part a template part?" msgstr "" -#: part/models.py:373 +#: part/models.py:455 msgid "Is this part a variant of another part?" msgstr "" -#: part/models.py:375 +#: part/models.py:457 msgid "Part description" msgstr "" -#: part/models.py:377 +#: part/models.py:459 msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:382 +#: part/models.py:464 msgid "Part category" msgstr "" -#: part/models.py:384 +#: part/models.py:466 msgid "Internal Part Number" msgstr "" -#: part/models.py:386 +#: part/models.py:468 msgid "Part revision or version number" msgstr "" -#: part/models.py:388 +#: part/models.py:470 msgid "Link to extenal URL" msgstr "" -#: part/models.py:400 +#: part/models.py:482 msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:444 +#: part/models.py:526 msgid "Default supplier part" msgstr "" -#: part/models.py:447 +#: part/models.py:529 msgid "Minimum allowed stock level" msgstr "" -#: part/models.py:449 +#: part/models.py:531 msgid "Stock keeping units for this part" msgstr "" -#: part/models.py:451 +#: part/models.py:533 msgid "Can this part be built from other parts?" msgstr "" -#: part/models.py:453 +#: part/models.py:535 msgid "Can this part be used to build other parts?" msgstr "" -#: part/models.py:455 +#: part/models.py:537 msgid "Does this part have tracking for unique items?" msgstr "" -#: part/models.py:457 +#: part/models.py:539 msgid "Can this part be purchased from external suppliers?" msgstr "" -#: part/models.py:459 +#: part/models.py:541 msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:461 +#: part/models.py:543 msgid "Is this part active?" msgstr "" -#: part/models.py:463 +#: part/models.py:545 msgid "Is this a virtual part, such as a software product or license?" msgstr "" -#: part/models.py:465 +#: part/models.py:547 msgid "Part notes - supports Markdown formatting" msgstr "" -#: part/models.py:467 +#: part/models.py:549 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:1069 +#: part/models.py:1212 +msgid "Test templates can only be created for trackable parts" +msgstr "" + +#: part/models.py:1229 +msgid "Test with this name already exists for this part" +msgstr "" + +#: part/models.py:1248 templates/js/part.html:350 templates/js/stock.html:89 +msgid "Test Name" +msgstr "" + +#: part/models.py:1249 +msgid "Enter a name for the test" +msgstr "" + +#: part/models.py:1254 +msgid "Test Description" +msgstr "" + +#: part/models.py:1255 +msgid "Enter description for this test" +msgstr "" + +#: part/models.py:1261 +msgid "Is this test required to pass?" +msgstr "" + +#: part/models.py:1266 templates/js/part.html:367 +msgid "Requires Value" +msgstr "" + +#: part/models.py:1267 +msgid "Does this test require a value when adding a test result?" +msgstr "" + +#: part/models.py:1272 templates/js/part.html:374 +msgid "Requires Attachment" +msgstr "" + +#: part/models.py:1273 +msgid "Does this test require a file attachment when adding a test result?" +msgstr "" + +#: part/models.py:1306 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:1074 +#: part/models.py:1311 msgid "Parameter Name" msgstr "" -#: part/models.py:1076 +#: part/models.py:1313 msgid "Parameter Units" msgstr "" -#: part/models.py:1102 +#: part/models.py:1339 msgid "Parent Part" msgstr "" -#: part/models.py:1104 +#: part/models.py:1341 msgid "Parameter Template" msgstr "" -#: part/models.py:1106 +#: part/models.py:1343 msgid "Parameter Value" msgstr "" -#: part/models.py:1130 +#: part/models.py:1372 msgid "Select parent part" msgstr "" -#: part/models.py:1139 +#: part/models.py:1380 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:1146 +#: part/models.py:1386 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:1149 +#: part/models.py:1389 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:1152 +#: part/models.py:1392 msgid "BOM item reference" msgstr "" -#: part/models.py:1155 +#: part/models.py:1395 msgid "BOM item notes" msgstr "" -#: part/models.py:1157 +#: part/models.py:1397 msgid "BOM line checksum" msgstr "" -#: part/models.py:1220 +#: part/models.py:1461 stock/models.py:233 +msgid "Quantity must be integer value for trackable parts" +msgstr "" + +#: part/models.py:1470 msgid "Part cannot be added to its own Bill of Materials" msgstr "" -#: part/models.py:1227 +#: part/models.py:1477 #, python-brace-format msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)" msgstr "" @@ -1979,15 +2051,15 @@ msgstr "" #: part/templates/part/allocation.html:28 #: part/templates/part/allocation.html:45 #: stock/templates/stock/item_base.html:8 -#: stock/templates/stock/item_base.html:52 -#: stock/templates/stock/item_base.html:183 +#: stock/templates/stock/item_base.html:58 +#: stock/templates/stock/item_base.html:215 #: stock/templates/stock/stock_adjust.html:16 templates/js/build.html:106 -#: templates/js/stock.html:407 +#: templates/js/stock.html:623 msgid "Stock Item" msgstr "" #: part/templates/part/allocation.html:20 -#: stock/templates/stock/item_base.html:128 +#: stock/templates/stock/item_base.html:156 msgid "Build Order" msgstr "" @@ -2023,7 +2095,7 @@ msgstr "" msgid "Validate Bill of Materials" msgstr "" -#: part/templates/part/bom.html:46 part/views.py:1358 +#: part/templates/part/bom.html:46 part/views.py:1412 msgid "Export Bill of Materials" msgstr "" @@ -2048,11 +2120,11 @@ msgstr "" msgid "Category Description" msgstr "" -#: part/templates/part/category.html:50 part/templates/part/detail.html:74 +#: 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:51 +#: part/templates/part/category.html:57 part/templates/part/detail.html:58 msgid "Keywords" msgstr "" @@ -2068,7 +2140,7 @@ msgstr "" msgid "Part Details" msgstr "" -#: part/templates/part/detail.html:25 part/templates/part/part_base.html:78 +#: part/templates/part/detail.html:25 part/templates/part/part_base.html:81 msgid "IPN" msgstr "" @@ -2076,107 +2148,136 @@ msgstr "" msgid "Revision" msgstr "" -#: part/templates/part/detail.html:44 +#: part/templates/part/detail.html:39 +msgid "Next Serial Number" +msgstr "" + +#: part/templates/part/detail.html:51 msgid "Variant Of" msgstr "" -#: part/templates/part/detail.html:57 part/templates/part/set_category.html:15 -#: templates/js/part.html:181 +#: part/templates/part/detail.html:64 part/templates/part/set_category.html:15 +#: templates/js/part.html:190 msgid "Category" msgstr "" -#: part/templates/part/detail.html:81 +#: part/templates/part/detail.html:88 msgid "Default Supplier" msgstr "" -#: part/templates/part/detail.html:89 part/templates/part/params.html:22 +#: part/templates/part/detail.html:96 part/templates/part/params.html:22 msgid "Units" msgstr "" -#: part/templates/part/detail.html:95 +#: part/templates/part/detail.html:102 msgid "Minimum Stock" msgstr "" -#: part/templates/part/detail.html:101 templates/js/order.html:243 +#: part/templates/part/detail.html:108 templates/js/order.html:243 msgid "Creation Date" msgstr "" -#: part/templates/part/detail.html:107 +#: part/templates/part/detail.html:114 msgid "Created By" msgstr "" -#: part/templates/part/detail.html:114 +#: part/templates/part/detail.html:121 msgid "Responsible User" msgstr "" -#: part/templates/part/detail.html:123 +#: part/templates/part/detail.html:130 msgid "Virtual" msgstr "" -#: part/templates/part/detail.html:126 +#: part/templates/part/detail.html:133 msgid "Part is virtual (not a physical part)" msgstr "" -#: part/templates/part/detail.html:128 +#: part/templates/part/detail.html:135 msgid "Part is not a virtual part" msgstr "" -#: part/templates/part/detail.html:132 templates/table_filters.html:99 -msgid "Assembly" +#: part/templates/part/detail.html:139 stock/forms.py:194 +#: templates/js/table_filters.html:122 +msgid "Template" msgstr "" -#: part/templates/part/detail.html:135 -msgid "Part can be assembled from other parts" -msgstr "" - -#: part/templates/part/detail.html:137 -msgid "Part cannot be assembled from other parts" -msgstr "" - -#: part/templates/part/detail.html:141 templates/table_filters.html:103 -msgid "Component" +#: part/templates/part/detail.html:142 +msgid "Part is a template part (variants can be made from this part)" msgstr "" #: part/templates/part/detail.html:144 -msgid "Part can be used in assemblies" +msgid "Part is not a template part" msgstr "" -#: part/templates/part/detail.html:146 -msgid "Part cannot be used in assemblies" +#: part/templates/part/detail.html:148 templates/js/table_filters.html:134 +msgid "Assembly" msgstr "" -#: part/templates/part/detail.html:150 -msgid "Trackable" +#: part/templates/part/detail.html:151 +msgid "Part can be assembled from other parts" msgstr "" #: part/templates/part/detail.html:153 +msgid "Part cannot be assembled from other parts" +msgstr "" + +#: part/templates/part/detail.html:157 templates/js/table_filters.html:138 +msgid "Component" +msgstr "" + +#: part/templates/part/detail.html:160 +msgid "Part can be used in assemblies" +msgstr "" + +#: part/templates/part/detail.html:162 +msgid "Part cannot be used in assemblies" +msgstr "" + +#: part/templates/part/detail.html:166 templates/js/table_filters.html:150 +msgid "Trackable" +msgstr "" + +#: part/templates/part/detail.html:169 msgid "Part stock is tracked by serial number" msgstr "" -#: part/templates/part/detail.html:155 +#: part/templates/part/detail.html:171 msgid "Part stock is not tracked by serial number" msgstr "" -#: part/templates/part/detail.html:159 +#: part/templates/part/detail.html:175 msgid "Purchaseable" msgstr "" -#: part/templates/part/detail.html:162 part/templates/part/detail.html:164 +#: part/templates/part/detail.html:178 part/templates/part/detail.html:180 msgid "Part can be purchased from external suppliers" msgstr "" -#: part/templates/part/detail.html:168 templates/table_filters.html:111 +#: part/templates/part/detail.html:184 templates/js/table_filters.html:146 msgid "Salable" msgstr "" -#: part/templates/part/detail.html:171 +#: part/templates/part/detail.html:187 msgid "Part can be sold to customers" msgstr "" -#: part/templates/part/detail.html:173 +#: part/templates/part/detail.html:189 msgid "Part cannot be sold to customers" msgstr "" +#: part/templates/part/detail.html:193 templates/js/table_filters.html:117 +msgid "Active" +msgstr "" + +#: part/templates/part/detail.html:196 +msgid "Part is active" +msgstr "" + +#: part/templates/part/detail.html:198 +msgid "Part is not active" +msgstr "" + #: part/templates/part/notes.html:13 part/templates/part/notes.html:29 msgid "Part Notes" msgstr "" @@ -2197,11 +2298,8 @@ msgstr "" msgid "New Parameter" msgstr "" -#: part/templates/part/params.html:20 -msgid "Name" -msgstr "" - -#: part/templates/part/params.html:21 +#: part/templates/part/params.html:21 stock/models.py:1252 +#: templates/js/stock.html:109 msgid "Value" msgstr "" @@ -2222,54 +2320,62 @@ msgid "Part List" msgstr "" #: part/templates/part/part_base.html:11 +msgid "This part is a virtual part" +msgstr "" + +#: part/templates/part/part_base.html:16 msgid "This part is a template part." msgstr "" -#: part/templates/part/part_base.html:13 -msgid "It is not a real part, but real parts can be based on this template." -msgstr "" - -#: part/templates/part/part_base.html:18 +#: part/templates/part/part_base.html:21 msgid "This part is a variant of" msgstr "" -#: part/templates/part/part_base.html:30 templates/js/company.html:125 -#: templates/js/part.html:158 +#: part/templates/part/part_base.html:33 templates/js/company.html:125 +#: templates/js/part.html:167 msgid "Inactive" msgstr "" -#: part/templates/part/part_base.html:38 +#: part/templates/part/part_base.html:41 msgid "Star this part" msgstr "" -#: part/templates/part/part_base.html:44 +#: part/templates/part/part_base.html:47 msgid "Show pricing information" msgstr "" -#: part/templates/part/part_base.html:101 +#: part/templates/part/part_base.html:104 msgid "Available Stock" msgstr "" -#: part/templates/part/part_base.html:107 +#: part/templates/part/part_base.html:110 msgid "In Stock" msgstr "" -#: part/templates/part/part_base.html:114 +#: part/templates/part/part_base.html:117 msgid "Allocated to Build Orders" msgstr "" -#: part/templates/part/part_base.html:121 +#: part/templates/part/part_base.html:124 msgid "Allocated to Sales Orders" msgstr "" -#: part/templates/part/part_base.html:143 +#: part/templates/part/part_base.html:146 msgid "Can Build" msgstr "" -#: part/templates/part/part_base.html:149 +#: part/templates/part/part_base.html:152 msgid "Underway" msgstr "" +#: part/templates/part/part_tests.html:8 +msgid "Part Test Templates" +msgstr "" + +#: part/templates/part/part_tests.html:14 +msgid "Add Test Template" +msgstr "" + #: part/templates/part/part_thumb.html:16 msgid "Select from existing images" msgstr "" @@ -2303,7 +2409,7 @@ msgid "Create New Part" msgstr "" #: part/templates/part/stock_count.html:7 templates/js/bom.html:203 -#: templates/js/part.html:218 +#: templates/js/part.html:227 msgid "No Stock" msgstr "" @@ -2335,18 +2441,22 @@ msgstr "" msgid "Variants" msgstr "" -#: part/templates/part/tabs.html:26 +#: part/templates/part/tabs.html:28 msgid "BOM" msgstr "" -#: part/templates/part/tabs.html:32 +#: part/templates/part/tabs.html:34 msgid "Used In" msgstr "" -#: part/templates/part/tabs.html:53 stock/templates/stock/tabs.html:5 +#: part/templates/part/tabs.html:57 stock/templates/stock/tabs.html:6 msgid "Tracking" msgstr "" +#: part/templates/part/tabs.html:64 stock/templates/stock/item_base.html:259 +msgid "Tests" +msgstr "" + #: part/templates/part/track.html:8 msgid "Part Tracking" msgstr "" @@ -2359,164 +2469,180 @@ msgstr "" msgid "INACTIVE" msgstr "" -#: part/views.py:74 +#: part/views.py:75 msgid "Add part attachment" msgstr "" -#: part/views.py:122 +#: part/views.py:124 templates/attachment_table.html:30 +msgid "Edit attachment" +msgstr "" + +#: part/views.py:128 msgid "Part attachment updated" msgstr "" -#: part/views.py:137 +#: part/views.py:143 msgid "Delete Part Attachment" msgstr "" -#: part/views.py:143 +#: part/views.py:149 msgid "Deleted part attachment" msgstr "" -#: part/views.py:151 -msgid "Set Part Category" +#: part/views.py:158 +msgid "Create Test Template" +msgstr "" + +#: part/views.py:185 +msgid "Edit Test Template" msgstr "" #: part/views.py:199 +msgid "Delete Test Template" +msgstr "" + +#: part/views.py:206 +msgid "Set Part Category" +msgstr "" + +#: part/views.py:254 #, python-brace-format msgid "Set category for {n} parts" msgstr "" -#: part/views.py:234 +#: part/views.py:289 msgid "Create Variant" msgstr "" -#: part/views.py:304 +#: part/views.py:358 msgid "Duplicate Part" msgstr "" -#: part/views.py:309 +#: part/views.py:363 msgid "Copied part" msgstr "" -#: part/views.py:420 +#: part/views.py:474 msgid "Create new part" msgstr "" -#: part/views.py:425 +#: part/views.py:479 msgid "Created new part" msgstr "" -#: part/views.py:599 +#: part/views.py:653 msgid "Part QR Code" msgstr "" -#: part/views.py:616 +#: part/views.py:670 msgid "Upload Part Image" msgstr "" -#: part/views.py:621 part/views.py:656 +#: part/views.py:675 part/views.py:710 msgid "Updated part image" msgstr "" -#: part/views.py:630 +#: part/views.py:684 msgid "Select Part Image" msgstr "" -#: part/views.py:659 +#: part/views.py:713 msgid "Part image not found" msgstr "" -#: part/views.py:670 +#: part/views.py:724 msgid "Edit Part Properties" msgstr "" -#: part/views.py:692 +#: part/views.py:746 msgid "Validate BOM" msgstr "" -#: part/views.py:854 +#: part/views.py:908 msgid "No BOM file provided" msgstr "" -#: part/views.py:1115 +#: part/views.py:1169 msgid "Enter a valid quantity" msgstr "" -#: part/views.py:1139 part/views.py:1142 +#: part/views.py:1193 part/views.py:1196 msgid "Select valid part" msgstr "" -#: part/views.py:1148 +#: part/views.py:1202 msgid "Duplicate part selected" msgstr "" -#: part/views.py:1176 +#: part/views.py:1230 msgid "Select a part" msgstr "" -#: part/views.py:1180 +#: part/views.py:1234 msgid "Specify quantity" msgstr "" -#: part/views.py:1396 +#: part/views.py:1450 msgid "Confirm Part Deletion" msgstr "" -#: part/views.py:1403 +#: part/views.py:1457 msgid "Part was deleted" msgstr "" -#: part/views.py:1412 +#: part/views.py:1466 msgid "Part Pricing" msgstr "" -#: part/views.py:1534 +#: part/views.py:1588 msgid "Create Part Parameter Template" msgstr "" -#: part/views.py:1542 +#: part/views.py:1596 msgid "Edit Part Parameter Template" msgstr "" -#: part/views.py:1549 +#: part/views.py:1603 msgid "Delete Part Parameter Template" msgstr "" -#: part/views.py:1557 +#: part/views.py:1611 msgid "Create Part Parameter" msgstr "" -#: part/views.py:1607 +#: part/views.py:1661 msgid "Edit Part Parameter" msgstr "" -#: part/views.py:1621 +#: part/views.py:1675 msgid "Delete Part Parameter" msgstr "" -#: part/views.py:1637 +#: part/views.py:1691 msgid "Edit Part Category" msgstr "" -#: part/views.py:1672 +#: part/views.py:1726 msgid "Delete Part Category" msgstr "" -#: part/views.py:1678 +#: part/views.py:1732 msgid "Part category was deleted" msgstr "" -#: part/views.py:1686 +#: part/views.py:1740 msgid "Create new part category" msgstr "" -#: part/views.py:1737 +#: part/views.py:1791 msgid "Create BOM item" msgstr "" -#: part/views.py:1803 +#: part/views.py:1857 msgid "Edit BOM item" msgstr "" -#: part/views.py:1851 +#: part/views.py:1905 msgid "Confim BOM item deletion" msgstr "" @@ -2536,228 +2662,354 @@ msgstr "" msgid "No matching data" msgstr "" -#: stock/forms.py:93 +#: report/models.py:167 +msgid "Template name" +msgstr "" + +#: report/models.py:173 +msgid "Report template file" +msgstr "" + +#: report/models.py:177 +msgid "Report template description" +msgstr "" + +#: report/models.py:221 +msgid "Part query filters (comma-separated list of key=value pairs)" +msgstr "" + +#: report/models.py:266 +msgid "Report asset file" +msgstr "" + +#: report/models.py:269 +msgid "Asset file description" +msgstr "" + +#: stock/forms.py:194 +msgid "Select test report template" +msgstr "" + +#: stock/forms.py:202 msgid "Include stock items in sub locations" msgstr "" -#: stock/forms.py:126 +#: stock/forms.py:235 msgid "Destination stock location" msgstr "" -#: stock/forms.py:132 +#: stock/forms.py:241 msgid "Confirm movement of stock items" msgstr "" -#: stock/forms.py:134 +#: stock/forms.py:243 msgid "Set the destination as the default location for selected parts" msgstr "" -#: stock/models.py:217 -#, python-brace-format -msgid "" -"A stock item with this serial number already exists for template part {part}" +#: stock/models.py:208 +msgid "StockItem with this serial number already exists" msgstr "" -#: stock/models.py:222 -msgid "A stock item with this serial number already exists" -msgstr "" - -#: stock/models.py:253 +#: stock/models.py:250 #, python-brace-format msgid "Part type ('{pf}') must be {pe}" msgstr "" -#: stock/models.py:263 stock/models.py:272 +#: stock/models.py:260 stock/models.py:269 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:264 +#: stock/models.py:261 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:280 -msgid "Stock item cannot be created for a template Part" -msgstr "" - -#: stock/models.py:289 +#: stock/models.py:282 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:326 +#: stock/models.py:314 msgid "Parent Stock Item" msgstr "" -#: stock/models.py:334 stock/templates/stock/item_base.html:108 +#: stock/models.py:322 stock/templates/stock/item_base.html:129 msgid "Base Part" msgstr "" -#: stock/models.py:335 +#: stock/models.py:323 msgid "Base part" msgstr "" -#: stock/models.py:345 +#: stock/models.py:332 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:350 stock/templates/stock/stock_app_base.html:7 +#: stock/models.py:337 stock/templates/stock/stock_app_base.html:7 msgid "Stock Location" msgstr "" -#: stock/models.py:353 +#: stock/models.py:340 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:358 +#: stock/models.py:345 msgid "Installed In" msgstr "" -#: stock/models.py:361 +#: stock/models.py:348 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:367 +#: stock/models.py:364 msgid "Serial number for this item" msgstr "" -#: stock/models.py:379 +#: stock/models.py:376 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:383 +#: stock/models.py:380 msgid "Stock Quantity" msgstr "" -#: stock/models.py:392 +#: stock/models.py:389 msgid "Source Build" msgstr "" -#: stock/models.py:394 +#: stock/models.py:391 msgid "Build for this stock item" msgstr "" -#: stock/models.py:401 +#: stock/models.py:398 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:404 +#: stock/models.py:401 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:410 +#: stock/models.py:407 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:417 +#: stock/models.py:414 msgid "Destination Build Order" msgstr "" -#: stock/models.py:430 +#: stock/models.py:427 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:440 stock/templates/stock/item_notes.html:13 -#: stock/templates/stock/item_notes.html:29 +#: stock/models.py:437 stock/templates/stock/item_notes.html:14 +#: stock/templates/stock/item_notes.html:30 msgid "Stock Item Notes" msgstr "" -#: stock/models.py:604 +#: stock/models.py:489 +msgid "Assigned to Customer" +msgstr "" + +#: stock/models.py:491 +msgid "Manually assigned to customer" +msgstr "" + +#: stock/models.py:656 +msgid "Part is not set as trackable" +msgstr "" + +#: stock/models.py:662 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:610 +#: stock/models.py:668 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({n})" msgstr "" -#: stock/models.py:613 stock/models.py:616 +#: stock/models.py:671 stock/models.py:674 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:619 +#: stock/models.py:677 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:629 +#: stock/models.py:687 msgid "Serial numbers already exist: " msgstr "" -#: stock/models.py:651 +#: stock/models.py:712 msgid "Add serial number" msgstr "" -#: stock/models.py:654 +#: stock/models.py:715 #, python-brace-format msgid "Serialized {n} items" msgstr "" -#: stock/models.py:751 +#: stock/models.py:826 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:960 +#: stock/models.py:1153 msgid "Tracking entry title" msgstr "" -#: stock/models.py:962 +#: stock/models.py:1155 msgid "Entry notes" msgstr "" -#: stock/models.py:964 +#: stock/models.py:1157 msgid "Link to external page for further information" msgstr "" -#: stock/templates/stock/item.html:12 +#: stock/models.py:1217 +msgid "Value must be provided for this test" +msgstr "" + +#: stock/models.py:1223 +msgid "Attachment must be uploaded for this test" +msgstr "" + +#: stock/models.py:1240 +msgid "Test" +msgstr "" + +#: stock/models.py:1241 +msgid "Test name" +msgstr "" + +#: stock/models.py:1246 +msgid "Result" +msgstr "" + +#: stock/models.py:1247 templates/js/table_filters.html:53 +msgid "Test result" +msgstr "" + +#: stock/models.py:1253 +msgid "Test output value" +msgstr "" + +#: stock/models.py:1259 +msgid "Attachment" +msgstr "" + +#: stock/models.py:1260 +msgid "Test result attachment" +msgstr "" + +#: stock/models.py:1266 +msgid "Test notes" +msgstr "" + +#: stock/templates/stock/item.html:11 msgid "Stock Tracking Information" msgstr "" +#: stock/templates/stock/item_attachments.html:10 +msgid "Stock Item Attachments" +msgstr "" + #: stock/templates/stock/item_base.html:20 -msgid "This stock item is allocated to Sales Order" +msgid "This stock item has not passed all required tests" msgstr "" #: stock/templates/stock/item_base.html:26 -msgid "This stock item is allocated to Build" +msgid "This stock item is allocated to Sales Order" msgstr "" #: stock/templates/stock/item_base.html:32 +msgid "This stock item is allocated to Build" +msgstr "" + +#: stock/templates/stock/item_base.html:38 msgid "" "This stock item is serialized - it has a unique serial number and the " "quantity cannot be adjusted." msgstr "" -#: stock/templates/stock/item_base.html:36 +#: stock/templates/stock/item_base.html:42 msgid "This stock item cannot be deleted as it has child items" msgstr "" -#: stock/templates/stock/item_base.html:40 +#: stock/templates/stock/item_base.html:46 msgid "" "This stock item will be automatically deleted when all stock is depleted." msgstr "" -#: stock/templates/stock/item_base.html:103 +#: stock/templates/stock/item_base.html:74 +msgid "Add to stock" +msgstr "" + +#: stock/templates/stock/item_base.html:77 +msgid "Take from stock" +msgstr "" + +#: stock/templates/stock/item_base.html:80 templates/stock_table.html:14 +msgid "Count stock" +msgstr "" + +#: stock/templates/stock/item_base.html:84 +msgid "Serialize stock" +msgstr "" + +#: stock/templates/stock/item_base.html:90 stock/views.py:232 +msgid "Assign to Customer" +msgstr "" + +#: stock/templates/stock/item_base.html:94 +msgid "Transfer stock" +msgstr "" + +#: stock/templates/stock/item_base.html:97 +msgid "Duplicate stock item" +msgstr "" + +#: stock/templates/stock/item_base.html:102 +msgid "Convert stock to variant" +msgstr "" + +#: stock/templates/stock/item_base.html:107 +msgid "Generate test report" +msgstr "" + +#: stock/templates/stock/item_base.html:111 +msgid "Edit stock item" +msgstr "" + +#: stock/templates/stock/item_base.html:115 +msgid "Delete stock item" +msgstr "" + +#: stock/templates/stock/item_base.html:124 msgid "Stock Item Details" msgstr "" -#: stock/templates/stock/item_base.html:116 +#: stock/templates/stock/item_base.html:144 msgid "Belongs To" msgstr "" -#: stock/templates/stock/item_base.html:141 +#: stock/templates/stock/item_base.html:166 +msgid "No location set" +msgstr "" + +#: stock/templates/stock/item_base.html:173 msgid "Unique Identifier" msgstr "" -#: stock/templates/stock/item_base.html:182 +#: stock/templates/stock/item_base.html:214 msgid "Parent Item" msgstr "" -#: stock/templates/stock/item_base.html:207 +#: stock/templates/stock/item_base.html:239 msgid "Last Updated" msgstr "" -#: stock/templates/stock/item_base.html:212 +#: stock/templates/stock/item_base.html:244 msgid "Last Stocktake" msgstr "" -#: stock/templates/stock/item_base.html:216 +#: stock/templates/stock/item_base.html:248 msgid "No stocktake performed" msgstr "" @@ -2769,6 +3021,22 @@ msgstr "" msgid "This stock item does not have any child items" msgstr "" +#: stock/templates/stock/item_tests.html:10 stock/templates/stock/tabs.html:13 +msgid "Test Data" +msgstr "" + +#: stock/templates/stock/item_tests.html:17 +msgid "Delete Test Data" +msgstr "" + +#: stock/templates/stock/item_tests.html:19 +msgid "Add Test Data" +msgstr "" + +#: stock/templates/stock/item_tests.html:21 +msgid "Test Report" +msgstr "" + #: stock/templates/stock/location.html:13 msgid "All stock items" msgstr "" @@ -2816,154 +3084,210 @@ msgstr "" msgid "Stock Locations" msgstr "" -#: stock/templates/stock/tabs.html:8 -msgid "Children" +#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:934 +msgid "Convert Stock Item" msgstr "" -#: stock/templates/stock/tabs.html:13 +#: stock/templates/stock/stockitem_convert.html:8 +msgid "This stock item is current an instance of " +msgstr "" + +#: stock/templates/stock/stockitem_convert.html:9 +msgid "It can be converted to one of the part variants listed below." +msgstr "" + +#: stock/templates/stock/stockitem_convert.html:14 +msgid "This action cannot be easily undone" +msgstr "" + +#: stock/templates/stock/tabs.html:21 msgid "Builds" msgstr "" -#: stock/views.py:117 +#: stock/templates/stock/tabs.html:38 +msgid "Children" +msgstr "" + +#: stock/views.py:113 msgid "Edit Stock Location" msgstr "" -#: stock/views.py:141 +#: stock/views.py:137 msgid "Stock Location QR code" msgstr "" -#: stock/views.py:156 +#: stock/views.py:155 +msgid "Add Stock Item Attachment" +msgstr "" + +#: stock/views.py:200 +msgid "Edit Stock Item Attachment" +msgstr "" + +#: stock/views.py:216 +msgid "Delete Stock Item Attachment" +msgstr "" + +#: stock/views.py:270 +msgid "Delete All Test Data" +msgstr "" + +#: stock/views.py:285 +msgid "Confirm test data deletion" +msgstr "" + +#: stock/views.py:305 +msgid "Add Test Result" +msgstr "" + +#: stock/views.py:342 +msgid "Edit Test Result" +msgstr "" + +#: stock/views.py:359 +msgid "Delete Test Result" +msgstr "" + +#: stock/views.py:370 +msgid "Select Test Report Template" +msgstr "" + +#: stock/views.py:384 +msgid "Select valid template" +msgstr "" + +#: stock/views.py:436 msgid "Stock Export Options" msgstr "" -#: stock/views.py:276 +#: stock/views.py:556 msgid "Stock Item QR Code" msgstr "" -#: stock/views.py:299 +#: stock/views.py:579 msgid "Adjust Stock" msgstr "" -#: stock/views.py:408 +#: stock/views.py:688 msgid "Move Stock Items" msgstr "" -#: stock/views.py:409 +#: stock/views.py:689 msgid "Count Stock Items" msgstr "" -#: stock/views.py:410 +#: stock/views.py:690 msgid "Remove From Stock" msgstr "" -#: stock/views.py:411 +#: stock/views.py:691 msgid "Add Stock Items" msgstr "" -#: stock/views.py:412 +#: stock/views.py:692 msgid "Delete Stock Items" msgstr "" -#: stock/views.py:440 +#: stock/views.py:720 msgid "Must enter integer value" msgstr "" -#: stock/views.py:445 +#: stock/views.py:725 msgid "Quantity must be positive" msgstr "" -#: stock/views.py:452 +#: stock/views.py:732 #, python-brace-format msgid "Quantity must not exceed {x}" msgstr "" -#: stock/views.py:460 +#: stock/views.py:740 msgid "Confirm stock adjustment" msgstr "" -#: stock/views.py:531 +#: stock/views.py:811 #, python-brace-format msgid "Added stock to {n} items" msgstr "" -#: stock/views.py:546 +#: stock/views.py:826 #, python-brace-format msgid "Removed stock from {n} items" msgstr "" -#: stock/views.py:559 +#: stock/views.py:839 #, python-brace-format msgid "Counted stock for {n} items" msgstr "" -#: stock/views.py:587 +#: stock/views.py:867 msgid "No items were moved" msgstr "" -#: stock/views.py:590 +#: stock/views.py:870 #, python-brace-format msgid "Moved {n} items to {dest}" msgstr "" -#: stock/views.py:609 +#: stock/views.py:889 #, python-brace-format msgid "Deleted {n} stock items" msgstr "" -#: stock/views.py:621 +#: stock/views.py:901 msgid "Edit Stock Item" msgstr "" -#: stock/views.py:657 +#: stock/views.py:961 msgid "Create new Stock Location" msgstr "" -#: stock/views.py:678 +#: stock/views.py:982 msgid "Serialize Stock" msgstr "" -#: stock/views.py:758 +#: stock/views.py:1074 msgid "Create new Stock Item" msgstr "" -#: stock/views.py:822 +#: stock/views.py:1167 msgid "Copy Stock Item" msgstr "" -#: stock/views.py:893 +#: stock/views.py:1240 msgid "Invalid quantity" msgstr "" -#: stock/views.py:896 +#: stock/views.py:1247 msgid "Invalid part selection" msgstr "" -#: stock/views.py:943 +#: stock/views.py:1296 #, python-brace-format msgid "Created {n} new stock items" msgstr "" -#: stock/views.py:960 stock/views.py:973 +#: stock/views.py:1315 stock/views.py:1331 msgid "Created new stock item" msgstr "" -#: stock/views.py:990 +#: stock/views.py:1350 msgid "Delete Stock Location" msgstr "" -#: stock/views.py:1003 +#: stock/views.py:1363 msgid "Delete Stock Item" msgstr "" -#: stock/views.py:1014 +#: stock/views.py:1374 msgid "Delete Stock Tracking Entry" msgstr "" -#: stock/views.py:1031 +#: stock/views.py:1391 msgid "Edit Stock Tracking Entry" msgstr "" -#: stock/views.py:1040 +#: stock/views.py:1400 msgid "Add Stock Tracking Entry" msgstr "" @@ -2975,6 +3299,10 @@ msgstr "" msgid "No results found" msgstr "" +#: templates/InvenTree/settings/part.html:9 +msgid "Part Parameter Templates" +msgstr "" + #: templates/InvenTree/settings/part.html:28 msgid "No part parameter templates found" msgstr "" @@ -3027,6 +3355,26 @@ msgstr "" msgid "Submit Bug Report" msgstr "" +#: templates/attachment_table.html:5 +msgid "Add Attachment" +msgstr "" + +#: templates/attachment_table.html:13 +msgid "File" +msgstr "" + +#: templates/attachment_table.html:14 +msgid "Comment" +msgstr "" + +#: templates/attachment_table.html:15 +msgid "Uploaded" +msgstr "" + +#: templates/attachment_table.html:33 +msgid "Delete attachment" +msgstr "" + #: templates/js/bom.html:143 msgid "Open subassembly" msgstr "" @@ -3071,11 +3419,11 @@ msgstr "" msgid "No supplier parts found" msgstr "" -#: templates/js/company.html:117 templates/js/part.html:136 +#: templates/js/company.html:117 templates/js/part.html:145 msgid "Template part" msgstr "" -#: templates/js/company.html:121 templates/js/part.html:140 +#: templates/js/company.html:121 templates/js/part.html:149 msgid "Assembled part" msgstr "" @@ -3087,7 +3435,7 @@ msgstr "" msgid "No purchase orders found" msgstr "" -#: templates/js/order.html:170 templates/js/stock.html:389 +#: templates/js/order.html:170 templates/js/stock.html:605 msgid "Date" msgstr "" @@ -3099,56 +3447,184 @@ msgstr "" msgid "Shipment Date" msgstr "" -#: templates/js/part.html:104 templates/js/stock.html:196 +#: templates/js/part.html:106 templates/js/stock.html:403 msgid "Select" msgstr "" -#: templates/js/part.html:144 +#: templates/js/part.html:153 msgid "Starred part" msgstr "" -#: templates/js/part.html:148 +#: templates/js/part.html:157 msgid "Salable part" msgstr "" -#: templates/js/part.html:187 +#: templates/js/part.html:196 msgid "No category" msgstr "" -#: templates/js/part.html:205 templates/table_filters.html:95 +#: templates/js/part.html:214 templates/js/table_filters.html:130 msgid "Low stock" msgstr "" -#: templates/js/part.html:214 +#: templates/js/part.html:223 msgid "Building" msgstr "" -#: templates/js/part.html:232 +#: templates/js/part.html:241 msgid "No parts found" msgstr "" -#: templates/js/stock.html:66 +#: templates/js/part.html:301 +msgid "YES" +msgstr "" + +#: templates/js/part.html:303 +msgid "NO" +msgstr "" + +#: templates/js/part.html:337 +msgid "No test templates matching query" +msgstr "" + +#: templates/js/part.html:387 templates/js/stock.html:62 +msgid "Edit test result" +msgstr "" + +#: templates/js/part.html:388 templates/js/stock.html:63 +msgid "Delete test result" +msgstr "" + +#: templates/js/part.html:394 +msgid "This test is defined for a parent part" +msgstr "" + +#: templates/js/stock.html:25 +msgid "PASS" +msgstr "" + +#: templates/js/stock.html:27 +msgid "FAIL" +msgstr "" + +#: templates/js/stock.html:32 +msgid "NO RESULT" +msgstr "" + +#: templates/js/stock.html:58 +msgid "Add test result" +msgstr "" + +#: templates/js/stock.html:76 +msgid "No test results found" +msgstr "" + +#: templates/js/stock.html:117 +msgid "Test Date" +msgstr "" + +#: templates/js/stock.html:258 msgid "No stock items matching query" msgstr "" -#: templates/js/stock.html:251 +#: templates/js/stock.html:355 templates/js/stock.html:370 +msgid "Undefined location" +msgstr "" + +#: templates/js/stock.html:467 msgid "StockItem has been allocated" msgstr "" -#: templates/js/stock.html:256 +#: templates/js/stock.html:472 msgid "StockItem is lost" msgstr "" -#: templates/js/stock.html:284 +#: templates/js/stock.html:500 msgid "No stock location set" msgstr "" -#: templates/js/stock.html:446 -msgid "User" +#: templates/js/stock.html:671 +msgid "No user information" msgstr "" -#: templates/js/stock.html:455 -msgid "No user information" +#: templates/js/table_filters.html:19 +msgid "Include sublocations" +msgstr "" + +#: templates/js/table_filters.html:20 +msgid "Include stock in sublocations" +msgstr "" + +#: templates/js/table_filters.html:24 +msgid "Active parts" +msgstr "" + +#: templates/js/table_filters.html:25 +msgid "Show stock for active parts" +msgstr "" + +#: templates/js/table_filters.html:29 templates/js/table_filters.html:30 +msgid "Stock status" +msgstr "" + +#: templates/js/table_filters.html:34 +msgid "Is allocated" +msgstr "" + +#: templates/js/table_filters.html:35 +msgid "Item has been alloacted" +msgstr "" + +#: templates/js/table_filters.html:38 +msgid "Serial number GTE" +msgstr "" + +#: templates/js/table_filters.html:39 +msgid "Serial number greater than or equal to" +msgstr "" + +#: templates/js/table_filters.html:42 +msgid "Serial number LTE" +msgstr "" + +#: templates/js/table_filters.html:43 +msgid "Serial number less than or equal to" +msgstr "" + +#: templates/js/table_filters.html:72 +msgid "Build status" +msgstr "" + +#: templates/js/table_filters.html:84 templates/js/table_filters.html:97 +msgid "Order status" +msgstr "" + +#: templates/js/table_filters.html:89 templates/js/table_filters.html:102 +msgid "Outstanding" +msgstr "" + +#: templates/js/table_filters.html:112 +msgid "Include subcategories" +msgstr "" + +#: templates/js/table_filters.html:113 +msgid "Include parts in subcategories" +msgstr "" + +#: templates/js/table_filters.html:118 +msgid "Show active parts" +msgstr "" + +#: templates/js/table_filters.html:126 +msgid "Stock available" +msgstr "" + +#: templates/js/table_filters.html:142 +msgid "Starred" +msgstr "" + +#: templates/js/table_filters.html:154 +msgid "Purchasable" msgstr "" #: templates/navbar.html:14 @@ -3195,10 +3671,6 @@ msgstr "" msgid "Remove stock" msgstr "" -#: templates/stock_table.html:14 -msgid "Count stock" -msgstr "" - #: templates/stock_table.html:15 msgid "Move stock" msgstr "" @@ -3210,71 +3682,3 @@ msgstr "" #: templates/stock_table.html:17 msgid "Delete Stock" msgstr "" - -#: templates/table_filters.html:21 -msgid "Include sublocations" -msgstr "" - -#: templates/table_filters.html:22 -msgid "Include stock in sublocations" -msgstr "" - -#: templates/table_filters.html:26 -msgid "Active parts" -msgstr "" - -#: templates/table_filters.html:27 -msgid "Show stock for active parts" -msgstr "" - -#: templates/table_filters.html:31 templates/table_filters.html:32 -msgid "Stock status" -msgstr "" - -#: templates/table_filters.html:36 -msgid "Is allocated" -msgstr "" - -#: templates/table_filters.html:37 -msgid "Item has been alloacted" -msgstr "" - -#: templates/table_filters.html:46 -msgid "Build status" -msgstr "" - -#: templates/table_filters.html:57 templates/table_filters.html:66 -msgid "Order status" -msgstr "" - -#: templates/table_filters.html:77 -msgid "Include subcategories" -msgstr "" - -#: templates/table_filters.html:78 -msgid "Include parts in subcategories" -msgstr "" - -#: templates/table_filters.html:82 -msgid "Active" -msgstr "" - -#: templates/table_filters.html:83 -msgid "Show active parts" -msgstr "" - -#: templates/table_filters.html:87 -msgid "Template" -msgstr "" - -#: templates/table_filters.html:91 -msgid "Stock available" -msgstr "" - -#: templates/table_filters.html:107 -msgid "Starred" -msgstr "" - -#: templates/table_filters.html:115 -msgid "Purchasable" -msgstr "" diff --git a/InvenTree/stock/templates/stock/item_base.html b/InvenTree/stock/templates/stock/item_base.html index 331b031e91..399da8d2b8 100644 --- a/InvenTree/stock/templates/stock/item_base.html +++ b/InvenTree/stock/templates/stock/item_base.html @@ -112,7 +112,7 @@ InvenTree | {% trans "Stock Item" %} - {{ item }} {% if item.can_delete %} - {% endif %}