diff --git a/InvenTree/locale/de/LC_MESSAGES/django.po b/InvenTree/locale/de/LC_MESSAGES/django.po
index 9b3256641a..b07f2fc0be 100644
--- a/InvenTree/locale/de/LC_MESSAGES/django.po
+++ b/InvenTree/locale/de/LC_MESSAGES/django.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-05-12 00:59+0000\n"
-"PO-Revision-Date: 2021-05-12 10:55\n"
+"POT-Creation-Date: 2021-05-12 12:29+0000\n"
+"PO-Revision-Date: 2021-05-12 13:05\n"
"Last-Translator: \n"
"Language-Team: German\n"
"Language: de_DE\n"
@@ -171,23 +171,23 @@ msgstr "Beschreibung (optional)"
msgid "parent"
msgstr "Eltern"
-#: InvenTree/settings.py:491
+#: InvenTree/settings.py:496
msgid "English"
msgstr "Englisch"
-#: InvenTree/settings.py:492
+#: InvenTree/settings.py:497
msgid "French"
msgstr "Französisch"
-#: InvenTree/settings.py:493
+#: InvenTree/settings.py:498
msgid "German"
msgstr "Deutsch"
-#: InvenTree/settings.py:494
+#: InvenTree/settings.py:499
msgid "Polish"
msgstr "Polnisch"
-#: InvenTree/settings.py:495
+#: InvenTree/settings.py:500
msgid "Turkish"
msgstr "Türkisch"
@@ -466,6 +466,7 @@ msgstr "Zieldatum für Bauauftrag-Fertigstellung."
#: company/forms.py:176 company/templates/company/supplier_part_pricing.html:77
#: order/forms.py:188 order/forms.py:205 order/forms.py:240 order/forms.py:262
#: order/forms.py:279 order/models.py:614 order/models.py:815
+#: order/templates/order/order_wizard/match_parts.html:29
#: order/templates/order/order_wizard/select_parts.html:32
#: order/templates/order/purchase_order_detail.html:175
#: order/templates/order/sales_order_detail.html:70
@@ -890,7 +891,7 @@ msgstr "Benötigte Teile bestellen"
#: build/templates/build/allocate.html:30
#: company/templates/company/detail_manufacturer_part.html:33
-#: company/templates/company/detail_supplier_part.html:32 order/views.py:797
+#: company/templates/company/detail_supplier_part.html:32 order/views.py:986
#: part/templates/part/category.html:127
msgid "Order Parts"
msgstr "Teile bestellen"
@@ -1428,27 +1429,60 @@ msgstr "Bauobjekt aktualisiert"
msgid "Add Build Order Attachment"
msgstr "Bauauftrags-Anhang hinzufügen"
-#: build/views.py:1083 order/views.py:112 order/views.py:164 part/views.py:172
+#: build/views.py:1083 order/views.py:115 order/views.py:167 part/views.py:172
#: stock/views.py:277
msgid "Added attachment"
msgstr "Anhang hinzugefügt"
-#: build/views.py:1119 order/views.py:191 order/views.py:212
+#: build/views.py:1119 order/views.py:194 order/views.py:215
msgid "Edit Attachment"
msgstr "Anhang bearbeiten"
-#: build/views.py:1129 order/views.py:195 order/views.py:216
+#: build/views.py:1129 order/views.py:198 order/views.py:219
msgid "Attachment updated"
msgstr "Anhang aktualisiert"
-#: build/views.py:1139 order/views.py:231 order/views.py:245
+#: build/views.py:1139 order/views.py:234 order/views.py:248
msgid "Delete Attachment"
msgstr "Anhang löschen"
-#: build/views.py:1144 order/views.py:237 order/views.py:251 stock/views.py:333
+#: build/views.py:1144 order/views.py:240 order/views.py:254 stock/views.py:333
msgid "Deleted attachment"
msgstr "Anhang gelöscht"
+#: common/files.py:64
+msgid "Unsupported file format: {ext.upper()}"
+msgstr "Dateiformat nicht unterstützt: {ext.upper()}"
+
+#: common/files.py:69
+msgid "Error reading file (invalid format)"
+msgstr "Fehler beim Lesen der Datei (ungültiges Format)"
+
+#: common/files.py:71
+msgid "Error reading file (incorrect dimension)"
+msgstr "Fehler beim Lesen der Datei (falsche Größe)"
+
+#: common/files.py:73
+msgid "Error reading file (data could be corrupted)"
+msgstr "Fehler beim Lesen der Datei (Daten könnten beschädigt sein)"
+
+#: common/forms.py:38 templates/attachment_table.html:15
+msgid "File"
+msgstr "Datei"
+
+#: common/forms.py:39
+msgid "Select file to upload"
+msgstr "Datei zum Hochladen auswählen"
+
+#: common/forms.py:54
+msgid "{name.title()} File"
+msgstr "{name.title()} Datei"
+
+#: common/forms.py:55
+#, python-brace-format
+msgid "Select {name} file to upload"
+msgstr "{name} Datei zum Hochladen auswählen"
+
#: common/models.py:58
msgid "InvenTree Instance Name"
msgstr "InvenTree Instanzname"
@@ -1801,18 +1835,36 @@ msgstr "Standard"
msgid "Current value"
msgstr "Aktueller Wert"
-#: common/views.py:25
+#: common/views.py:32
msgid "Change Setting"
msgstr "Einstellungen ändern"
-#: common/views.py:94
+#: common/views.py:101
msgid "Supplied value is not allowed"
msgstr "Angegebener Wert nicht erlaubt"
-#: common/views.py:103
+#: common/views.py:110
msgid "Supplied value must be a boolean"
msgstr "Angegebener Wert muss ein Wahrheitswert sein"
+#: common/views.py:184 order/templates/order/order_wizard/po_upload.html:42
+#: order/views.py:582 part/templates/part/bom_upload/upload_file.html:27
+msgid "Upload File"
+msgstr "Datei hochgeladen"
+
+#: common/views.py:185 order/templates/order/order_wizard/match_fields.html:52
+#: order/views.py:583 part/templates/part/bom_upload/select_fields.html:58
+msgid "Match Fields"
+msgstr "Übereinstimmende Felder"
+
+#: common/views.py:186
+msgid "Match Items"
+msgstr "Positionen zuordnen"
+
+#: common/views.py:479
+msgid "Fields matching failed"
+msgstr "Felder zuteilen fehlgeschlagen"
+
#: company/forms.py:38 company/models.py:142
#: company/templates/company/detail.html:42
msgid "Currency"
@@ -1950,7 +2002,7 @@ msgstr "Produziert diese Firma Teile?"
msgid "Base Part"
msgstr "Basisteil"
-#: company/models.py:309 company/models.py:460 order/views.py:1398
+#: company/models.py:309 company/models.py:460 order/views.py:1587
msgid "Select part"
msgstr "Teil auswählen"
@@ -2073,7 +2125,7 @@ msgstr "Neues Bild hochladen"
msgid "Download image from URL"
msgstr "Bild von URL herunterladen"
-#: company/templates/company/company_base.html:46 order/views.py:308
+#: company/templates/company/company_base.html:46 order/views.py:311
msgid "Create Purchase Order"
msgstr "Bestellung anlegen"
@@ -2956,6 +3008,75 @@ msgstr "Nachdem diese Bestellung plaziert ist können die Positionen nicht läng
msgid "Order Notes"
msgstr "Notizen zur Bestellung"
+#: order/templates/order/order_wizard/match_fields.html:9
+#: part/templates/part/bom_upload/select_fields.html:21
+msgid "Missing selections for the following required columns"
+msgstr "Es fehlt eine Auswahl für die folgende benötigte Spalte"
+
+#: order/templates/order/order_wizard/match_fields.html:20
+msgid "Duplicate selections found, see below. Fix them then retry submitting."
+msgstr "Doppelte Auswahlen gefunden, siehe unten. Reparieren und erneut versuchen."
+
+#: order/templates/order/order_wizard/match_fields.html:27
+#: order/templates/order/order_wizard/match_parts.html:18
+#: order/templates/order/order_wizard/po_upload.html:40
+msgid "Previous Step"
+msgstr "Vorheriger Schritt"
+
+#: order/templates/order/order_wizard/match_fields.html:29
+#: order/templates/order/order_wizard/match_parts.html:20
+#: part/templates/part/bom_upload/select_fields.html:32
+msgid "Submit Selections"
+msgstr "Auswahl übertragen"
+
+#: order/templates/order/order_wizard/match_fields.html:35
+#: part/templates/part/bom_upload/select_fields.html:41
+msgid "File Fields"
+msgstr "Datei-Felder"
+
+#: order/templates/order/order_wizard/match_fields.html:42
+#: part/templates/part/bom_upload/select_fields.html:47
+msgid "Remove column"
+msgstr "Spalte entfernen"
+
+#: order/templates/order/order_wizard/match_fields.html:60
+msgid "Duplicate selection"
+msgstr "Auswahl duplizieren"
+
+#: order/templates/order/order_wizard/match_fields.html:71
+#: order/templates/order/order_wizard/match_parts.html:51
+#: part/templates/part/bom_upload/select_fields.html:76
+#: part/templates/part/bom_upload/select_parts.html:58
+msgid "Remove row"
+msgstr "Zeile entfernen"
+
+#: order/templates/order/order_wizard/match_parts.html:11
+#: part/templates/part/bom_upload/select_parts.html:21
+msgid "Errors exist in the submitted data"
+msgstr "Fehler in den übermittelten Daten"
+
+#: order/templates/order/order_wizard/match_parts.html:27
+#: part/templates/part/bom_upload/select_parts.html:39
+msgid "Row"
+msgstr "Zeile"
+
+#: order/templates/order/order_wizard/match_parts.html:28
+msgid "Select Supplier Part"
+msgstr "Zulieferer-Teil auswählen"
+
+#: order/templates/order/order_wizard/po_upload.html:11
+msgid "Upload File for Purchase Order"
+msgstr "Datei zur Bestellung hochladen"
+
+#: order/templates/order/order_wizard/po_upload.html:18
+#, python-format
+msgid "Step %(step)s of %(count)s"
+msgstr "Schritt %(step)s von %(count)s"
+
+#: order/templates/order/order_wizard/po_upload.html:48
+msgid "Order is already processed. Files cannot be uploaded."
+msgstr "Bestellung ist bereits verarbeitet. Dateien können nicht hochgeladen werden."
+
#: order/templates/order/order_wizard/select_parts.html:9
msgid "Step 1 of 2 - Select Part Suppliers"
msgstr "Schritt 1 von 2 - Zulieferer auswählen"
@@ -3028,8 +3149,8 @@ msgid "Purchase Order Items"
msgstr "Bestellungs-Positionen"
#: order/templates/order/purchase_order_detail.html:24
-#: order/templates/order/sales_order_detail.html:22 order/views.py:1122
-#: order/views.py:1205
+#: order/templates/order/sales_order_detail.html:22 order/views.py:1311
+#: order/views.py:1394
msgid "Add Line Item"
msgstr "Position hinzufügen"
@@ -3238,181 +3359,185 @@ msgstr "Auftrags-Anhänge"
msgid "Are you sure you wish to delete this line item?"
msgstr "Sind Sie sicher, dass Sie diese Position löschen möchten?"
-#: order/views.py:101
+#: order/views.py:104
msgid "Add Purchase Order Attachment"
msgstr "Bestellungs-Anhang hinzufügen"
-#: order/views.py:151
+#: order/views.py:154
msgid "Add Sales Order Attachment"
msgstr "Auftrags-Anhang hinzufügen"
-#: order/views.py:343
+#: order/views.py:346
msgid "Create Sales Order"
msgstr "Auftrag anlegen"
-#: order/views.py:378
+#: order/views.py:381
msgid "Edit Purchase Order"
msgstr "Bestellung bearbeiten"
-#: order/views.py:398
+#: order/views.py:401
msgid "Edit Sales Order"
msgstr "Auftrag bearbeiten"
-#: order/views.py:414
+#: order/views.py:417
msgid "Cancel Order"
msgstr "Bestellung stornieren"
-#: order/views.py:423 order/views.py:449
+#: order/views.py:426 order/views.py:452
msgid "Confirm order cancellation"
msgstr "Bestellstornierung bestätigen"
-#: order/views.py:426 order/views.py:452
+#: order/views.py:429 order/views.py:455
msgid "Order cannot be cancelled"
msgstr "Bestellung kann nicht verworfen werden"
-#: order/views.py:440
+#: order/views.py:443
msgid "Cancel sales order"
msgstr "Auftrag stornieren"
-#: order/views.py:466
+#: order/views.py:469
msgid "Issue Order"
msgstr "Bestellung aufgeben"
-#: order/views.py:475
+#: order/views.py:478
msgid "Confirm order placement"
msgstr "Bestellungstätigung bestätigen"
-#: order/views.py:485
+#: order/views.py:488
msgid "Purchase order issued"
msgstr "Bestellung plaziert"
-#: order/views.py:496
+#: order/views.py:499
msgid "Complete Order"
msgstr "Auftrag fertigstellen"
-#: order/views.py:512
+#: order/views.py:515
msgid "Confirm order completion"
msgstr "Fertigstellung bestätigen"
-#: order/views.py:523
+#: order/views.py:526
msgid "Purchase order completed"
msgstr "Bestellung als vollständig markieren"
-#: order/views.py:533
+#: order/views.py:536
msgid "Ship Order"
msgstr "Versenden"
-#: order/views.py:549
+#: order/views.py:552
msgid "Confirm order shipment"
msgstr "Versand bestätigen"
-#: order/views.py:555
+#: order/views.py:558
msgid "Could not ship order"
msgstr "Versand fehlgeschlagen"
-#: order/views.py:609
+#: order/views.py:584
+msgid "Match Supplier Parts"
+msgstr "Zuliefererteile zuordnen"
+
+#: order/views.py:798
msgid "Receive Parts"
msgstr "Teile empfangen"
-#: order/views.py:679
+#: order/views.py:868
msgid "Items received"
msgstr "Anzahl empfangener Positionen"
-#: order/views.py:693
+#: order/views.py:882
msgid "No destination set"
msgstr "Kein Ziel gesetzt"
-#: order/views.py:738
+#: order/views.py:927
msgid "Error converting quantity to number"
msgstr "Fehler beim Konvertieren zu Zahl"
-#: order/views.py:744
+#: order/views.py:933
msgid "Receive quantity less than zero"
msgstr "Anzahl kleiner null empfangen"
-#: order/views.py:750
+#: order/views.py:939
msgid "No lines specified"
msgstr "Keine Zeilen angegeben"
-#: order/views.py:1071
+#: order/views.py:1260
#, python-brace-format
msgid "Ordered {n} parts"
msgstr "{n} Teile bestellt"
-#: order/views.py:1131
+#: order/views.py:1320
msgid "Supplier part must be specified"
msgstr "Zuliefererteil muss ausgewählt werden"
-#: order/views.py:1137
+#: order/views.py:1326
msgid "Supplier must match for Part and Order"
msgstr "Zulieferer muss zu Teil und Bestellung passen"
-#: order/views.py:1268 order/views.py:1286
+#: order/views.py:1457 order/views.py:1475
msgid "Edit Line Item"
msgstr "Position bearbeiten"
-#: order/views.py:1302 order/views.py:1314
+#: order/views.py:1491 order/views.py:1503
msgid "Delete Line Item"
msgstr "Position löschen"
-#: order/views.py:1307 order/views.py:1319
+#: order/views.py:1496 order/views.py:1508
msgid "Deleted line item"
msgstr "Position gelöscht"
-#: order/views.py:1332
+#: order/views.py:1521
msgid "Allocate Serial Numbers"
msgstr "Seriennummern zuweisen"
-#: order/views.py:1377
+#: order/views.py:1566
#, python-brace-format
msgid "Allocated {n} items"
msgstr "{n} Positionen zugeordnet"
-#: order/views.py:1393
+#: order/views.py:1582
msgid "Select line item"
msgstr "Position auswählen"
-#: order/views.py:1424
+#: order/views.py:1613
#, python-brace-format
msgid "No matching item for serial {serial}"
msgstr "Kein passends Teil für Seriennummer {serial} gefunden"
-#: order/views.py:1434
+#: order/views.py:1623
#, python-brace-format
msgid "{serial} is not in stock"
msgstr "{serial} ist nicht auf Lager"
-#: order/views.py:1442
+#: order/views.py:1631
#, python-brace-format
msgid "{serial} already allocated to an order"
msgstr "{serial} bereits einem Auftrag zugeordnet"
-#: order/views.py:1496
+#: order/views.py:1685
msgid "Allocate Stock to Order"
msgstr "Lagerbestand dem Auftrag zuweisen"
-#: order/views.py:1570
+#: order/views.py:1759
msgid "Edit Allocation Quantity"
msgstr "Zuordnung bearbeiten"
-#: order/views.py:1585
+#: order/views.py:1774
msgid "Remove allocation"
msgstr "Zuordnung entfernen"
-#: order/views.py:1657
+#: order/views.py:1846
msgid "Sales order not found"
msgstr "Auftrag nicht gefunden"
-#: order/views.py:1663
+#: order/views.py:1852
msgid "Price not found"
msgstr "Preis nicht gefunden"
-#: order/views.py:1666
+#: order/views.py:1855
#, python-brace-format
msgid "Updated {part} unit-price to {price}"
msgstr "Stückpreis für {part} auf {price} aktualisiert"
-#: order/views.py:1671
+#: order/views.py:1860
#, python-brace-format
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr "{part} Stückpreis auf {price} und Menge auf {qty} aktualisiert"
@@ -4050,51 +4175,18 @@ msgstr "Stückliste hochladen"
msgid "Step 2 - Select Fields"
msgstr "Schritt 2 - Felder auswählen"
-#: part/templates/part/bom_upload/select_fields.html:21
-msgid "Missing selections for the following required columns"
-msgstr "Es fehlt eine Auswahl für die folgende benötigte Spalte"
-
-#: part/templates/part/bom_upload/select_fields.html:32
-msgid "Submit Selections"
-msgstr "Auswahl übertragen"
-
-#: part/templates/part/bom_upload/select_fields.html:41
-msgid "File Fields"
-msgstr "Datei-Felder"
-
-#: part/templates/part/bom_upload/select_fields.html:47
-msgid "Remove column"
-msgstr "Spalte entfernen"
-
-#: part/templates/part/bom_upload/select_fields.html:58
-msgid "Match Fields"
-msgstr "Übereinstimmende Felder"
-
#: part/templates/part/bom_upload/select_fields.html:68
msgid "Duplicate column selection"
msgstr "Spalte doppelt ausgewählt"
-#: part/templates/part/bom_upload/select_fields.html:76
-#: part/templates/part/bom_upload/select_parts.html:58
-msgid "Remove row"
-msgstr "Zeile entfernen"
-
#: part/templates/part/bom_upload/select_parts.html:16
msgid "Step 3 - Select Parts"
msgstr "Schritt 3 - Teile auswählen"
-#: part/templates/part/bom_upload/select_parts.html:21
-msgid "Errors exist in the submitted data"
-msgstr "Fehler in den übermittelten Daten"
-
#: part/templates/part/bom_upload/select_parts.html:27
msgid "Submit BOM"
msgstr "Stückliste abschicken"
-#: part/templates/part/bom_upload/select_parts.html:39
-msgid "Row"
-msgstr "Zeile"
-
#: part/templates/part/bom_upload/select_parts.html:40
#: part/templates/part/bom_upload/select_parts.html:69
msgid "Select Part"
@@ -4125,10 +4217,6 @@ msgstr "Vorlage für Stückliste"
msgid "Each part must already exist in the database"
msgstr "Jedes Teil muss bereits in der Datenbank bestehen"
-#: part/templates/part/bom_upload/upload_file.html:27
-msgid "Upload File"
-msgstr "Datei hochgeladen"
-
#: part/templates/part/bom_validate.html:6
#, python-format
msgid "Confirm that the Bill of Materials (BOM) is valid for:
%(part)s"
@@ -6180,10 +6268,6 @@ msgstr "Schliessen"
msgid "Add Attachment"
msgstr "Anhang hinzufügen"
-#: templates/attachment_table.html:15
-msgid "File"
-msgstr "Datei"
-
#: templates/attachment_table.html:17
msgid "Uploaded"
msgstr "Hochgeladen"