diff --git a/InvenTree/locale/de/LC_MESSAGES/django.po b/InvenTree/locale/de/LC_MESSAGES/django.po
index 283730476f..4401c0e83d 100644
--- a/InvenTree/locale/de/LC_MESSAGES/django.po
+++ b/InvenTree/locale/de/LC_MESSAGES/django.po
@@ -2,7 +2,7 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-05-12 00:59+0000\n"
+"POT-Creation-Date: 2021-05-12 12:19+0000\n"
"PO-Revision-Date: 2021-05-10 03:00\n"
"Last-Translator: \n"
"Language-Team: German\n"
@@ -171,23 +171,23 @@ msgstr "Beschreibung (optional)"
msgid "parent"
msgstr "Eltern"
-#: InvenTree/settings.py:491
+#: InvenTree/settings.py:492
msgid "English"
msgstr "Englisch"
-#: InvenTree/settings.py:492
+#: InvenTree/settings.py:493
msgid "French"
msgstr "Französisch"
-#: InvenTree/settings.py:493
+#: InvenTree/settings.py:494
msgid "German"
msgstr "Deutsch"
-#: InvenTree/settings.py:494
+#: InvenTree/settings.py:495
msgid "Polish"
msgstr "Polnisch"
-#: InvenTree/settings.py:495
+#: InvenTree/settings.py:496
msgid "Turkish"
msgstr "Türkisch"
@@ -500,6 +500,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
@@ -924,7 +925,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"
@@ -1462,27 +1463,71 @@ 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
+#, fuzzy
+#| msgid "Unsupported file format: {f}"
+msgid "Unsupported file format: {ext.upper()}"
+msgstr "Nicht unterstütztes Dateiformat: {f}"
+
+#: common/files.py:69
+#, fuzzy
+#| msgid "Error reading BOM file (invalid data)"
+msgid "Error reading file (invalid format)"
+msgstr "Fehler beim Lesen der Stückliste (ungültige Daten)"
+
+#: common/files.py:71
+#, fuzzy
+#| msgid "Error reading BOM file (incorrect row size)"
+msgid "Error reading file (incorrect dimension)"
+msgstr "Fehler beim Lesen der Stückliste (ungültige Zeilengröße)"
+
+#: common/files.py:73
+#, fuzzy
+#| msgid "Error reading BOM file (invalid data)"
+msgid "Error reading file (data could be corrupted)"
+msgstr "Fehler beim Lesen der Stückliste (ungültige Daten)"
+
+#: common/forms.py:38 templates/attachment_table.html:15
+msgid "File"
+msgstr "Datei"
+
+#: common/forms.py:39
+#, fuzzy
+#| msgid "Select BOM file to upload"
+msgid "Select file to upload"
+msgstr "Stücklisten-Datei zum Upload auswählen"
+
+#: common/forms.py:54
+msgid "{name.title()} File"
+msgstr ""
+
+#: common/forms.py:55
+#, fuzzy, python-brace-format
+#| msgid "Select BOM file to upload"
+msgid "Select {name} file to upload"
+msgstr "Stücklisten-Datei zum Upload auswählen"
+
#: common/models.py:58
msgid "InvenTree Instance Name"
msgstr "InvenTree Instanzname"
@@ -1835,18 +1880,40 @@ 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
+#, fuzzy
+#| msgid "Stock Items"
+msgid "Match Items"
+msgstr "Teilbestand"
+
+#: common/views.py:479
+#, fuzzy
+#| msgid "No builds matching query"
+msgid "Fields matching failed"
+msgstr "Keine Bauaufträge passen zur Anfrage"
+
#: company/forms.py:38 company/models.py:142
#: company/templates/company/detail.html:42
msgid "Currency"
@@ -1984,7 +2051,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"
@@ -2107,7 +2174,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"
@@ -2992,6 +3059,81 @@ 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 ""
+
+#: 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 ""
+
+#: 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
+#, fuzzy
+#| msgid "Duplicate column selection"
+msgid "Duplicate selection"
+msgstr "Spalte doppelt ausgewählt"
+
+#: 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
+#, fuzzy
+#| msgid "Delete Supplier Part"
+msgid "Select Supplier Part"
+msgstr "Zuliefererteil entfernen"
+
+#: order/templates/order/order_wizard/po_upload.html:11
+#, fuzzy
+#| msgid "Edit Purchase Order"
+msgid "Upload File for Purchase Order"
+msgstr "Bestellung bearbeiten"
+
+#: order/templates/order/order_wizard/po_upload.html:18
+#, python-format
+msgid "Step %(step)s of %(count)s"
+msgstr ""
+
+#: order/templates/order/order_wizard/po_upload.html:48
+msgid "Order is already processed. Files cannot be uploaded."
+msgstr ""
+
#: 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"
@@ -3064,8 +3206,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"
@@ -3274,181 +3416,187 @@ 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
+#, fuzzy
+#| msgid "Supplier Parts"
+msgid "Match Supplier Parts"
+msgstr "Zuliefererteile"
+
+#: 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"
@@ -4086,51 +4234,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"
@@ -4161,10 +4276,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"
@@ -6220,10 +6331,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"
diff --git a/InvenTree/locale/en/LC_MESSAGES/django.po b/InvenTree/locale/en/LC_MESSAGES/django.po
index 13edbb1153..30054e2429 100644
--- a/InvenTree/locale/en/LC_MESSAGES/django.po
+++ b/InvenTree/locale/en/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-05-12 00:59+0000\n"
+"POT-Creation-Date: 2021-05-12 12:19+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
@@ -172,23 +172,23 @@ msgstr ""
msgid "parent"
msgstr ""
-#: InvenTree/settings.py:491
+#: InvenTree/settings.py:492
msgid "English"
msgstr ""
-#: InvenTree/settings.py:492
+#: InvenTree/settings.py:493
msgid "French"
msgstr ""
-#: InvenTree/settings.py:493
+#: InvenTree/settings.py:494
msgid "German"
msgstr ""
-#: InvenTree/settings.py:494
+#: InvenTree/settings.py:495
msgid "Polish"
msgstr ""
-#: InvenTree/settings.py:495
+#: InvenTree/settings.py:496
msgid "Turkish"
msgstr ""
@@ -467,6 +467,7 @@ msgstr ""
#: 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
@@ -891,7 +892,7 @@ msgstr ""
#: 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 ""
@@ -1429,27 +1430,60 @@ msgstr ""
msgid "Add Build Order Attachment"
msgstr ""
-#: 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 ""
-#: 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 ""
-#: 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 ""
-#: 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 ""
-#: 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 ""
+#: common/files.py:64
+msgid "Unsupported file format: {ext.upper()}"
+msgstr ""
+
+#: common/files.py:69
+msgid "Error reading file (invalid format)"
+msgstr ""
+
+#: common/files.py:71
+msgid "Error reading file (incorrect dimension)"
+msgstr ""
+
+#: common/files.py:73
+msgid "Error reading file (data could be corrupted)"
+msgstr ""
+
+#: common/forms.py:38 templates/attachment_table.html:15
+msgid "File"
+msgstr ""
+
+#: common/forms.py:39
+msgid "Select file to upload"
+msgstr ""
+
+#: common/forms.py:54
+msgid "{name.title()} File"
+msgstr ""
+
+#: common/forms.py:55
+#, python-brace-format
+msgid "Select {name} file to upload"
+msgstr ""
+
#: common/models.py:58
msgid "InvenTree Instance Name"
msgstr ""
@@ -1802,18 +1836,36 @@ msgstr ""
msgid "Current value"
msgstr ""
-#: common/views.py:25
+#: common/views.py:32
msgid "Change Setting"
msgstr ""
-#: common/views.py:94
+#: common/views.py:101
msgid "Supplied value is not allowed"
msgstr ""
-#: common/views.py:103
+#: common/views.py:110
msgid "Supplied value must be a boolean"
msgstr ""
+#: common/views.py:184 order/templates/order/order_wizard/po_upload.html:42
+#: order/views.py:582 part/templates/part/bom_upload/upload_file.html:27
+msgid "Upload File"
+msgstr ""
+
+#: 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 ""
+
+#: common/views.py:186
+msgid "Match Items"
+msgstr ""
+
+#: common/views.py:479
+msgid "Fields matching failed"
+msgstr ""
+
#: company/forms.py:38 company/models.py:142
#: company/templates/company/detail.html:42
msgid "Currency"
@@ -1951,7 +2003,7 @@ msgstr ""
msgid "Base Part"
msgstr ""
-#: 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 ""
@@ -2074,7 +2126,7 @@ msgstr ""
msgid "Download image from URL"
msgstr ""
-#: 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 ""
@@ -2957,6 +3009,75 @@ msgstr ""
msgid "Order Notes"
msgstr ""
+#: order/templates/order/order_wizard/match_fields.html:9
+#: part/templates/part/bom_upload/select_fields.html:21
+msgid "Missing selections for the following required columns"
+msgstr ""
+
+#: order/templates/order/order_wizard/match_fields.html:20
+msgid "Duplicate selections found, see below. Fix them then retry submitting."
+msgstr ""
+
+#: 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 ""
+
+#: 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 ""
+
+#: order/templates/order/order_wizard/match_fields.html:35
+#: part/templates/part/bom_upload/select_fields.html:41
+msgid "File Fields"
+msgstr ""
+
+#: order/templates/order/order_wizard/match_fields.html:42
+#: part/templates/part/bom_upload/select_fields.html:47
+msgid "Remove column"
+msgstr ""
+
+#: order/templates/order/order_wizard/match_fields.html:60
+msgid "Duplicate selection"
+msgstr ""
+
+#: 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 ""
+
+#: 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 ""
+
+#: order/templates/order/order_wizard/match_parts.html:27
+#: part/templates/part/bom_upload/select_parts.html:39
+msgid "Row"
+msgstr ""
+
+#: order/templates/order/order_wizard/match_parts.html:28
+msgid "Select Supplier Part"
+msgstr ""
+
+#: order/templates/order/order_wizard/po_upload.html:11
+msgid "Upload File for Purchase Order"
+msgstr ""
+
+#: order/templates/order/order_wizard/po_upload.html:18
+#, python-format
+msgid "Step %(step)s of %(count)s"
+msgstr ""
+
+#: order/templates/order/order_wizard/po_upload.html:48
+msgid "Order is already processed. Files cannot be uploaded."
+msgstr ""
+
#: order/templates/order/order_wizard/select_parts.html:9
msgid "Step 1 of 2 - Select Part Suppliers"
msgstr ""
@@ -3029,8 +3150,8 @@ msgid "Purchase Order Items"
msgstr ""
#: order/templates/order/purchase_order_detail.html:24
-#: order/templates/order/sales_order_detail.html:22 order/views.py: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 ""
@@ -3239,181 +3360,185 @@ msgstr ""
msgid "Are you sure you wish to delete this line item?"
msgstr ""
-#: order/views.py:101
+#: order/views.py:104
msgid "Add Purchase Order Attachment"
msgstr ""
-#: order/views.py:151
+#: order/views.py:154
msgid "Add Sales Order Attachment"
msgstr ""
-#: order/views.py:343
+#: order/views.py:346
msgid "Create Sales Order"
msgstr ""
-#: order/views.py:378
+#: order/views.py:381
msgid "Edit Purchase Order"
msgstr ""
-#: order/views.py:398
+#: order/views.py:401
msgid "Edit Sales Order"
msgstr ""
-#: order/views.py:414
+#: order/views.py:417
msgid "Cancel Order"
msgstr ""
-#: order/views.py:423 order/views.py:449
+#: order/views.py:426 order/views.py:452
msgid "Confirm order cancellation"
msgstr ""
-#: order/views.py:426 order/views.py:452
+#: order/views.py:429 order/views.py:455
msgid "Order cannot be cancelled"
msgstr ""
-#: order/views.py:440
+#: order/views.py:443
msgid "Cancel sales order"
msgstr ""
-#: order/views.py:466
+#: order/views.py:469
msgid "Issue Order"
msgstr ""
-#: order/views.py:475
+#: order/views.py:478
msgid "Confirm order placement"
msgstr ""
-#: order/views.py:485
+#: order/views.py:488
msgid "Purchase order issued"
msgstr ""
-#: order/views.py:496
+#: order/views.py:499
msgid "Complete Order"
msgstr ""
-#: order/views.py:512
+#: order/views.py:515
msgid "Confirm order completion"
msgstr ""
-#: order/views.py:523
+#: order/views.py:526
msgid "Purchase order completed"
msgstr ""
-#: order/views.py:533
+#: order/views.py:536
msgid "Ship Order"
msgstr ""
-#: order/views.py:549
+#: order/views.py:552
msgid "Confirm order shipment"
msgstr ""
-#: order/views.py:555
+#: order/views.py:558
msgid "Could not ship order"
msgstr ""
-#: order/views.py:609
+#: order/views.py:584
+msgid "Match Supplier Parts"
+msgstr ""
+
+#: order/views.py:798
msgid "Receive Parts"
msgstr ""
-#: order/views.py:679
+#: order/views.py:868
msgid "Items received"
msgstr ""
-#: order/views.py:693
+#: order/views.py:882
msgid "No destination set"
msgstr ""
-#: order/views.py:738
+#: order/views.py:927
msgid "Error converting quantity to number"
msgstr ""
-#: order/views.py:744
+#: order/views.py:933
msgid "Receive quantity less than zero"
msgstr ""
-#: order/views.py:750
+#: order/views.py:939
msgid "No lines specified"
msgstr ""
-#: order/views.py:1071
+#: order/views.py:1260
#, python-brace-format
msgid "Ordered {n} parts"
msgstr ""
-#: order/views.py:1131
+#: order/views.py:1320
msgid "Supplier part must be specified"
msgstr ""
-#: order/views.py:1137
+#: order/views.py:1326
msgid "Supplier must match for Part and Order"
msgstr ""
-#: order/views.py:1268 order/views.py:1286
+#: order/views.py:1457 order/views.py:1475
msgid "Edit Line Item"
msgstr ""
-#: order/views.py:1302 order/views.py:1314
+#: order/views.py:1491 order/views.py:1503
msgid "Delete Line Item"
msgstr ""
-#: order/views.py:1307 order/views.py:1319
+#: order/views.py:1496 order/views.py:1508
msgid "Deleted line item"
msgstr ""
-#: order/views.py:1332
+#: order/views.py:1521
msgid "Allocate Serial Numbers"
msgstr ""
-#: order/views.py:1377
+#: order/views.py:1566
#, python-brace-format
msgid "Allocated {n} items"
msgstr ""
-#: order/views.py:1393
+#: order/views.py:1582
msgid "Select line item"
msgstr ""
-#: order/views.py:1424
+#: order/views.py:1613
#, python-brace-format
msgid "No matching item for serial {serial}"
msgstr ""
-#: order/views.py:1434
+#: order/views.py:1623
#, python-brace-format
msgid "{serial} is not in stock"
msgstr ""
-#: order/views.py:1442
+#: order/views.py:1631
#, python-brace-format
msgid "{serial} already allocated to an order"
msgstr ""
-#: order/views.py:1496
+#: order/views.py:1685
msgid "Allocate Stock to Order"
msgstr ""
-#: order/views.py:1570
+#: order/views.py:1759
msgid "Edit Allocation Quantity"
msgstr ""
-#: order/views.py:1585
+#: order/views.py:1774
msgid "Remove allocation"
msgstr ""
-#: order/views.py:1657
+#: order/views.py:1846
msgid "Sales order not found"
msgstr ""
-#: order/views.py:1663
+#: order/views.py:1852
msgid "Price not found"
msgstr ""
-#: order/views.py:1666
+#: order/views.py:1855
#, python-brace-format
msgid "Updated {part} unit-price to {price}"
msgstr ""
-#: order/views.py:1671
+#: order/views.py:1860
#, python-brace-format
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr ""
@@ -4051,51 +4176,18 @@ msgstr ""
msgid "Step 2 - Select Fields"
msgstr ""
-#: part/templates/part/bom_upload/select_fields.html:21
-msgid "Missing selections for the following required columns"
-msgstr ""
-
-#: part/templates/part/bom_upload/select_fields.html:32
-msgid "Submit Selections"
-msgstr ""
-
-#: part/templates/part/bom_upload/select_fields.html:41
-msgid "File Fields"
-msgstr ""
-
-#: part/templates/part/bom_upload/select_fields.html:47
-msgid "Remove column"
-msgstr ""
-
-#: part/templates/part/bom_upload/select_fields.html:58
-msgid "Match Fields"
-msgstr ""
-
#: part/templates/part/bom_upload/select_fields.html:68
msgid "Duplicate column selection"
msgstr ""
-#: part/templates/part/bom_upload/select_fields.html:76
-#: part/templates/part/bom_upload/select_parts.html:58
-msgid "Remove row"
-msgstr ""
-
#: part/templates/part/bom_upload/select_parts.html:16
msgid "Step 3 - Select Parts"
msgstr ""
-#: part/templates/part/bom_upload/select_parts.html:21
-msgid "Errors exist in the submitted data"
-msgstr ""
-
#: part/templates/part/bom_upload/select_parts.html:27
msgid "Submit BOM"
msgstr ""
-#: part/templates/part/bom_upload/select_parts.html:39
-msgid "Row"
-msgstr ""
-
#: part/templates/part/bom_upload/select_parts.html:40
#: part/templates/part/bom_upload/select_parts.html:69
msgid "Select Part"
@@ -4126,10 +4218,6 @@ msgstr ""
msgid "Each part must already exist in the database"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:27
-msgid "Upload File"
-msgstr ""
-
#: part/templates/part/bom_validate.html:6
#, python-format
msgid "Confirm that the Bill of Materials (BOM) is valid for:
%(part)s"
@@ -6179,10 +6267,6 @@ msgstr ""
msgid "Add Attachment"
msgstr ""
-#: templates/attachment_table.html:15
-msgid "File"
-msgstr ""
-
#: templates/attachment_table.html:17
msgid "Uploaded"
msgstr ""
diff --git a/InvenTree/locale/es/LC_MESSAGES/django.po b/InvenTree/locale/es/LC_MESSAGES/django.po
index 71322eb584..c8a3880ae0 100644
--- a/InvenTree/locale/es/LC_MESSAGES/django.po
+++ b/InvenTree/locale/es/LC_MESSAGES/django.po
@@ -2,7 +2,7 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-05-12 00:59+0000\n"
+"POT-Creation-Date: 2021-05-12 12:19+0000\n"
"PO-Revision-Date: 2021-05-10 02:59\n"
"Last-Translator: \n"
"Language-Team: Spanish\n"
@@ -171,23 +171,23 @@ msgstr ""
msgid "parent"
msgstr ""
-#: InvenTree/settings.py:491
+#: InvenTree/settings.py:492
msgid "English"
msgstr "Inglés"
-#: InvenTree/settings.py:492
+#: InvenTree/settings.py:493
msgid "French"
msgstr "Francés"
-#: InvenTree/settings.py:493
+#: InvenTree/settings.py:494
msgid "German"
msgstr "Alemán"
-#: InvenTree/settings.py:494
+#: InvenTree/settings.py:495
msgid "Polish"
msgstr "Polaco"
-#: InvenTree/settings.py:495
+#: InvenTree/settings.py:496
msgid "Turkish"
msgstr "Turco"
@@ -470,6 +470,7 @@ msgstr ""
#: 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
@@ -894,7 +895,7 @@ msgstr ""
#: 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 ""
@@ -1432,27 +1433,60 @@ msgstr ""
msgid "Add Build Order Attachment"
msgstr ""
-#: 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 ""
-#: 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 ""
-#: 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 ""
-#: 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 ""
-#: 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 ""
+#: common/files.py:64
+msgid "Unsupported file format: {ext.upper()}"
+msgstr ""
+
+#: common/files.py:69
+msgid "Error reading file (invalid format)"
+msgstr ""
+
+#: common/files.py:71
+msgid "Error reading file (incorrect dimension)"
+msgstr ""
+
+#: common/files.py:73
+msgid "Error reading file (data could be corrupted)"
+msgstr ""
+
+#: common/forms.py:38 templates/attachment_table.html:15
+msgid "File"
+msgstr ""
+
+#: common/forms.py:39
+msgid "Select file to upload"
+msgstr ""
+
+#: common/forms.py:54
+msgid "{name.title()} File"
+msgstr ""
+
+#: common/forms.py:55
+#, python-brace-format
+msgid "Select {name} file to upload"
+msgstr ""
+
#: common/models.py:58
msgid "InvenTree Instance Name"
msgstr ""
@@ -1805,18 +1839,36 @@ msgstr ""
msgid "Current value"
msgstr ""
-#: common/views.py:25
+#: common/views.py:32
msgid "Change Setting"
msgstr ""
-#: common/views.py:94
+#: common/views.py:101
msgid "Supplied value is not allowed"
msgstr ""
-#: common/views.py:103
+#: common/views.py:110
msgid "Supplied value must be a boolean"
msgstr ""
+#: common/views.py:184 order/templates/order/order_wizard/po_upload.html:42
+#: order/views.py:582 part/templates/part/bom_upload/upload_file.html:27
+msgid "Upload File"
+msgstr ""
+
+#: 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 ""
+
+#: common/views.py:186
+msgid "Match Items"
+msgstr ""
+
+#: common/views.py:479
+msgid "Fields matching failed"
+msgstr ""
+
#: company/forms.py:38 company/models.py:142
#: company/templates/company/detail.html:42
msgid "Currency"
@@ -1954,7 +2006,7 @@ msgstr ""
msgid "Base Part"
msgstr ""
-#: 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 ""
@@ -2077,7 +2129,7 @@ msgstr ""
msgid "Download image from URL"
msgstr ""
-#: 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 ""
@@ -2960,6 +3012,75 @@ msgstr ""
msgid "Order Notes"
msgstr ""
+#: order/templates/order/order_wizard/match_fields.html:9
+#: part/templates/part/bom_upload/select_fields.html:21
+msgid "Missing selections for the following required columns"
+msgstr ""
+
+#: order/templates/order/order_wizard/match_fields.html:20
+msgid "Duplicate selections found, see below. Fix them then retry submitting."
+msgstr ""
+
+#: 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 ""
+
+#: 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 ""
+
+#: order/templates/order/order_wizard/match_fields.html:35
+#: part/templates/part/bom_upload/select_fields.html:41
+msgid "File Fields"
+msgstr ""
+
+#: order/templates/order/order_wizard/match_fields.html:42
+#: part/templates/part/bom_upload/select_fields.html:47
+msgid "Remove column"
+msgstr ""
+
+#: order/templates/order/order_wizard/match_fields.html:60
+msgid "Duplicate selection"
+msgstr ""
+
+#: 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 ""
+
+#: 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 ""
+
+#: order/templates/order/order_wizard/match_parts.html:27
+#: part/templates/part/bom_upload/select_parts.html:39
+msgid "Row"
+msgstr ""
+
+#: order/templates/order/order_wizard/match_parts.html:28
+msgid "Select Supplier Part"
+msgstr ""
+
+#: order/templates/order/order_wizard/po_upload.html:11
+msgid "Upload File for Purchase Order"
+msgstr ""
+
+#: order/templates/order/order_wizard/po_upload.html:18
+#, python-format
+msgid "Step %(step)s of %(count)s"
+msgstr ""
+
+#: order/templates/order/order_wizard/po_upload.html:48
+msgid "Order is already processed. Files cannot be uploaded."
+msgstr ""
+
#: order/templates/order/order_wizard/select_parts.html:9
msgid "Step 1 of 2 - Select Part Suppliers"
msgstr ""
@@ -3032,8 +3153,8 @@ msgid "Purchase Order Items"
msgstr ""
#: order/templates/order/purchase_order_detail.html:24
-#: order/templates/order/sales_order_detail.html:22 order/views.py: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 ""
@@ -3242,181 +3363,185 @@ msgstr ""
msgid "Are you sure you wish to delete this line item?"
msgstr ""
-#: order/views.py:101
+#: order/views.py:104
msgid "Add Purchase Order Attachment"
msgstr ""
-#: order/views.py:151
+#: order/views.py:154
msgid "Add Sales Order Attachment"
msgstr ""
-#: order/views.py:343
+#: order/views.py:346
msgid "Create Sales Order"
msgstr ""
-#: order/views.py:378
+#: order/views.py:381
msgid "Edit Purchase Order"
msgstr ""
-#: order/views.py:398
+#: order/views.py:401
msgid "Edit Sales Order"
msgstr ""
-#: order/views.py:414
+#: order/views.py:417
msgid "Cancel Order"
msgstr ""
-#: order/views.py:423 order/views.py:449
+#: order/views.py:426 order/views.py:452
msgid "Confirm order cancellation"
msgstr ""
-#: order/views.py:426 order/views.py:452
+#: order/views.py:429 order/views.py:455
msgid "Order cannot be cancelled"
msgstr ""
-#: order/views.py:440
+#: order/views.py:443
msgid "Cancel sales order"
msgstr ""
-#: order/views.py:466
+#: order/views.py:469
msgid "Issue Order"
msgstr ""
-#: order/views.py:475
+#: order/views.py:478
msgid "Confirm order placement"
msgstr ""
-#: order/views.py:485
+#: order/views.py:488
msgid "Purchase order issued"
msgstr ""
-#: order/views.py:496
+#: order/views.py:499
msgid "Complete Order"
msgstr ""
-#: order/views.py:512
+#: order/views.py:515
msgid "Confirm order completion"
msgstr ""
-#: order/views.py:523
+#: order/views.py:526
msgid "Purchase order completed"
msgstr ""
-#: order/views.py:533
+#: order/views.py:536
msgid "Ship Order"
msgstr ""
-#: order/views.py:549
+#: order/views.py:552
msgid "Confirm order shipment"
msgstr ""
-#: order/views.py:555
+#: order/views.py:558
msgid "Could not ship order"
msgstr ""
-#: order/views.py:609
+#: order/views.py:584
+msgid "Match Supplier Parts"
+msgstr ""
+
+#: order/views.py:798
msgid "Receive Parts"
msgstr ""
-#: order/views.py:679
+#: order/views.py:868
msgid "Items received"
msgstr ""
-#: order/views.py:693
+#: order/views.py:882
msgid "No destination set"
msgstr ""
-#: order/views.py:738
+#: order/views.py:927
msgid "Error converting quantity to number"
msgstr ""
-#: order/views.py:744
+#: order/views.py:933
msgid "Receive quantity less than zero"
msgstr ""
-#: order/views.py:750
+#: order/views.py:939
msgid "No lines specified"
msgstr ""
-#: order/views.py:1071
+#: order/views.py:1260
#, python-brace-format
msgid "Ordered {n} parts"
msgstr ""
-#: order/views.py:1131
+#: order/views.py:1320
msgid "Supplier part must be specified"
msgstr ""
-#: order/views.py:1137
+#: order/views.py:1326
msgid "Supplier must match for Part and Order"
msgstr ""
-#: order/views.py:1268 order/views.py:1286
+#: order/views.py:1457 order/views.py:1475
msgid "Edit Line Item"
msgstr ""
-#: order/views.py:1302 order/views.py:1314
+#: order/views.py:1491 order/views.py:1503
msgid "Delete Line Item"
msgstr ""
-#: order/views.py:1307 order/views.py:1319
+#: order/views.py:1496 order/views.py:1508
msgid "Deleted line item"
msgstr ""
-#: order/views.py:1332
+#: order/views.py:1521
msgid "Allocate Serial Numbers"
msgstr ""
-#: order/views.py:1377
+#: order/views.py:1566
#, python-brace-format
msgid "Allocated {n} items"
msgstr ""
-#: order/views.py:1393
+#: order/views.py:1582
msgid "Select line item"
msgstr ""
-#: order/views.py:1424
+#: order/views.py:1613
#, python-brace-format
msgid "No matching item for serial {serial}"
msgstr ""
-#: order/views.py:1434
+#: order/views.py:1623
#, python-brace-format
msgid "{serial} is not in stock"
msgstr ""
-#: order/views.py:1442
+#: order/views.py:1631
#, python-brace-format
msgid "{serial} already allocated to an order"
msgstr ""
-#: order/views.py:1496
+#: order/views.py:1685
msgid "Allocate Stock to Order"
msgstr ""
-#: order/views.py:1570
+#: order/views.py:1759
msgid "Edit Allocation Quantity"
msgstr ""
-#: order/views.py:1585
+#: order/views.py:1774
msgid "Remove allocation"
msgstr ""
-#: order/views.py:1657
+#: order/views.py:1846
msgid "Sales order not found"
msgstr ""
-#: order/views.py:1663
+#: order/views.py:1852
msgid "Price not found"
msgstr ""
-#: order/views.py:1666
+#: order/views.py:1855
#, python-brace-format
msgid "Updated {part} unit-price to {price}"
msgstr ""
-#: order/views.py:1671
+#: order/views.py:1860
#, python-brace-format
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr ""
@@ -4054,51 +4179,18 @@ msgstr ""
msgid "Step 2 - Select Fields"
msgstr ""
-#: part/templates/part/bom_upload/select_fields.html:21
-msgid "Missing selections for the following required columns"
-msgstr ""
-
-#: part/templates/part/bom_upload/select_fields.html:32
-msgid "Submit Selections"
-msgstr ""
-
-#: part/templates/part/bom_upload/select_fields.html:41
-msgid "File Fields"
-msgstr ""
-
-#: part/templates/part/bom_upload/select_fields.html:47
-msgid "Remove column"
-msgstr ""
-
-#: part/templates/part/bom_upload/select_fields.html:58
-msgid "Match Fields"
-msgstr ""
-
#: part/templates/part/bom_upload/select_fields.html:68
msgid "Duplicate column selection"
msgstr ""
-#: part/templates/part/bom_upload/select_fields.html:76
-#: part/templates/part/bom_upload/select_parts.html:58
-msgid "Remove row"
-msgstr ""
-
#: part/templates/part/bom_upload/select_parts.html:16
msgid "Step 3 - Select Parts"
msgstr ""
-#: part/templates/part/bom_upload/select_parts.html:21
-msgid "Errors exist in the submitted data"
-msgstr ""
-
#: part/templates/part/bom_upload/select_parts.html:27
msgid "Submit BOM"
msgstr ""
-#: part/templates/part/bom_upload/select_parts.html:39
-msgid "Row"
-msgstr ""
-
#: part/templates/part/bom_upload/select_parts.html:40
#: part/templates/part/bom_upload/select_parts.html:69
msgid "Select Part"
@@ -4129,10 +4221,6 @@ msgstr ""
msgid "Each part must already exist in the database"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:27
-msgid "Upload File"
-msgstr ""
-
#: part/templates/part/bom_validate.html:6
#, python-format
msgid "Confirm that the Bill of Materials (BOM) is valid for:
%(part)s"
@@ -6182,10 +6270,6 @@ msgstr ""
msgid "Add Attachment"
msgstr ""
-#: templates/attachment_table.html:15
-msgid "File"
-msgstr ""
-
#: templates/attachment_table.html:17
msgid "Uploaded"
msgstr ""
diff --git a/InvenTree/locale/fr/LC_MESSAGES/django.po b/InvenTree/locale/fr/LC_MESSAGES/django.po
index 9bbfe511d1..35e407fcad 100644
--- a/InvenTree/locale/fr/LC_MESSAGES/django.po
+++ b/InvenTree/locale/fr/LC_MESSAGES/django.po
@@ -2,7 +2,7 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-05-12 00:59+0000\n"
+"POT-Creation-Date: 2021-05-12 12:19+0000\n"
"PO-Revision-Date: 2021-05-10 02:59\n"
"Last-Translator: \n"
"Language-Team: French\n"
@@ -171,23 +171,23 @@ msgstr "Description (facultative)"
msgid "parent"
msgstr "parent"
-#: InvenTree/settings.py:491
+#: InvenTree/settings.py:492
msgid "English"
msgstr ""
-#: InvenTree/settings.py:492
+#: InvenTree/settings.py:493
msgid "French"
msgstr ""
-#: InvenTree/settings.py:493
+#: InvenTree/settings.py:494
msgid "German"
msgstr ""
-#: InvenTree/settings.py:494
+#: InvenTree/settings.py:495
msgid "Polish"
msgstr ""
-#: InvenTree/settings.py:495
+#: InvenTree/settings.py:496
msgid "Turkish"
msgstr ""
@@ -466,6 +466,7 @@ msgstr ""
#: 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 ""
#: 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 ""
@@ -1428,27 +1429,60 @@ msgstr ""
msgid "Add Build Order Attachment"
msgstr ""
-#: 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 ""
-#: 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 ""
-#: 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 ""
-#: 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 ""
-#: 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 ""
+#: common/files.py:64
+msgid "Unsupported file format: {ext.upper()}"
+msgstr ""
+
+#: common/files.py:69
+msgid "Error reading file (invalid format)"
+msgstr ""
+
+#: common/files.py:71
+msgid "Error reading file (incorrect dimension)"
+msgstr ""
+
+#: common/files.py:73
+msgid "Error reading file (data could be corrupted)"
+msgstr ""
+
+#: common/forms.py:38 templates/attachment_table.html:15
+msgid "File"
+msgstr ""
+
+#: common/forms.py:39
+msgid "Select file to upload"
+msgstr ""
+
+#: common/forms.py:54
+msgid "{name.title()} File"
+msgstr ""
+
+#: common/forms.py:55
+#, python-brace-format
+msgid "Select {name} file to upload"
+msgstr ""
+
#: common/models.py:58
msgid "InvenTree Instance Name"
msgstr ""
@@ -1801,18 +1835,36 @@ msgstr ""
msgid "Current value"
msgstr ""
-#: common/views.py:25
+#: common/views.py:32
msgid "Change Setting"
msgstr ""
-#: common/views.py:94
+#: common/views.py:101
msgid "Supplied value is not allowed"
msgstr ""
-#: common/views.py:103
+#: common/views.py:110
msgid "Supplied value must be a boolean"
msgstr ""
+#: common/views.py:184 order/templates/order/order_wizard/po_upload.html:42
+#: order/views.py:582 part/templates/part/bom_upload/upload_file.html:27
+msgid "Upload File"
+msgstr ""
+
+#: 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 ""
+
+#: common/views.py:186
+msgid "Match Items"
+msgstr ""
+
+#: common/views.py:479
+msgid "Fields matching failed"
+msgstr ""
+
#: company/forms.py:38 company/models.py:142
#: company/templates/company/detail.html:42
msgid "Currency"
@@ -1950,7 +2002,7 @@ msgstr ""
msgid "Base Part"
msgstr ""
-#: 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 ""
@@ -2073,7 +2125,7 @@ msgstr ""
msgid "Download image from URL"
msgstr ""
-#: 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 ""
@@ -2956,6 +3008,75 @@ msgstr ""
msgid "Order Notes"
msgstr ""
+#: order/templates/order/order_wizard/match_fields.html:9
+#: part/templates/part/bom_upload/select_fields.html:21
+msgid "Missing selections for the following required columns"
+msgstr ""
+
+#: order/templates/order/order_wizard/match_fields.html:20
+msgid "Duplicate selections found, see below. Fix them then retry submitting."
+msgstr ""
+
+#: 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 ""
+
+#: 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 ""
+
+#: order/templates/order/order_wizard/match_fields.html:35
+#: part/templates/part/bom_upload/select_fields.html:41
+msgid "File Fields"
+msgstr ""
+
+#: order/templates/order/order_wizard/match_fields.html:42
+#: part/templates/part/bom_upload/select_fields.html:47
+msgid "Remove column"
+msgstr ""
+
+#: order/templates/order/order_wizard/match_fields.html:60
+msgid "Duplicate selection"
+msgstr ""
+
+#: 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 ""
+
+#: 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 ""
+
+#: order/templates/order/order_wizard/match_parts.html:27
+#: part/templates/part/bom_upload/select_parts.html:39
+msgid "Row"
+msgstr ""
+
+#: order/templates/order/order_wizard/match_parts.html:28
+msgid "Select Supplier Part"
+msgstr ""
+
+#: order/templates/order/order_wizard/po_upload.html:11
+msgid "Upload File for Purchase Order"
+msgstr ""
+
+#: order/templates/order/order_wizard/po_upload.html:18
+#, python-format
+msgid "Step %(step)s of %(count)s"
+msgstr ""
+
+#: order/templates/order/order_wizard/po_upload.html:48
+msgid "Order is already processed. Files cannot be uploaded."
+msgstr ""
+
#: order/templates/order/order_wizard/select_parts.html:9
msgid "Step 1 of 2 - Select Part Suppliers"
msgstr ""
@@ -3028,8 +3149,8 @@ msgid "Purchase Order Items"
msgstr ""
#: order/templates/order/purchase_order_detail.html:24
-#: order/templates/order/sales_order_detail.html:22 order/views.py: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 ""
@@ -3238,181 +3359,185 @@ msgstr ""
msgid "Are you sure you wish to delete this line item?"
msgstr ""
-#: order/views.py:101
+#: order/views.py:104
msgid "Add Purchase Order Attachment"
msgstr ""
-#: order/views.py:151
+#: order/views.py:154
msgid "Add Sales Order Attachment"
msgstr ""
-#: order/views.py:343
+#: order/views.py:346
msgid "Create Sales Order"
msgstr ""
-#: order/views.py:378
+#: order/views.py:381
msgid "Edit Purchase Order"
msgstr ""
-#: order/views.py:398
+#: order/views.py:401
msgid "Edit Sales Order"
msgstr ""
-#: order/views.py:414
+#: order/views.py:417
msgid "Cancel Order"
msgstr ""
-#: order/views.py:423 order/views.py:449
+#: order/views.py:426 order/views.py:452
msgid "Confirm order cancellation"
msgstr ""
-#: order/views.py:426 order/views.py:452
+#: order/views.py:429 order/views.py:455
msgid "Order cannot be cancelled"
msgstr ""
-#: order/views.py:440
+#: order/views.py:443
msgid "Cancel sales order"
msgstr ""
-#: order/views.py:466
+#: order/views.py:469
msgid "Issue Order"
msgstr ""
-#: order/views.py:475
+#: order/views.py:478
msgid "Confirm order placement"
msgstr ""
-#: order/views.py:485
+#: order/views.py:488
msgid "Purchase order issued"
msgstr ""
-#: order/views.py:496
+#: order/views.py:499
msgid "Complete Order"
msgstr ""
-#: order/views.py:512
+#: order/views.py:515
msgid "Confirm order completion"
msgstr ""
-#: order/views.py:523
+#: order/views.py:526
msgid "Purchase order completed"
msgstr ""
-#: order/views.py:533
+#: order/views.py:536
msgid "Ship Order"
msgstr ""
-#: order/views.py:549
+#: order/views.py:552
msgid "Confirm order shipment"
msgstr ""
-#: order/views.py:555
+#: order/views.py:558
msgid "Could not ship order"
msgstr ""
-#: order/views.py:609
+#: order/views.py:584
+msgid "Match Supplier Parts"
+msgstr ""
+
+#: order/views.py:798
msgid "Receive Parts"
msgstr ""
-#: order/views.py:679
+#: order/views.py:868
msgid "Items received"
msgstr ""
-#: order/views.py:693
+#: order/views.py:882
msgid "No destination set"
msgstr ""
-#: order/views.py:738
+#: order/views.py:927
msgid "Error converting quantity to number"
msgstr ""
-#: order/views.py:744
+#: order/views.py:933
msgid "Receive quantity less than zero"
msgstr ""
-#: order/views.py:750
+#: order/views.py:939
msgid "No lines specified"
msgstr ""
-#: order/views.py:1071
+#: order/views.py:1260
#, python-brace-format
msgid "Ordered {n} parts"
msgstr ""
-#: order/views.py:1131
+#: order/views.py:1320
msgid "Supplier part must be specified"
msgstr ""
-#: order/views.py:1137
+#: order/views.py:1326
msgid "Supplier must match for Part and Order"
msgstr ""
-#: order/views.py:1268 order/views.py:1286
+#: order/views.py:1457 order/views.py:1475
msgid "Edit Line Item"
msgstr ""
-#: order/views.py:1302 order/views.py:1314
+#: order/views.py:1491 order/views.py:1503
msgid "Delete Line Item"
msgstr ""
-#: order/views.py:1307 order/views.py:1319
+#: order/views.py:1496 order/views.py:1508
msgid "Deleted line item"
msgstr ""
-#: order/views.py:1332
+#: order/views.py:1521
msgid "Allocate Serial Numbers"
msgstr ""
-#: order/views.py:1377
+#: order/views.py:1566
#, python-brace-format
msgid "Allocated {n} items"
msgstr ""
-#: order/views.py:1393
+#: order/views.py:1582
msgid "Select line item"
msgstr ""
-#: order/views.py:1424
+#: order/views.py:1613
#, python-brace-format
msgid "No matching item for serial {serial}"
msgstr ""
-#: order/views.py:1434
+#: order/views.py:1623
#, python-brace-format
msgid "{serial} is not in stock"
msgstr ""
-#: order/views.py:1442
+#: order/views.py:1631
#, python-brace-format
msgid "{serial} already allocated to an order"
msgstr ""
-#: order/views.py:1496
+#: order/views.py:1685
msgid "Allocate Stock to Order"
msgstr ""
-#: order/views.py:1570
+#: order/views.py:1759
msgid "Edit Allocation Quantity"
msgstr ""
-#: order/views.py:1585
+#: order/views.py:1774
msgid "Remove allocation"
msgstr ""
-#: order/views.py:1657
+#: order/views.py:1846
msgid "Sales order not found"
msgstr ""
-#: order/views.py:1663
+#: order/views.py:1852
msgid "Price not found"
msgstr ""
-#: order/views.py:1666
+#: order/views.py:1855
#, python-brace-format
msgid "Updated {part} unit-price to {price}"
msgstr ""
-#: order/views.py:1671
+#: order/views.py:1860
#, python-brace-format
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr ""
@@ -4050,51 +4175,18 @@ msgstr ""
msgid "Step 2 - Select Fields"
msgstr ""
-#: part/templates/part/bom_upload/select_fields.html:21
-msgid "Missing selections for the following required columns"
-msgstr ""
-
-#: part/templates/part/bom_upload/select_fields.html:32
-msgid "Submit Selections"
-msgstr ""
-
-#: part/templates/part/bom_upload/select_fields.html:41
-msgid "File Fields"
-msgstr ""
-
-#: part/templates/part/bom_upload/select_fields.html:47
-msgid "Remove column"
-msgstr ""
-
-#: part/templates/part/bom_upload/select_fields.html:58
-msgid "Match Fields"
-msgstr ""
-
#: part/templates/part/bom_upload/select_fields.html:68
msgid "Duplicate column selection"
msgstr ""
-#: part/templates/part/bom_upload/select_fields.html:76
-#: part/templates/part/bom_upload/select_parts.html:58
-msgid "Remove row"
-msgstr ""
-
#: part/templates/part/bom_upload/select_parts.html:16
msgid "Step 3 - Select Parts"
msgstr ""
-#: part/templates/part/bom_upload/select_parts.html:21
-msgid "Errors exist in the submitted data"
-msgstr ""
-
#: part/templates/part/bom_upload/select_parts.html:27
msgid "Submit BOM"
msgstr ""
-#: part/templates/part/bom_upload/select_parts.html:39
-msgid "Row"
-msgstr ""
-
#: 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 ""
msgid "Each part must already exist in the database"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:27
-msgid "Upload File"
-msgstr ""
-
#: part/templates/part/bom_validate.html:6
#, python-format
msgid "Confirm that the Bill of Materials (BOM) is valid for:
%(part)s"
@@ -6178,10 +6266,6 @@ msgstr ""
msgid "Add Attachment"
msgstr ""
-#: templates/attachment_table.html:15
-msgid "File"
-msgstr ""
-
#: templates/attachment_table.html:17
msgid "Uploaded"
msgstr ""
diff --git a/InvenTree/locale/it/LC_MESSAGES/django.po b/InvenTree/locale/it/LC_MESSAGES/django.po
index 3629035621..5272241e3a 100644
--- a/InvenTree/locale/it/LC_MESSAGES/django.po
+++ b/InvenTree/locale/it/LC_MESSAGES/django.po
@@ -2,7 +2,7 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-05-12 00:59+0000\n"
+"POT-Creation-Date: 2021-05-12 12:19+0000\n"
"PO-Revision-Date: 2021-05-10 02:59\n"
"Last-Translator: \n"
"Language-Team: Italian\n"
@@ -171,23 +171,23 @@ msgstr ""
msgid "parent"
msgstr ""
-#: InvenTree/settings.py:491
+#: InvenTree/settings.py:492
msgid "English"
msgstr ""
-#: InvenTree/settings.py:492
+#: InvenTree/settings.py:493
msgid "French"
msgstr ""
-#: InvenTree/settings.py:493
+#: InvenTree/settings.py:494
msgid "German"
msgstr ""
-#: InvenTree/settings.py:494
+#: InvenTree/settings.py:495
msgid "Polish"
msgstr ""
-#: InvenTree/settings.py:495
+#: InvenTree/settings.py:496
msgid "Turkish"
msgstr ""
@@ -466,6 +466,7 @@ msgstr ""
#: 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 ""
#: 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 ""
@@ -1428,27 +1429,60 @@ msgstr ""
msgid "Add Build Order Attachment"
msgstr ""
-#: 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 ""
-#: 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 ""
-#: 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 ""
-#: 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 ""
-#: 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 ""
+#: common/files.py:64
+msgid "Unsupported file format: {ext.upper()}"
+msgstr ""
+
+#: common/files.py:69
+msgid "Error reading file (invalid format)"
+msgstr ""
+
+#: common/files.py:71
+msgid "Error reading file (incorrect dimension)"
+msgstr ""
+
+#: common/files.py:73
+msgid "Error reading file (data could be corrupted)"
+msgstr ""
+
+#: common/forms.py:38 templates/attachment_table.html:15
+msgid "File"
+msgstr ""
+
+#: common/forms.py:39
+msgid "Select file to upload"
+msgstr ""
+
+#: common/forms.py:54
+msgid "{name.title()} File"
+msgstr ""
+
+#: common/forms.py:55
+#, python-brace-format
+msgid "Select {name} file to upload"
+msgstr ""
+
#: common/models.py:58
msgid "InvenTree Instance Name"
msgstr ""
@@ -1801,18 +1835,36 @@ msgstr ""
msgid "Current value"
msgstr ""
-#: common/views.py:25
+#: common/views.py:32
msgid "Change Setting"
msgstr ""
-#: common/views.py:94
+#: common/views.py:101
msgid "Supplied value is not allowed"
msgstr ""
-#: common/views.py:103
+#: common/views.py:110
msgid "Supplied value must be a boolean"
msgstr ""
+#: common/views.py:184 order/templates/order/order_wizard/po_upload.html:42
+#: order/views.py:582 part/templates/part/bom_upload/upload_file.html:27
+msgid "Upload File"
+msgstr ""
+
+#: 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 ""
+
+#: common/views.py:186
+msgid "Match Items"
+msgstr ""
+
+#: common/views.py:479
+msgid "Fields matching failed"
+msgstr ""
+
#: company/forms.py:38 company/models.py:142
#: company/templates/company/detail.html:42
msgid "Currency"
@@ -1950,7 +2002,7 @@ msgstr ""
msgid "Base Part"
msgstr ""
-#: 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 ""
@@ -2073,7 +2125,7 @@ msgstr ""
msgid "Download image from URL"
msgstr ""
-#: 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 ""
@@ -2956,6 +3008,75 @@ msgstr ""
msgid "Order Notes"
msgstr ""
+#: order/templates/order/order_wizard/match_fields.html:9
+#: part/templates/part/bom_upload/select_fields.html:21
+msgid "Missing selections for the following required columns"
+msgstr ""
+
+#: order/templates/order/order_wizard/match_fields.html:20
+msgid "Duplicate selections found, see below. Fix them then retry submitting."
+msgstr ""
+
+#: 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 ""
+
+#: 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 ""
+
+#: order/templates/order/order_wizard/match_fields.html:35
+#: part/templates/part/bom_upload/select_fields.html:41
+msgid "File Fields"
+msgstr ""
+
+#: order/templates/order/order_wizard/match_fields.html:42
+#: part/templates/part/bom_upload/select_fields.html:47
+msgid "Remove column"
+msgstr ""
+
+#: order/templates/order/order_wizard/match_fields.html:60
+msgid "Duplicate selection"
+msgstr ""
+
+#: 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 ""
+
+#: 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 ""
+
+#: order/templates/order/order_wizard/match_parts.html:27
+#: part/templates/part/bom_upload/select_parts.html:39
+msgid "Row"
+msgstr ""
+
+#: order/templates/order/order_wizard/match_parts.html:28
+msgid "Select Supplier Part"
+msgstr ""
+
+#: order/templates/order/order_wizard/po_upload.html:11
+msgid "Upload File for Purchase Order"
+msgstr ""
+
+#: order/templates/order/order_wizard/po_upload.html:18
+#, python-format
+msgid "Step %(step)s of %(count)s"
+msgstr ""
+
+#: order/templates/order/order_wizard/po_upload.html:48
+msgid "Order is already processed. Files cannot be uploaded."
+msgstr ""
+
#: order/templates/order/order_wizard/select_parts.html:9
msgid "Step 1 of 2 - Select Part Suppliers"
msgstr ""
@@ -3028,8 +3149,8 @@ msgid "Purchase Order Items"
msgstr ""
#: order/templates/order/purchase_order_detail.html:24
-#: order/templates/order/sales_order_detail.html:22 order/views.py: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 ""
@@ -3238,181 +3359,185 @@ msgstr ""
msgid "Are you sure you wish to delete this line item?"
msgstr ""
-#: order/views.py:101
+#: order/views.py:104
msgid "Add Purchase Order Attachment"
msgstr ""
-#: order/views.py:151
+#: order/views.py:154
msgid "Add Sales Order Attachment"
msgstr ""
-#: order/views.py:343
+#: order/views.py:346
msgid "Create Sales Order"
msgstr ""
-#: order/views.py:378
+#: order/views.py:381
msgid "Edit Purchase Order"
msgstr ""
-#: order/views.py:398
+#: order/views.py:401
msgid "Edit Sales Order"
msgstr ""
-#: order/views.py:414
+#: order/views.py:417
msgid "Cancel Order"
msgstr ""
-#: order/views.py:423 order/views.py:449
+#: order/views.py:426 order/views.py:452
msgid "Confirm order cancellation"
msgstr ""
-#: order/views.py:426 order/views.py:452
+#: order/views.py:429 order/views.py:455
msgid "Order cannot be cancelled"
msgstr ""
-#: order/views.py:440
+#: order/views.py:443
msgid "Cancel sales order"
msgstr ""
-#: order/views.py:466
+#: order/views.py:469
msgid "Issue Order"
msgstr ""
-#: order/views.py:475
+#: order/views.py:478
msgid "Confirm order placement"
msgstr ""
-#: order/views.py:485
+#: order/views.py:488
msgid "Purchase order issued"
msgstr ""
-#: order/views.py:496
+#: order/views.py:499
msgid "Complete Order"
msgstr ""
-#: order/views.py:512
+#: order/views.py:515
msgid "Confirm order completion"
msgstr ""
-#: order/views.py:523
+#: order/views.py:526
msgid "Purchase order completed"
msgstr ""
-#: order/views.py:533
+#: order/views.py:536
msgid "Ship Order"
msgstr ""
-#: order/views.py:549
+#: order/views.py:552
msgid "Confirm order shipment"
msgstr ""
-#: order/views.py:555
+#: order/views.py:558
msgid "Could not ship order"
msgstr ""
-#: order/views.py:609
+#: order/views.py:584
+msgid "Match Supplier Parts"
+msgstr ""
+
+#: order/views.py:798
msgid "Receive Parts"
msgstr ""
-#: order/views.py:679
+#: order/views.py:868
msgid "Items received"
msgstr ""
-#: order/views.py:693
+#: order/views.py:882
msgid "No destination set"
msgstr ""
-#: order/views.py:738
+#: order/views.py:927
msgid "Error converting quantity to number"
msgstr ""
-#: order/views.py:744
+#: order/views.py:933
msgid "Receive quantity less than zero"
msgstr ""
-#: order/views.py:750
+#: order/views.py:939
msgid "No lines specified"
msgstr ""
-#: order/views.py:1071
+#: order/views.py:1260
#, python-brace-format
msgid "Ordered {n} parts"
msgstr ""
-#: order/views.py:1131
+#: order/views.py:1320
msgid "Supplier part must be specified"
msgstr ""
-#: order/views.py:1137
+#: order/views.py:1326
msgid "Supplier must match for Part and Order"
msgstr ""
-#: order/views.py:1268 order/views.py:1286
+#: order/views.py:1457 order/views.py:1475
msgid "Edit Line Item"
msgstr ""
-#: order/views.py:1302 order/views.py:1314
+#: order/views.py:1491 order/views.py:1503
msgid "Delete Line Item"
msgstr ""
-#: order/views.py:1307 order/views.py:1319
+#: order/views.py:1496 order/views.py:1508
msgid "Deleted line item"
msgstr ""
-#: order/views.py:1332
+#: order/views.py:1521
msgid "Allocate Serial Numbers"
msgstr ""
-#: order/views.py:1377
+#: order/views.py:1566
#, python-brace-format
msgid "Allocated {n} items"
msgstr ""
-#: order/views.py:1393
+#: order/views.py:1582
msgid "Select line item"
msgstr ""
-#: order/views.py:1424
+#: order/views.py:1613
#, python-brace-format
msgid "No matching item for serial {serial}"
msgstr ""
-#: order/views.py:1434
+#: order/views.py:1623
#, python-brace-format
msgid "{serial} is not in stock"
msgstr ""
-#: order/views.py:1442
+#: order/views.py:1631
#, python-brace-format
msgid "{serial} already allocated to an order"
msgstr ""
-#: order/views.py:1496
+#: order/views.py:1685
msgid "Allocate Stock to Order"
msgstr ""
-#: order/views.py:1570
+#: order/views.py:1759
msgid "Edit Allocation Quantity"
msgstr ""
-#: order/views.py:1585
+#: order/views.py:1774
msgid "Remove allocation"
msgstr ""
-#: order/views.py:1657
+#: order/views.py:1846
msgid "Sales order not found"
msgstr ""
-#: order/views.py:1663
+#: order/views.py:1852
msgid "Price not found"
msgstr ""
-#: order/views.py:1666
+#: order/views.py:1855
#, python-brace-format
msgid "Updated {part} unit-price to {price}"
msgstr ""
-#: order/views.py:1671
+#: order/views.py:1860
#, python-brace-format
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr ""
@@ -4050,51 +4175,18 @@ msgstr ""
msgid "Step 2 - Select Fields"
msgstr ""
-#: part/templates/part/bom_upload/select_fields.html:21
-msgid "Missing selections for the following required columns"
-msgstr ""
-
-#: part/templates/part/bom_upload/select_fields.html:32
-msgid "Submit Selections"
-msgstr ""
-
-#: part/templates/part/bom_upload/select_fields.html:41
-msgid "File Fields"
-msgstr ""
-
-#: part/templates/part/bom_upload/select_fields.html:47
-msgid "Remove column"
-msgstr ""
-
-#: part/templates/part/bom_upload/select_fields.html:58
-msgid "Match Fields"
-msgstr ""
-
#: part/templates/part/bom_upload/select_fields.html:68
msgid "Duplicate column selection"
msgstr ""
-#: part/templates/part/bom_upload/select_fields.html:76
-#: part/templates/part/bom_upload/select_parts.html:58
-msgid "Remove row"
-msgstr ""
-
#: part/templates/part/bom_upload/select_parts.html:16
msgid "Step 3 - Select Parts"
msgstr ""
-#: part/templates/part/bom_upload/select_parts.html:21
-msgid "Errors exist in the submitted data"
-msgstr ""
-
#: part/templates/part/bom_upload/select_parts.html:27
msgid "Submit BOM"
msgstr ""
-#: part/templates/part/bom_upload/select_parts.html:39
-msgid "Row"
-msgstr ""
-
#: 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 ""
msgid "Each part must already exist in the database"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:27
-msgid "Upload File"
-msgstr ""
-
#: part/templates/part/bom_validate.html:6
#, python-format
msgid "Confirm that the Bill of Materials (BOM) is valid for:
%(part)s"
@@ -6178,10 +6266,6 @@ msgstr ""
msgid "Add Attachment"
msgstr ""
-#: templates/attachment_table.html:15
-msgid "File"
-msgstr ""
-
#: templates/attachment_table.html:17
msgid "Uploaded"
msgstr ""
diff --git a/InvenTree/locale/ja/LC_MESSAGES/django.po b/InvenTree/locale/ja/LC_MESSAGES/django.po
index 6b4bb0b5ce..cc65b8828d 100644
--- a/InvenTree/locale/ja/LC_MESSAGES/django.po
+++ b/InvenTree/locale/ja/LC_MESSAGES/django.po
@@ -2,7 +2,7 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-05-12 00:59+0000\n"
+"POT-Creation-Date: 2021-05-12 12:19+0000\n"
"PO-Revision-Date: 2021-05-10 03:00\n"
"Last-Translator: \n"
"Language-Team: Japanese\n"
@@ -171,23 +171,23 @@ msgstr ""
msgid "parent"
msgstr ""
-#: InvenTree/settings.py:491
+#: InvenTree/settings.py:492
msgid "English"
msgstr ""
-#: InvenTree/settings.py:492
+#: InvenTree/settings.py:493
msgid "French"
msgstr ""
-#: InvenTree/settings.py:493
+#: InvenTree/settings.py:494
msgid "German"
msgstr ""
-#: InvenTree/settings.py:494
+#: InvenTree/settings.py:495
msgid "Polish"
msgstr ""
-#: InvenTree/settings.py:495
+#: InvenTree/settings.py:496
msgid "Turkish"
msgstr ""
@@ -466,6 +466,7 @@ msgstr ""
#: 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 ""
#: 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 ""
@@ -1428,27 +1429,60 @@ msgstr ""
msgid "Add Build Order Attachment"
msgstr ""
-#: 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 ""
-#: 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 ""
-#: 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 ""
-#: 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 ""
-#: 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 ""
+#: common/files.py:64
+msgid "Unsupported file format: {ext.upper()}"
+msgstr ""
+
+#: common/files.py:69
+msgid "Error reading file (invalid format)"
+msgstr ""
+
+#: common/files.py:71
+msgid "Error reading file (incorrect dimension)"
+msgstr ""
+
+#: common/files.py:73
+msgid "Error reading file (data could be corrupted)"
+msgstr ""
+
+#: common/forms.py:38 templates/attachment_table.html:15
+msgid "File"
+msgstr ""
+
+#: common/forms.py:39
+msgid "Select file to upload"
+msgstr ""
+
+#: common/forms.py:54
+msgid "{name.title()} File"
+msgstr ""
+
+#: common/forms.py:55
+#, python-brace-format
+msgid "Select {name} file to upload"
+msgstr ""
+
#: common/models.py:58
msgid "InvenTree Instance Name"
msgstr ""
@@ -1801,18 +1835,36 @@ msgstr ""
msgid "Current value"
msgstr ""
-#: common/views.py:25
+#: common/views.py:32
msgid "Change Setting"
msgstr ""
-#: common/views.py:94
+#: common/views.py:101
msgid "Supplied value is not allowed"
msgstr ""
-#: common/views.py:103
+#: common/views.py:110
msgid "Supplied value must be a boolean"
msgstr ""
+#: common/views.py:184 order/templates/order/order_wizard/po_upload.html:42
+#: order/views.py:582 part/templates/part/bom_upload/upload_file.html:27
+msgid "Upload File"
+msgstr ""
+
+#: 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 ""
+
+#: common/views.py:186
+msgid "Match Items"
+msgstr ""
+
+#: common/views.py:479
+msgid "Fields matching failed"
+msgstr ""
+
#: company/forms.py:38 company/models.py:142
#: company/templates/company/detail.html:42
msgid "Currency"
@@ -1950,7 +2002,7 @@ msgstr ""
msgid "Base Part"
msgstr ""
-#: 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 ""
@@ -2073,7 +2125,7 @@ msgstr ""
msgid "Download image from URL"
msgstr ""
-#: 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 ""
@@ -2956,6 +3008,75 @@ msgstr ""
msgid "Order Notes"
msgstr ""
+#: order/templates/order/order_wizard/match_fields.html:9
+#: part/templates/part/bom_upload/select_fields.html:21
+msgid "Missing selections for the following required columns"
+msgstr ""
+
+#: order/templates/order/order_wizard/match_fields.html:20
+msgid "Duplicate selections found, see below. Fix them then retry submitting."
+msgstr ""
+
+#: 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 ""
+
+#: 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 ""
+
+#: order/templates/order/order_wizard/match_fields.html:35
+#: part/templates/part/bom_upload/select_fields.html:41
+msgid "File Fields"
+msgstr ""
+
+#: order/templates/order/order_wizard/match_fields.html:42
+#: part/templates/part/bom_upload/select_fields.html:47
+msgid "Remove column"
+msgstr ""
+
+#: order/templates/order/order_wizard/match_fields.html:60
+msgid "Duplicate selection"
+msgstr ""
+
+#: 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 ""
+
+#: 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 ""
+
+#: order/templates/order/order_wizard/match_parts.html:27
+#: part/templates/part/bom_upload/select_parts.html:39
+msgid "Row"
+msgstr ""
+
+#: order/templates/order/order_wizard/match_parts.html:28
+msgid "Select Supplier Part"
+msgstr ""
+
+#: order/templates/order/order_wizard/po_upload.html:11
+msgid "Upload File for Purchase Order"
+msgstr ""
+
+#: order/templates/order/order_wizard/po_upload.html:18
+#, python-format
+msgid "Step %(step)s of %(count)s"
+msgstr ""
+
+#: order/templates/order/order_wizard/po_upload.html:48
+msgid "Order is already processed. Files cannot be uploaded."
+msgstr ""
+
#: order/templates/order/order_wizard/select_parts.html:9
msgid "Step 1 of 2 - Select Part Suppliers"
msgstr ""
@@ -3028,8 +3149,8 @@ msgid "Purchase Order Items"
msgstr ""
#: order/templates/order/purchase_order_detail.html:24
-#: order/templates/order/sales_order_detail.html:22 order/views.py: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 ""
@@ -3238,181 +3359,185 @@ msgstr ""
msgid "Are you sure you wish to delete this line item?"
msgstr ""
-#: order/views.py:101
+#: order/views.py:104
msgid "Add Purchase Order Attachment"
msgstr ""
-#: order/views.py:151
+#: order/views.py:154
msgid "Add Sales Order Attachment"
msgstr ""
-#: order/views.py:343
+#: order/views.py:346
msgid "Create Sales Order"
msgstr ""
-#: order/views.py:378
+#: order/views.py:381
msgid "Edit Purchase Order"
msgstr ""
-#: order/views.py:398
+#: order/views.py:401
msgid "Edit Sales Order"
msgstr ""
-#: order/views.py:414
+#: order/views.py:417
msgid "Cancel Order"
msgstr ""
-#: order/views.py:423 order/views.py:449
+#: order/views.py:426 order/views.py:452
msgid "Confirm order cancellation"
msgstr ""
-#: order/views.py:426 order/views.py:452
+#: order/views.py:429 order/views.py:455
msgid "Order cannot be cancelled"
msgstr ""
-#: order/views.py:440
+#: order/views.py:443
msgid "Cancel sales order"
msgstr ""
-#: order/views.py:466
+#: order/views.py:469
msgid "Issue Order"
msgstr ""
-#: order/views.py:475
+#: order/views.py:478
msgid "Confirm order placement"
msgstr ""
-#: order/views.py:485
+#: order/views.py:488
msgid "Purchase order issued"
msgstr ""
-#: order/views.py:496
+#: order/views.py:499
msgid "Complete Order"
msgstr ""
-#: order/views.py:512
+#: order/views.py:515
msgid "Confirm order completion"
msgstr ""
-#: order/views.py:523
+#: order/views.py:526
msgid "Purchase order completed"
msgstr ""
-#: order/views.py:533
+#: order/views.py:536
msgid "Ship Order"
msgstr ""
-#: order/views.py:549
+#: order/views.py:552
msgid "Confirm order shipment"
msgstr ""
-#: order/views.py:555
+#: order/views.py:558
msgid "Could not ship order"
msgstr ""
-#: order/views.py:609
+#: order/views.py:584
+msgid "Match Supplier Parts"
+msgstr ""
+
+#: order/views.py:798
msgid "Receive Parts"
msgstr ""
-#: order/views.py:679
+#: order/views.py:868
msgid "Items received"
msgstr ""
-#: order/views.py:693
+#: order/views.py:882
msgid "No destination set"
msgstr ""
-#: order/views.py:738
+#: order/views.py:927
msgid "Error converting quantity to number"
msgstr ""
-#: order/views.py:744
+#: order/views.py:933
msgid "Receive quantity less than zero"
msgstr ""
-#: order/views.py:750
+#: order/views.py:939
msgid "No lines specified"
msgstr ""
-#: order/views.py:1071
+#: order/views.py:1260
#, python-brace-format
msgid "Ordered {n} parts"
msgstr ""
-#: order/views.py:1131
+#: order/views.py:1320
msgid "Supplier part must be specified"
msgstr ""
-#: order/views.py:1137
+#: order/views.py:1326
msgid "Supplier must match for Part and Order"
msgstr ""
-#: order/views.py:1268 order/views.py:1286
+#: order/views.py:1457 order/views.py:1475
msgid "Edit Line Item"
msgstr ""
-#: order/views.py:1302 order/views.py:1314
+#: order/views.py:1491 order/views.py:1503
msgid "Delete Line Item"
msgstr ""
-#: order/views.py:1307 order/views.py:1319
+#: order/views.py:1496 order/views.py:1508
msgid "Deleted line item"
msgstr ""
-#: order/views.py:1332
+#: order/views.py:1521
msgid "Allocate Serial Numbers"
msgstr ""
-#: order/views.py:1377
+#: order/views.py:1566
#, python-brace-format
msgid "Allocated {n} items"
msgstr ""
-#: order/views.py:1393
+#: order/views.py:1582
msgid "Select line item"
msgstr ""
-#: order/views.py:1424
+#: order/views.py:1613
#, python-brace-format
msgid "No matching item for serial {serial}"
msgstr ""
-#: order/views.py:1434
+#: order/views.py:1623
#, python-brace-format
msgid "{serial} is not in stock"
msgstr ""
-#: order/views.py:1442
+#: order/views.py:1631
#, python-brace-format
msgid "{serial} already allocated to an order"
msgstr ""
-#: order/views.py:1496
+#: order/views.py:1685
msgid "Allocate Stock to Order"
msgstr ""
-#: order/views.py:1570
+#: order/views.py:1759
msgid "Edit Allocation Quantity"
msgstr ""
-#: order/views.py:1585
+#: order/views.py:1774
msgid "Remove allocation"
msgstr ""
-#: order/views.py:1657
+#: order/views.py:1846
msgid "Sales order not found"
msgstr ""
-#: order/views.py:1663
+#: order/views.py:1852
msgid "Price not found"
msgstr ""
-#: order/views.py:1666
+#: order/views.py:1855
#, python-brace-format
msgid "Updated {part} unit-price to {price}"
msgstr ""
-#: order/views.py:1671
+#: order/views.py:1860
#, python-brace-format
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr ""
@@ -4050,51 +4175,18 @@ msgstr ""
msgid "Step 2 - Select Fields"
msgstr ""
-#: part/templates/part/bom_upload/select_fields.html:21
-msgid "Missing selections for the following required columns"
-msgstr ""
-
-#: part/templates/part/bom_upload/select_fields.html:32
-msgid "Submit Selections"
-msgstr ""
-
-#: part/templates/part/bom_upload/select_fields.html:41
-msgid "File Fields"
-msgstr ""
-
-#: part/templates/part/bom_upload/select_fields.html:47
-msgid "Remove column"
-msgstr ""
-
-#: part/templates/part/bom_upload/select_fields.html:58
-msgid "Match Fields"
-msgstr ""
-
#: part/templates/part/bom_upload/select_fields.html:68
msgid "Duplicate column selection"
msgstr ""
-#: part/templates/part/bom_upload/select_fields.html:76
-#: part/templates/part/bom_upload/select_parts.html:58
-msgid "Remove row"
-msgstr ""
-
#: part/templates/part/bom_upload/select_parts.html:16
msgid "Step 3 - Select Parts"
msgstr ""
-#: part/templates/part/bom_upload/select_parts.html:21
-msgid "Errors exist in the submitted data"
-msgstr ""
-
#: part/templates/part/bom_upload/select_parts.html:27
msgid "Submit BOM"
msgstr ""
-#: part/templates/part/bom_upload/select_parts.html:39
-msgid "Row"
-msgstr ""
-
#: 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 ""
msgid "Each part must already exist in the database"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:27
-msgid "Upload File"
-msgstr ""
-
#: part/templates/part/bom_validate.html:6
#, python-format
msgid "Confirm that the Bill of Materials (BOM) is valid for:
%(part)s"
@@ -6178,10 +6266,6 @@ msgstr ""
msgid "Add Attachment"
msgstr ""
-#: templates/attachment_table.html:15
-msgid "File"
-msgstr ""
-
#: templates/attachment_table.html:17
msgid "Uploaded"
msgstr ""
diff --git a/InvenTree/locale/pl/LC_MESSAGES/django.po b/InvenTree/locale/pl/LC_MESSAGES/django.po
index b0b8e5296a..2dee676545 100644
--- a/InvenTree/locale/pl/LC_MESSAGES/django.po
+++ b/InvenTree/locale/pl/LC_MESSAGES/django.po
@@ -2,7 +2,7 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-05-12 00:59+0000\n"
+"POT-Creation-Date: 2021-05-12 12:19+0000\n"
"PO-Revision-Date: 2021-05-10 02:59\n"
"Last-Translator: \n"
"Language-Team: Polish\n"
@@ -171,23 +171,23 @@ msgstr "Opis (opcjonalny)"
msgid "parent"
msgstr "nadrzędny"
-#: InvenTree/settings.py:491
+#: InvenTree/settings.py:492
msgid "English"
msgstr "Angielski"
-#: InvenTree/settings.py:492
+#: InvenTree/settings.py:493
msgid "French"
msgstr "Francuski"
-#: InvenTree/settings.py:493
+#: InvenTree/settings.py:494
msgid "German"
msgstr "Niemiecki"
-#: InvenTree/settings.py:494
+#: InvenTree/settings.py:495
msgid "Polish"
msgstr "Polski"
-#: InvenTree/settings.py:495
+#: InvenTree/settings.py:496
msgid "Turkish"
msgstr "Turecki"
@@ -482,6 +482,7 @@ msgstr ""
#: 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
@@ -906,7 +907,7 @@ msgstr "Zamów wymagane komponenty"
#: 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 "Zamów części"
@@ -1444,27 +1445,63 @@ msgstr ""
msgid "Add Build Order Attachment"
msgstr ""
-#: 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 ""
-#: 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 "Edytuj Załącznik"
-#: 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 "Załącznik zaktualizowany"
-#: 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 "Usuń załącznik"
-#: 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 "Usunięty załącznik"
+#: common/files.py:64
+msgid "Unsupported file format: {ext.upper()}"
+msgstr ""
+
+#: common/files.py:69
+msgid "Error reading file (invalid format)"
+msgstr ""
+
+#: common/files.py:71
+msgid "Error reading file (incorrect dimension)"
+msgstr ""
+
+#: common/files.py:73
+msgid "Error reading file (data could be corrupted)"
+msgstr ""
+
+#: common/forms.py:38 templates/attachment_table.html:15
+msgid "File"
+msgstr ""
+
+#: common/forms.py:39
+#, fuzzy
+#| msgid "Select file to attach"
+msgid "Select file to upload"
+msgstr "Wybierz plik do załączenia"
+
+#: common/forms.py:54
+msgid "{name.title()} File"
+msgstr ""
+
+#: common/forms.py:55
+#, fuzzy, python-brace-format
+#| msgid "Select file to attach"
+msgid "Select {name} file to upload"
+msgstr "Wybierz plik do załączenia"
+
#: common/models.py:58
msgid "InvenTree Instance Name"
msgstr "Nazwa instancji InvenTree"
@@ -1817,18 +1854,38 @@ msgstr "Domyślny"
msgid "Current value"
msgstr "Aktualna wartość"
-#: common/views.py:25
+#: common/views.py:32
msgid "Change Setting"
msgstr "Zmień Ustawienie"
-#: common/views.py:94
+#: common/views.py:101
msgid "Supplied value is not allowed"
msgstr ""
-#: common/views.py:103
+#: common/views.py:110
msgid "Supplied value must be a boolean"
msgstr ""
+#: common/views.py:184 order/templates/order/order_wizard/po_upload.html:42
+#: order/views.py:582 part/templates/part/bom_upload/upload_file.html:27
+msgid "Upload File"
+msgstr ""
+
+#: 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 ""
+
+#: common/views.py:186
+#, fuzzy
+#| msgid "Stock Item"
+msgid "Match Items"
+msgstr "Element magazynowy"
+
+#: common/views.py:479
+msgid "Fields matching failed"
+msgstr ""
+
#: company/forms.py:38 company/models.py:142
#: company/templates/company/detail.html:42
msgid "Currency"
@@ -1966,7 +2023,7 @@ msgstr "Czy to przedsiębiorstwo produkuje części?"
msgid "Base Part"
msgstr "Część bazowa"
-#: 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 "Wybierz część"
@@ -2089,7 +2146,7 @@ msgstr "Prześlij nowy obraz"
msgid "Download image from URL"
msgstr ""
-#: 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 ""
@@ -2972,6 +3029,79 @@ msgstr ""
msgid "Order Notes"
msgstr ""
+#: order/templates/order/order_wizard/match_fields.html:9
+#: part/templates/part/bom_upload/select_fields.html:21
+msgid "Missing selections for the following required columns"
+msgstr ""
+
+#: order/templates/order/order_wizard/match_fields.html:20
+msgid "Duplicate selections found, see below. Fix them then retry submitting."
+msgstr ""
+
+#: 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 ""
+
+#: 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 ""
+
+#: order/templates/order/order_wizard/match_fields.html:35
+#: part/templates/part/bom_upload/select_fields.html:41
+msgid "File Fields"
+msgstr ""
+
+#: order/templates/order/order_wizard/match_fields.html:42
+#: part/templates/part/bom_upload/select_fields.html:47
+msgid "Remove column"
+msgstr ""
+
+#: order/templates/order/order_wizard/match_fields.html:60
+#, fuzzy
+#| msgid "Duplicate serial: {n}"
+msgid "Duplicate selection"
+msgstr "Powtórzony numer seryjny: {n}"
+
+#: 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 ""
+
+#: 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 ""
+
+#: order/templates/order/order_wizard/match_parts.html:27
+#: part/templates/part/bom_upload/select_parts.html:39
+msgid "Row"
+msgstr ""
+
+#: order/templates/order/order_wizard/match_parts.html:28
+#, fuzzy
+#| msgid "Select supplier"
+msgid "Select Supplier Part"
+msgstr "Wybierz dostawcę"
+
+#: order/templates/order/order_wizard/po_upload.html:11
+msgid "Upload File for Purchase Order"
+msgstr ""
+
+#: order/templates/order/order_wizard/po_upload.html:18
+#, python-format
+msgid "Step %(step)s of %(count)s"
+msgstr ""
+
+#: order/templates/order/order_wizard/po_upload.html:48
+msgid "Order is already processed. Files cannot be uploaded."
+msgstr ""
+
#: order/templates/order/order_wizard/select_parts.html:9
msgid "Step 1 of 2 - Select Part Suppliers"
msgstr ""
@@ -3044,8 +3174,8 @@ msgid "Purchase Order Items"
msgstr ""
#: order/templates/order/purchase_order_detail.html:24
-#: order/templates/order/sales_order_detail.html:22 order/views.py: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 ""
@@ -3254,181 +3384,187 @@ msgstr ""
msgid "Are you sure you wish to delete this line item?"
msgstr ""
-#: order/views.py:101
+#: order/views.py:104
msgid "Add Purchase Order Attachment"
msgstr ""
-#: order/views.py:151
+#: order/views.py:154
msgid "Add Sales Order Attachment"
msgstr ""
-#: order/views.py:343
+#: order/views.py:346
msgid "Create Sales Order"
msgstr ""
-#: order/views.py:378
+#: order/views.py:381
msgid "Edit Purchase Order"
msgstr ""
-#: order/views.py:398
+#: order/views.py:401
msgid "Edit Sales Order"
msgstr ""
-#: order/views.py:414
+#: order/views.py:417
msgid "Cancel Order"
msgstr ""
-#: order/views.py:423 order/views.py:449
+#: order/views.py:426 order/views.py:452
msgid "Confirm order cancellation"
msgstr ""
-#: order/views.py:426 order/views.py:452
+#: order/views.py:429 order/views.py:455
msgid "Order cannot be cancelled"
msgstr ""
-#: order/views.py:440
+#: order/views.py:443
msgid "Cancel sales order"
msgstr ""
-#: order/views.py:466
+#: order/views.py:469
msgid "Issue Order"
msgstr ""
-#: order/views.py:475
+#: order/views.py:478
msgid "Confirm order placement"
msgstr ""
-#: order/views.py:485
+#: order/views.py:488
msgid "Purchase order issued"
msgstr ""
-#: order/views.py:496
+#: order/views.py:499
msgid "Complete Order"
msgstr ""
-#: order/views.py:512
+#: order/views.py:515
msgid "Confirm order completion"
msgstr ""
-#: order/views.py:523
+#: order/views.py:526
msgid "Purchase order completed"
msgstr ""
-#: order/views.py:533
+#: order/views.py:536
msgid "Ship Order"
msgstr ""
-#: order/views.py:549
+#: order/views.py:552
msgid "Confirm order shipment"
msgstr ""
-#: order/views.py:555
+#: order/views.py:558
msgid "Could not ship order"
msgstr ""
-#: order/views.py:609
+#: order/views.py:584
+#, fuzzy
+#| msgid "Supplier Parts"
+msgid "Match Supplier Parts"
+msgstr "Komponenty Dostawcy"
+
+#: order/views.py:798
msgid "Receive Parts"
msgstr ""
-#: order/views.py:679
+#: order/views.py:868
msgid "Items received"
msgstr ""
-#: order/views.py:693
+#: order/views.py:882
msgid "No destination set"
msgstr ""
-#: order/views.py:738
+#: order/views.py:927
msgid "Error converting quantity to number"
msgstr ""
-#: order/views.py:744
+#: order/views.py:933
msgid "Receive quantity less than zero"
msgstr ""
-#: order/views.py:750
+#: order/views.py:939
msgid "No lines specified"
msgstr ""
-#: order/views.py:1071
+#: order/views.py:1260
#, python-brace-format
msgid "Ordered {n} parts"
msgstr ""
-#: order/views.py:1131
+#: order/views.py:1320
msgid "Supplier part must be specified"
msgstr ""
-#: order/views.py:1137
+#: order/views.py:1326
msgid "Supplier must match for Part and Order"
msgstr ""
-#: order/views.py:1268 order/views.py:1286
+#: order/views.py:1457 order/views.py:1475
msgid "Edit Line Item"
msgstr ""
-#: order/views.py:1302 order/views.py:1314
+#: order/views.py:1491 order/views.py:1503
msgid "Delete Line Item"
msgstr ""
-#: order/views.py:1307 order/views.py:1319
+#: order/views.py:1496 order/views.py:1508
msgid "Deleted line item"
msgstr ""
-#: order/views.py:1332
+#: order/views.py:1521
msgid "Allocate Serial Numbers"
msgstr ""
-#: order/views.py:1377
+#: order/views.py:1566
#, python-brace-format
msgid "Allocated {n} items"
msgstr ""
-#: order/views.py:1393
+#: order/views.py:1582
msgid "Select line item"
msgstr ""
-#: order/views.py:1424
+#: order/views.py:1613
#, python-brace-format
msgid "No matching item for serial {serial}"
msgstr ""
-#: order/views.py:1434
+#: order/views.py:1623
#, python-brace-format
msgid "{serial} is not in stock"
msgstr ""
-#: order/views.py:1442
+#: order/views.py:1631
#, python-brace-format
msgid "{serial} already allocated to an order"
msgstr ""
-#: order/views.py:1496
+#: order/views.py:1685
msgid "Allocate Stock to Order"
msgstr ""
-#: order/views.py:1570
+#: order/views.py:1759
msgid "Edit Allocation Quantity"
msgstr ""
-#: order/views.py:1585
+#: order/views.py:1774
msgid "Remove allocation"
msgstr ""
-#: order/views.py:1657
+#: order/views.py:1846
msgid "Sales order not found"
msgstr ""
-#: order/views.py:1663
+#: order/views.py:1852
msgid "Price not found"
msgstr ""
-#: order/views.py:1666
+#: order/views.py:1855
#, python-brace-format
msgid "Updated {part} unit-price to {price}"
msgstr ""
-#: order/views.py:1671
+#: order/views.py:1860
#, python-brace-format
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr ""
@@ -4066,51 +4202,18 @@ msgstr ""
msgid "Step 2 - Select Fields"
msgstr ""
-#: part/templates/part/bom_upload/select_fields.html:21
-msgid "Missing selections for the following required columns"
-msgstr ""
-
-#: part/templates/part/bom_upload/select_fields.html:32
-msgid "Submit Selections"
-msgstr ""
-
-#: part/templates/part/bom_upload/select_fields.html:41
-msgid "File Fields"
-msgstr ""
-
-#: part/templates/part/bom_upload/select_fields.html:47
-msgid "Remove column"
-msgstr ""
-
-#: part/templates/part/bom_upload/select_fields.html:58
-msgid "Match Fields"
-msgstr ""
-
#: part/templates/part/bom_upload/select_fields.html:68
msgid "Duplicate column selection"
msgstr ""
-#: part/templates/part/bom_upload/select_fields.html:76
-#: part/templates/part/bom_upload/select_parts.html:58
-msgid "Remove row"
-msgstr ""
-
#: part/templates/part/bom_upload/select_parts.html:16
msgid "Step 3 - Select Parts"
msgstr ""
-#: part/templates/part/bom_upload/select_parts.html:21
-msgid "Errors exist in the submitted data"
-msgstr ""
-
#: part/templates/part/bom_upload/select_parts.html:27
msgid "Submit BOM"
msgstr ""
-#: part/templates/part/bom_upload/select_parts.html:39
-msgid "Row"
-msgstr ""
-
#: part/templates/part/bom_upload/select_parts.html:40
#: part/templates/part/bom_upload/select_parts.html:69
msgid "Select Part"
@@ -4141,10 +4244,6 @@ msgstr ""
msgid "Each part must already exist in the database"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:27
-msgid "Upload File"
-msgstr ""
-
#: part/templates/part/bom_validate.html:6
#, python-format
msgid "Confirm that the Bill of Materials (BOM) is valid for:
%(part)s"
@@ -6196,10 +6295,6 @@ msgstr ""
msgid "Add Attachment"
msgstr ""
-#: templates/attachment_table.html:15
-msgid "File"
-msgstr ""
-
#: templates/attachment_table.html:17
msgid "Uploaded"
msgstr ""
diff --git a/InvenTree/locale/ru/LC_MESSAGES/django.po b/InvenTree/locale/ru/LC_MESSAGES/django.po
index 9f101b1592..8b97473e4c 100644
--- a/InvenTree/locale/ru/LC_MESSAGES/django.po
+++ b/InvenTree/locale/ru/LC_MESSAGES/django.po
@@ -2,7 +2,7 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-05-12 00:59+0000\n"
+"POT-Creation-Date: 2021-05-12 12:19+0000\n"
"PO-Revision-Date: 2021-05-10 02:59\n"
"Last-Translator: \n"
"Language-Team: Russian\n"
@@ -171,23 +171,23 @@ msgstr ""
msgid "parent"
msgstr ""
-#: InvenTree/settings.py:491
+#: InvenTree/settings.py:492
msgid "English"
msgstr ""
-#: InvenTree/settings.py:492
+#: InvenTree/settings.py:493
msgid "French"
msgstr ""
-#: InvenTree/settings.py:493
+#: InvenTree/settings.py:494
msgid "German"
msgstr ""
-#: InvenTree/settings.py:494
+#: InvenTree/settings.py:495
msgid "Polish"
msgstr ""
-#: InvenTree/settings.py:495
+#: InvenTree/settings.py:496
msgid "Turkish"
msgstr ""
@@ -466,6 +466,7 @@ msgstr ""
#: 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 ""
#: 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 ""
@@ -1428,27 +1429,60 @@ msgstr ""
msgid "Add Build Order Attachment"
msgstr ""
-#: 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 ""
-#: 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 ""
-#: 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 ""
-#: 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 ""
-#: 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 ""
+#: common/files.py:64
+msgid "Unsupported file format: {ext.upper()}"
+msgstr ""
+
+#: common/files.py:69
+msgid "Error reading file (invalid format)"
+msgstr ""
+
+#: common/files.py:71
+msgid "Error reading file (incorrect dimension)"
+msgstr ""
+
+#: common/files.py:73
+msgid "Error reading file (data could be corrupted)"
+msgstr ""
+
+#: common/forms.py:38 templates/attachment_table.html:15
+msgid "File"
+msgstr ""
+
+#: common/forms.py:39
+msgid "Select file to upload"
+msgstr ""
+
+#: common/forms.py:54
+msgid "{name.title()} File"
+msgstr ""
+
+#: common/forms.py:55
+#, python-brace-format
+msgid "Select {name} file to upload"
+msgstr ""
+
#: common/models.py:58
msgid "InvenTree Instance Name"
msgstr ""
@@ -1801,18 +1835,36 @@ msgstr ""
msgid "Current value"
msgstr ""
-#: common/views.py:25
+#: common/views.py:32
msgid "Change Setting"
msgstr ""
-#: common/views.py:94
+#: common/views.py:101
msgid "Supplied value is not allowed"
msgstr ""
-#: common/views.py:103
+#: common/views.py:110
msgid "Supplied value must be a boolean"
msgstr ""
+#: common/views.py:184 order/templates/order/order_wizard/po_upload.html:42
+#: order/views.py:582 part/templates/part/bom_upload/upload_file.html:27
+msgid "Upload File"
+msgstr ""
+
+#: 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 ""
+
+#: common/views.py:186
+msgid "Match Items"
+msgstr ""
+
+#: common/views.py:479
+msgid "Fields matching failed"
+msgstr ""
+
#: company/forms.py:38 company/models.py:142
#: company/templates/company/detail.html:42
msgid "Currency"
@@ -1950,7 +2002,7 @@ msgstr ""
msgid "Base Part"
msgstr ""
-#: 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 ""
@@ -2073,7 +2125,7 @@ msgstr ""
msgid "Download image from URL"
msgstr ""
-#: 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 ""
@@ -2956,6 +3008,75 @@ msgstr ""
msgid "Order Notes"
msgstr ""
+#: order/templates/order/order_wizard/match_fields.html:9
+#: part/templates/part/bom_upload/select_fields.html:21
+msgid "Missing selections for the following required columns"
+msgstr ""
+
+#: order/templates/order/order_wizard/match_fields.html:20
+msgid "Duplicate selections found, see below. Fix them then retry submitting."
+msgstr ""
+
+#: 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 ""
+
+#: 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 ""
+
+#: order/templates/order/order_wizard/match_fields.html:35
+#: part/templates/part/bom_upload/select_fields.html:41
+msgid "File Fields"
+msgstr ""
+
+#: order/templates/order/order_wizard/match_fields.html:42
+#: part/templates/part/bom_upload/select_fields.html:47
+msgid "Remove column"
+msgstr ""
+
+#: order/templates/order/order_wizard/match_fields.html:60
+msgid "Duplicate selection"
+msgstr ""
+
+#: 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 ""
+
+#: 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 ""
+
+#: order/templates/order/order_wizard/match_parts.html:27
+#: part/templates/part/bom_upload/select_parts.html:39
+msgid "Row"
+msgstr ""
+
+#: order/templates/order/order_wizard/match_parts.html:28
+msgid "Select Supplier Part"
+msgstr ""
+
+#: order/templates/order/order_wizard/po_upload.html:11
+msgid "Upload File for Purchase Order"
+msgstr ""
+
+#: order/templates/order/order_wizard/po_upload.html:18
+#, python-format
+msgid "Step %(step)s of %(count)s"
+msgstr ""
+
+#: order/templates/order/order_wizard/po_upload.html:48
+msgid "Order is already processed. Files cannot be uploaded."
+msgstr ""
+
#: order/templates/order/order_wizard/select_parts.html:9
msgid "Step 1 of 2 - Select Part Suppliers"
msgstr ""
@@ -3028,8 +3149,8 @@ msgid "Purchase Order Items"
msgstr ""
#: order/templates/order/purchase_order_detail.html:24
-#: order/templates/order/sales_order_detail.html:22 order/views.py: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 ""
@@ -3238,181 +3359,185 @@ msgstr ""
msgid "Are you sure you wish to delete this line item?"
msgstr ""
-#: order/views.py:101
+#: order/views.py:104
msgid "Add Purchase Order Attachment"
msgstr ""
-#: order/views.py:151
+#: order/views.py:154
msgid "Add Sales Order Attachment"
msgstr ""
-#: order/views.py:343
+#: order/views.py:346
msgid "Create Sales Order"
msgstr ""
-#: order/views.py:378
+#: order/views.py:381
msgid "Edit Purchase Order"
msgstr ""
-#: order/views.py:398
+#: order/views.py:401
msgid "Edit Sales Order"
msgstr ""
-#: order/views.py:414
+#: order/views.py:417
msgid "Cancel Order"
msgstr ""
-#: order/views.py:423 order/views.py:449
+#: order/views.py:426 order/views.py:452
msgid "Confirm order cancellation"
msgstr ""
-#: order/views.py:426 order/views.py:452
+#: order/views.py:429 order/views.py:455
msgid "Order cannot be cancelled"
msgstr ""
-#: order/views.py:440
+#: order/views.py:443
msgid "Cancel sales order"
msgstr ""
-#: order/views.py:466
+#: order/views.py:469
msgid "Issue Order"
msgstr ""
-#: order/views.py:475
+#: order/views.py:478
msgid "Confirm order placement"
msgstr ""
-#: order/views.py:485
+#: order/views.py:488
msgid "Purchase order issued"
msgstr ""
-#: order/views.py:496
+#: order/views.py:499
msgid "Complete Order"
msgstr ""
-#: order/views.py:512
+#: order/views.py:515
msgid "Confirm order completion"
msgstr ""
-#: order/views.py:523
+#: order/views.py:526
msgid "Purchase order completed"
msgstr ""
-#: order/views.py:533
+#: order/views.py:536
msgid "Ship Order"
msgstr ""
-#: order/views.py:549
+#: order/views.py:552
msgid "Confirm order shipment"
msgstr ""
-#: order/views.py:555
+#: order/views.py:558
msgid "Could not ship order"
msgstr ""
-#: order/views.py:609
+#: order/views.py:584
+msgid "Match Supplier Parts"
+msgstr ""
+
+#: order/views.py:798
msgid "Receive Parts"
msgstr ""
-#: order/views.py:679
+#: order/views.py:868
msgid "Items received"
msgstr ""
-#: order/views.py:693
+#: order/views.py:882
msgid "No destination set"
msgstr ""
-#: order/views.py:738
+#: order/views.py:927
msgid "Error converting quantity to number"
msgstr ""
-#: order/views.py:744
+#: order/views.py:933
msgid "Receive quantity less than zero"
msgstr ""
-#: order/views.py:750
+#: order/views.py:939
msgid "No lines specified"
msgstr ""
-#: order/views.py:1071
+#: order/views.py:1260
#, python-brace-format
msgid "Ordered {n} parts"
msgstr ""
-#: order/views.py:1131
+#: order/views.py:1320
msgid "Supplier part must be specified"
msgstr ""
-#: order/views.py:1137
+#: order/views.py:1326
msgid "Supplier must match for Part and Order"
msgstr ""
-#: order/views.py:1268 order/views.py:1286
+#: order/views.py:1457 order/views.py:1475
msgid "Edit Line Item"
msgstr ""
-#: order/views.py:1302 order/views.py:1314
+#: order/views.py:1491 order/views.py:1503
msgid "Delete Line Item"
msgstr ""
-#: order/views.py:1307 order/views.py:1319
+#: order/views.py:1496 order/views.py:1508
msgid "Deleted line item"
msgstr ""
-#: order/views.py:1332
+#: order/views.py:1521
msgid "Allocate Serial Numbers"
msgstr ""
-#: order/views.py:1377
+#: order/views.py:1566
#, python-brace-format
msgid "Allocated {n} items"
msgstr ""
-#: order/views.py:1393
+#: order/views.py:1582
msgid "Select line item"
msgstr ""
-#: order/views.py:1424
+#: order/views.py:1613
#, python-brace-format
msgid "No matching item for serial {serial}"
msgstr ""
-#: order/views.py:1434
+#: order/views.py:1623
#, python-brace-format
msgid "{serial} is not in stock"
msgstr ""
-#: order/views.py:1442
+#: order/views.py:1631
#, python-brace-format
msgid "{serial} already allocated to an order"
msgstr ""
-#: order/views.py:1496
+#: order/views.py:1685
msgid "Allocate Stock to Order"
msgstr ""
-#: order/views.py:1570
+#: order/views.py:1759
msgid "Edit Allocation Quantity"
msgstr ""
-#: order/views.py:1585
+#: order/views.py:1774
msgid "Remove allocation"
msgstr ""
-#: order/views.py:1657
+#: order/views.py:1846
msgid "Sales order not found"
msgstr ""
-#: order/views.py:1663
+#: order/views.py:1852
msgid "Price not found"
msgstr ""
-#: order/views.py:1666
+#: order/views.py:1855
#, python-brace-format
msgid "Updated {part} unit-price to {price}"
msgstr ""
-#: order/views.py:1671
+#: order/views.py:1860
#, python-brace-format
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr ""
@@ -4050,51 +4175,18 @@ msgstr ""
msgid "Step 2 - Select Fields"
msgstr ""
-#: part/templates/part/bom_upload/select_fields.html:21
-msgid "Missing selections for the following required columns"
-msgstr ""
-
-#: part/templates/part/bom_upload/select_fields.html:32
-msgid "Submit Selections"
-msgstr ""
-
-#: part/templates/part/bom_upload/select_fields.html:41
-msgid "File Fields"
-msgstr ""
-
-#: part/templates/part/bom_upload/select_fields.html:47
-msgid "Remove column"
-msgstr ""
-
-#: part/templates/part/bom_upload/select_fields.html:58
-msgid "Match Fields"
-msgstr ""
-
#: part/templates/part/bom_upload/select_fields.html:68
msgid "Duplicate column selection"
msgstr ""
-#: part/templates/part/bom_upload/select_fields.html:76
-#: part/templates/part/bom_upload/select_parts.html:58
-msgid "Remove row"
-msgstr ""
-
#: part/templates/part/bom_upload/select_parts.html:16
msgid "Step 3 - Select Parts"
msgstr ""
-#: part/templates/part/bom_upload/select_parts.html:21
-msgid "Errors exist in the submitted data"
-msgstr ""
-
#: part/templates/part/bom_upload/select_parts.html:27
msgid "Submit BOM"
msgstr ""
-#: part/templates/part/bom_upload/select_parts.html:39
-msgid "Row"
-msgstr ""
-
#: 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 ""
msgid "Each part must already exist in the database"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:27
-msgid "Upload File"
-msgstr ""
-
#: part/templates/part/bom_validate.html:6
#, python-format
msgid "Confirm that the Bill of Materials (BOM) is valid for:
%(part)s"
@@ -6178,10 +6266,6 @@ msgstr ""
msgid "Add Attachment"
msgstr ""
-#: templates/attachment_table.html:15
-msgid "File"
-msgstr ""
-
#: templates/attachment_table.html:17
msgid "Uploaded"
msgstr ""
diff --git a/InvenTree/locale/tr/LC_MESSAGES/django.po b/InvenTree/locale/tr/LC_MESSAGES/django.po
index ca23e6f8db..b441ec2d6e 100644
--- a/InvenTree/locale/tr/LC_MESSAGES/django.po
+++ b/InvenTree/locale/tr/LC_MESSAGES/django.po
@@ -2,7 +2,7 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-05-12 00:59+0000\n"
+"POT-Creation-Date: 2021-05-12 12:19+0000\n"
"PO-Revision-Date: 2021-05-10 02:59\n"
"Last-Translator: \n"
"Language-Team: Turkish\n"
@@ -171,23 +171,23 @@ msgstr "Açıklama(opsiyonel)"
msgid "parent"
msgstr "ebeveyn"
-#: InvenTree/settings.py:491
+#: InvenTree/settings.py:492
msgid "English"
msgstr "İngilizce"
-#: InvenTree/settings.py:492
+#: InvenTree/settings.py:493
msgid "French"
msgstr "Fransızca"
-#: InvenTree/settings.py:493
+#: InvenTree/settings.py:494
msgid "German"
msgstr "Almanca"
-#: InvenTree/settings.py:494
+#: InvenTree/settings.py:495
msgid "Polish"
msgstr "Polonyaca"
-#: InvenTree/settings.py:495
+#: InvenTree/settings.py:496
msgid "Turkish"
msgstr "Türkçe"
@@ -468,6 +468,7 @@ msgstr ""
#: 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
@@ -892,7 +893,7 @@ msgstr ""
#: 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 ""
@@ -1430,27 +1431,63 @@ msgstr ""
msgid "Add Build Order Attachment"
msgstr ""
-#: 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 ""
-#: 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 ""
-#: 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 ""
-#: 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 ""
-#: 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 ""
+#: common/files.py:64
+msgid "Unsupported file format: {ext.upper()}"
+msgstr ""
+
+#: common/files.py:69
+msgid "Error reading file (invalid format)"
+msgstr ""
+
+#: common/files.py:71
+msgid "Error reading file (incorrect dimension)"
+msgstr ""
+
+#: common/files.py:73
+msgid "Error reading file (data could be corrupted)"
+msgstr ""
+
+#: common/forms.py:38 templates/attachment_table.html:15
+msgid "File"
+msgstr ""
+
+#: common/forms.py:39
+#, fuzzy
+#| msgid "Select file to attach"
+msgid "Select file to upload"
+msgstr "Eklenecek dosyayı seç"
+
+#: common/forms.py:54
+msgid "{name.title()} File"
+msgstr ""
+
+#: common/forms.py:55
+#, fuzzy, python-brace-format
+#| msgid "Select file to attach"
+msgid "Select {name} file to upload"
+msgstr "Eklenecek dosyayı seç"
+
#: common/models.py:58
msgid "InvenTree Instance Name"
msgstr ""
@@ -1803,18 +1840,36 @@ msgstr ""
msgid "Current value"
msgstr ""
-#: common/views.py:25
+#: common/views.py:32
msgid "Change Setting"
msgstr ""
-#: common/views.py:94
+#: common/views.py:101
msgid "Supplied value is not allowed"
msgstr ""
-#: common/views.py:103
+#: common/views.py:110
msgid "Supplied value must be a boolean"
msgstr ""
+#: common/views.py:184 order/templates/order/order_wizard/po_upload.html:42
+#: order/views.py:582 part/templates/part/bom_upload/upload_file.html:27
+msgid "Upload File"
+msgstr ""
+
+#: 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 ""
+
+#: common/views.py:186
+msgid "Match Items"
+msgstr ""
+
+#: common/views.py:479
+msgid "Fields matching failed"
+msgstr ""
+
#: company/forms.py:38 company/models.py:142
#: company/templates/company/detail.html:42
msgid "Currency"
@@ -1952,7 +2007,7 @@ msgstr ""
msgid "Base Part"
msgstr ""
-#: 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 ""
@@ -2075,7 +2130,7 @@ msgstr ""
msgid "Download image from URL"
msgstr ""
-#: 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 ""
@@ -2958,6 +3013,77 @@ msgstr ""
msgid "Order Notes"
msgstr ""
+#: order/templates/order/order_wizard/match_fields.html:9
+#: part/templates/part/bom_upload/select_fields.html:21
+msgid "Missing selections for the following required columns"
+msgstr ""
+
+#: order/templates/order/order_wizard/match_fields.html:20
+msgid "Duplicate selections found, see below. Fix them then retry submitting."
+msgstr ""
+
+#: 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 ""
+
+#: 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 ""
+
+#: order/templates/order/order_wizard/match_fields.html:35
+#: part/templates/part/bom_upload/select_fields.html:41
+msgid "File Fields"
+msgstr ""
+
+#: order/templates/order/order_wizard/match_fields.html:42
+#: part/templates/part/bom_upload/select_fields.html:47
+msgid "Remove column"
+msgstr ""
+
+#: order/templates/order/order_wizard/match_fields.html:60
+#, fuzzy
+#| msgid "Duplicate serial: {n}"
+msgid "Duplicate selection"
+msgstr "Tekrarlanan seri {n}"
+
+#: 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 ""
+
+#: 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 ""
+
+#: order/templates/order/order_wizard/match_parts.html:27
+#: part/templates/part/bom_upload/select_parts.html:39
+msgid "Row"
+msgstr ""
+
+#: order/templates/order/order_wizard/match_parts.html:28
+msgid "Select Supplier Part"
+msgstr ""
+
+#: order/templates/order/order_wizard/po_upload.html:11
+msgid "Upload File for Purchase Order"
+msgstr ""
+
+#: order/templates/order/order_wizard/po_upload.html:18
+#, python-format
+msgid "Step %(step)s of %(count)s"
+msgstr ""
+
+#: order/templates/order/order_wizard/po_upload.html:48
+msgid "Order is already processed. Files cannot be uploaded."
+msgstr ""
+
#: order/templates/order/order_wizard/select_parts.html:9
msgid "Step 1 of 2 - Select Part Suppliers"
msgstr ""
@@ -3030,8 +3156,8 @@ msgid "Purchase Order Items"
msgstr ""
#: order/templates/order/purchase_order_detail.html:24
-#: order/templates/order/sales_order_detail.html:22 order/views.py: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 ""
@@ -3240,181 +3366,185 @@ msgstr ""
msgid "Are you sure you wish to delete this line item?"
msgstr ""
-#: order/views.py:101
+#: order/views.py:104
msgid "Add Purchase Order Attachment"
msgstr ""
-#: order/views.py:151
+#: order/views.py:154
msgid "Add Sales Order Attachment"
msgstr ""
-#: order/views.py:343
+#: order/views.py:346
msgid "Create Sales Order"
msgstr ""
-#: order/views.py:378
+#: order/views.py:381
msgid "Edit Purchase Order"
msgstr ""
-#: order/views.py:398
+#: order/views.py:401
msgid "Edit Sales Order"
msgstr ""
-#: order/views.py:414
+#: order/views.py:417
msgid "Cancel Order"
msgstr ""
-#: order/views.py:423 order/views.py:449
+#: order/views.py:426 order/views.py:452
msgid "Confirm order cancellation"
msgstr ""
-#: order/views.py:426 order/views.py:452
+#: order/views.py:429 order/views.py:455
msgid "Order cannot be cancelled"
msgstr ""
-#: order/views.py:440
+#: order/views.py:443
msgid "Cancel sales order"
msgstr ""
-#: order/views.py:466
+#: order/views.py:469
msgid "Issue Order"
msgstr ""
-#: order/views.py:475
+#: order/views.py:478
msgid "Confirm order placement"
msgstr ""
-#: order/views.py:485
+#: order/views.py:488
msgid "Purchase order issued"
msgstr ""
-#: order/views.py:496
+#: order/views.py:499
msgid "Complete Order"
msgstr ""
-#: order/views.py:512
+#: order/views.py:515
msgid "Confirm order completion"
msgstr ""
-#: order/views.py:523
+#: order/views.py:526
msgid "Purchase order completed"
msgstr ""
-#: order/views.py:533
+#: order/views.py:536
msgid "Ship Order"
msgstr ""
-#: order/views.py:549
+#: order/views.py:552
msgid "Confirm order shipment"
msgstr ""
-#: order/views.py:555
+#: order/views.py:558
msgid "Could not ship order"
msgstr ""
-#: order/views.py:609
+#: order/views.py:584
+msgid "Match Supplier Parts"
+msgstr ""
+
+#: order/views.py:798
msgid "Receive Parts"
msgstr ""
-#: order/views.py:679
+#: order/views.py:868
msgid "Items received"
msgstr ""
-#: order/views.py:693
+#: order/views.py:882
msgid "No destination set"
msgstr ""
-#: order/views.py:738
+#: order/views.py:927
msgid "Error converting quantity to number"
msgstr ""
-#: order/views.py:744
+#: order/views.py:933
msgid "Receive quantity less than zero"
msgstr ""
-#: order/views.py:750
+#: order/views.py:939
msgid "No lines specified"
msgstr ""
-#: order/views.py:1071
+#: order/views.py:1260
#, python-brace-format
msgid "Ordered {n} parts"
msgstr ""
-#: order/views.py:1131
+#: order/views.py:1320
msgid "Supplier part must be specified"
msgstr ""
-#: order/views.py:1137
+#: order/views.py:1326
msgid "Supplier must match for Part and Order"
msgstr ""
-#: order/views.py:1268 order/views.py:1286
+#: order/views.py:1457 order/views.py:1475
msgid "Edit Line Item"
msgstr ""
-#: order/views.py:1302 order/views.py:1314
+#: order/views.py:1491 order/views.py:1503
msgid "Delete Line Item"
msgstr ""
-#: order/views.py:1307 order/views.py:1319
+#: order/views.py:1496 order/views.py:1508
msgid "Deleted line item"
msgstr ""
-#: order/views.py:1332
+#: order/views.py:1521
msgid "Allocate Serial Numbers"
msgstr ""
-#: order/views.py:1377
+#: order/views.py:1566
#, python-brace-format
msgid "Allocated {n} items"
msgstr ""
-#: order/views.py:1393
+#: order/views.py:1582
msgid "Select line item"
msgstr ""
-#: order/views.py:1424
+#: order/views.py:1613
#, python-brace-format
msgid "No matching item for serial {serial}"
msgstr ""
-#: order/views.py:1434
+#: order/views.py:1623
#, python-brace-format
msgid "{serial} is not in stock"
msgstr ""
-#: order/views.py:1442
+#: order/views.py:1631
#, python-brace-format
msgid "{serial} already allocated to an order"
msgstr ""
-#: order/views.py:1496
+#: order/views.py:1685
msgid "Allocate Stock to Order"
msgstr ""
-#: order/views.py:1570
+#: order/views.py:1759
msgid "Edit Allocation Quantity"
msgstr ""
-#: order/views.py:1585
+#: order/views.py:1774
msgid "Remove allocation"
msgstr ""
-#: order/views.py:1657
+#: order/views.py:1846
msgid "Sales order not found"
msgstr ""
-#: order/views.py:1663
+#: order/views.py:1852
msgid "Price not found"
msgstr ""
-#: order/views.py:1666
+#: order/views.py:1855
#, python-brace-format
msgid "Updated {part} unit-price to {price}"
msgstr ""
-#: order/views.py:1671
+#: order/views.py:1860
#, python-brace-format
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr ""
@@ -4052,51 +4182,18 @@ msgstr ""
msgid "Step 2 - Select Fields"
msgstr ""
-#: part/templates/part/bom_upload/select_fields.html:21
-msgid "Missing selections for the following required columns"
-msgstr ""
-
-#: part/templates/part/bom_upload/select_fields.html:32
-msgid "Submit Selections"
-msgstr ""
-
-#: part/templates/part/bom_upload/select_fields.html:41
-msgid "File Fields"
-msgstr ""
-
-#: part/templates/part/bom_upload/select_fields.html:47
-msgid "Remove column"
-msgstr ""
-
-#: part/templates/part/bom_upload/select_fields.html:58
-msgid "Match Fields"
-msgstr ""
-
#: part/templates/part/bom_upload/select_fields.html:68
msgid "Duplicate column selection"
msgstr ""
-#: part/templates/part/bom_upload/select_fields.html:76
-#: part/templates/part/bom_upload/select_parts.html:58
-msgid "Remove row"
-msgstr ""
-
#: part/templates/part/bom_upload/select_parts.html:16
msgid "Step 3 - Select Parts"
msgstr ""
-#: part/templates/part/bom_upload/select_parts.html:21
-msgid "Errors exist in the submitted data"
-msgstr ""
-
#: part/templates/part/bom_upload/select_parts.html:27
msgid "Submit BOM"
msgstr ""
-#: part/templates/part/bom_upload/select_parts.html:39
-msgid "Row"
-msgstr ""
-
#: part/templates/part/bom_upload/select_parts.html:40
#: part/templates/part/bom_upload/select_parts.html:69
msgid "Select Part"
@@ -4127,10 +4224,6 @@ msgstr ""
msgid "Each part must already exist in the database"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:27
-msgid "Upload File"
-msgstr ""
-
#: part/templates/part/bom_validate.html:6
#, python-format
msgid "Confirm that the Bill of Materials (BOM) is valid for:
%(part)s"
@@ -6180,10 +6273,6 @@ msgstr ""
msgid "Add Attachment"
msgstr ""
-#: templates/attachment_table.html:15
-msgid "File"
-msgstr ""
-
#: templates/attachment_table.html:17
msgid "Uploaded"
msgstr ""
diff --git a/InvenTree/locale/zh/LC_MESSAGES/django.po b/InvenTree/locale/zh/LC_MESSAGES/django.po
index 31918fecc2..f128683846 100644
--- a/InvenTree/locale/zh/LC_MESSAGES/django.po
+++ b/InvenTree/locale/zh/LC_MESSAGES/django.po
@@ -2,7 +2,7 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-05-12 00:59+0000\n"
+"POT-Creation-Date: 2021-05-12 12:19+0000\n"
"PO-Revision-Date: 2021-05-10 02:59\n"
"Last-Translator: \n"
"Language-Team: Chinese Simplified\n"
@@ -171,23 +171,23 @@ msgstr ""
msgid "parent"
msgstr ""
-#: InvenTree/settings.py:491
+#: InvenTree/settings.py:492
msgid "English"
msgstr ""
-#: InvenTree/settings.py:492
+#: InvenTree/settings.py:493
msgid "French"
msgstr ""
-#: InvenTree/settings.py:493
+#: InvenTree/settings.py:494
msgid "German"
msgstr ""
-#: InvenTree/settings.py:494
+#: InvenTree/settings.py:495
msgid "Polish"
msgstr ""
-#: InvenTree/settings.py:495
+#: InvenTree/settings.py:496
msgid "Turkish"
msgstr ""
@@ -466,6 +466,7 @@ msgstr ""
#: 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 ""
#: 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 ""
@@ -1428,27 +1429,60 @@ msgstr ""
msgid "Add Build Order Attachment"
msgstr ""
-#: 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 ""
-#: 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 ""
-#: 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 ""
-#: 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 ""
-#: 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 ""
+#: common/files.py:64
+msgid "Unsupported file format: {ext.upper()}"
+msgstr ""
+
+#: common/files.py:69
+msgid "Error reading file (invalid format)"
+msgstr ""
+
+#: common/files.py:71
+msgid "Error reading file (incorrect dimension)"
+msgstr ""
+
+#: common/files.py:73
+msgid "Error reading file (data could be corrupted)"
+msgstr ""
+
+#: common/forms.py:38 templates/attachment_table.html:15
+msgid "File"
+msgstr ""
+
+#: common/forms.py:39
+msgid "Select file to upload"
+msgstr ""
+
+#: common/forms.py:54
+msgid "{name.title()} File"
+msgstr ""
+
+#: common/forms.py:55
+#, python-brace-format
+msgid "Select {name} file to upload"
+msgstr ""
+
#: common/models.py:58
msgid "InvenTree Instance Name"
msgstr ""
@@ -1801,18 +1835,36 @@ msgstr ""
msgid "Current value"
msgstr ""
-#: common/views.py:25
+#: common/views.py:32
msgid "Change Setting"
msgstr ""
-#: common/views.py:94
+#: common/views.py:101
msgid "Supplied value is not allowed"
msgstr ""
-#: common/views.py:103
+#: common/views.py:110
msgid "Supplied value must be a boolean"
msgstr ""
+#: common/views.py:184 order/templates/order/order_wizard/po_upload.html:42
+#: order/views.py:582 part/templates/part/bom_upload/upload_file.html:27
+msgid "Upload File"
+msgstr ""
+
+#: 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 ""
+
+#: common/views.py:186
+msgid "Match Items"
+msgstr ""
+
+#: common/views.py:479
+msgid "Fields matching failed"
+msgstr ""
+
#: company/forms.py:38 company/models.py:142
#: company/templates/company/detail.html:42
msgid "Currency"
@@ -1950,7 +2002,7 @@ msgstr ""
msgid "Base Part"
msgstr ""
-#: 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 ""
@@ -2073,7 +2125,7 @@ msgstr ""
msgid "Download image from URL"
msgstr ""
-#: 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 ""
@@ -2956,6 +3008,75 @@ msgstr ""
msgid "Order Notes"
msgstr ""
+#: order/templates/order/order_wizard/match_fields.html:9
+#: part/templates/part/bom_upload/select_fields.html:21
+msgid "Missing selections for the following required columns"
+msgstr ""
+
+#: order/templates/order/order_wizard/match_fields.html:20
+msgid "Duplicate selections found, see below. Fix them then retry submitting."
+msgstr ""
+
+#: 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 ""
+
+#: 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 ""
+
+#: order/templates/order/order_wizard/match_fields.html:35
+#: part/templates/part/bom_upload/select_fields.html:41
+msgid "File Fields"
+msgstr ""
+
+#: order/templates/order/order_wizard/match_fields.html:42
+#: part/templates/part/bom_upload/select_fields.html:47
+msgid "Remove column"
+msgstr ""
+
+#: order/templates/order/order_wizard/match_fields.html:60
+msgid "Duplicate selection"
+msgstr ""
+
+#: 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 ""
+
+#: 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 ""
+
+#: order/templates/order/order_wizard/match_parts.html:27
+#: part/templates/part/bom_upload/select_parts.html:39
+msgid "Row"
+msgstr ""
+
+#: order/templates/order/order_wizard/match_parts.html:28
+msgid "Select Supplier Part"
+msgstr ""
+
+#: order/templates/order/order_wizard/po_upload.html:11
+msgid "Upload File for Purchase Order"
+msgstr ""
+
+#: order/templates/order/order_wizard/po_upload.html:18
+#, python-format
+msgid "Step %(step)s of %(count)s"
+msgstr ""
+
+#: order/templates/order/order_wizard/po_upload.html:48
+msgid "Order is already processed. Files cannot be uploaded."
+msgstr ""
+
#: order/templates/order/order_wizard/select_parts.html:9
msgid "Step 1 of 2 - Select Part Suppliers"
msgstr ""
@@ -3028,8 +3149,8 @@ msgid "Purchase Order Items"
msgstr ""
#: order/templates/order/purchase_order_detail.html:24
-#: order/templates/order/sales_order_detail.html:22 order/views.py: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 ""
@@ -3238,181 +3359,185 @@ msgstr ""
msgid "Are you sure you wish to delete this line item?"
msgstr ""
-#: order/views.py:101
+#: order/views.py:104
msgid "Add Purchase Order Attachment"
msgstr ""
-#: order/views.py:151
+#: order/views.py:154
msgid "Add Sales Order Attachment"
msgstr ""
-#: order/views.py:343
+#: order/views.py:346
msgid "Create Sales Order"
msgstr ""
-#: order/views.py:378
+#: order/views.py:381
msgid "Edit Purchase Order"
msgstr ""
-#: order/views.py:398
+#: order/views.py:401
msgid "Edit Sales Order"
msgstr ""
-#: order/views.py:414
+#: order/views.py:417
msgid "Cancel Order"
msgstr ""
-#: order/views.py:423 order/views.py:449
+#: order/views.py:426 order/views.py:452
msgid "Confirm order cancellation"
msgstr ""
-#: order/views.py:426 order/views.py:452
+#: order/views.py:429 order/views.py:455
msgid "Order cannot be cancelled"
msgstr ""
-#: order/views.py:440
+#: order/views.py:443
msgid "Cancel sales order"
msgstr ""
-#: order/views.py:466
+#: order/views.py:469
msgid "Issue Order"
msgstr ""
-#: order/views.py:475
+#: order/views.py:478
msgid "Confirm order placement"
msgstr ""
-#: order/views.py:485
+#: order/views.py:488
msgid "Purchase order issued"
msgstr ""
-#: order/views.py:496
+#: order/views.py:499
msgid "Complete Order"
msgstr ""
-#: order/views.py:512
+#: order/views.py:515
msgid "Confirm order completion"
msgstr ""
-#: order/views.py:523
+#: order/views.py:526
msgid "Purchase order completed"
msgstr ""
-#: order/views.py:533
+#: order/views.py:536
msgid "Ship Order"
msgstr ""
-#: order/views.py:549
+#: order/views.py:552
msgid "Confirm order shipment"
msgstr ""
-#: order/views.py:555
+#: order/views.py:558
msgid "Could not ship order"
msgstr ""
-#: order/views.py:609
+#: order/views.py:584
+msgid "Match Supplier Parts"
+msgstr ""
+
+#: order/views.py:798
msgid "Receive Parts"
msgstr ""
-#: order/views.py:679
+#: order/views.py:868
msgid "Items received"
msgstr ""
-#: order/views.py:693
+#: order/views.py:882
msgid "No destination set"
msgstr ""
-#: order/views.py:738
+#: order/views.py:927
msgid "Error converting quantity to number"
msgstr ""
-#: order/views.py:744
+#: order/views.py:933
msgid "Receive quantity less than zero"
msgstr ""
-#: order/views.py:750
+#: order/views.py:939
msgid "No lines specified"
msgstr ""
-#: order/views.py:1071
+#: order/views.py:1260
#, python-brace-format
msgid "Ordered {n} parts"
msgstr ""
-#: order/views.py:1131
+#: order/views.py:1320
msgid "Supplier part must be specified"
msgstr ""
-#: order/views.py:1137
+#: order/views.py:1326
msgid "Supplier must match for Part and Order"
msgstr ""
-#: order/views.py:1268 order/views.py:1286
+#: order/views.py:1457 order/views.py:1475
msgid "Edit Line Item"
msgstr ""
-#: order/views.py:1302 order/views.py:1314
+#: order/views.py:1491 order/views.py:1503
msgid "Delete Line Item"
msgstr ""
-#: order/views.py:1307 order/views.py:1319
+#: order/views.py:1496 order/views.py:1508
msgid "Deleted line item"
msgstr ""
-#: order/views.py:1332
+#: order/views.py:1521
msgid "Allocate Serial Numbers"
msgstr ""
-#: order/views.py:1377
+#: order/views.py:1566
#, python-brace-format
msgid "Allocated {n} items"
msgstr ""
-#: order/views.py:1393
+#: order/views.py:1582
msgid "Select line item"
msgstr ""
-#: order/views.py:1424
+#: order/views.py:1613
#, python-brace-format
msgid "No matching item for serial {serial}"
msgstr ""
-#: order/views.py:1434
+#: order/views.py:1623
#, python-brace-format
msgid "{serial} is not in stock"
msgstr ""
-#: order/views.py:1442
+#: order/views.py:1631
#, python-brace-format
msgid "{serial} already allocated to an order"
msgstr ""
-#: order/views.py:1496
+#: order/views.py:1685
msgid "Allocate Stock to Order"
msgstr ""
-#: order/views.py:1570
+#: order/views.py:1759
msgid "Edit Allocation Quantity"
msgstr ""
-#: order/views.py:1585
+#: order/views.py:1774
msgid "Remove allocation"
msgstr ""
-#: order/views.py:1657
+#: order/views.py:1846
msgid "Sales order not found"
msgstr ""
-#: order/views.py:1663
+#: order/views.py:1852
msgid "Price not found"
msgstr ""
-#: order/views.py:1666
+#: order/views.py:1855
#, python-brace-format
msgid "Updated {part} unit-price to {price}"
msgstr ""
-#: order/views.py:1671
+#: order/views.py:1860
#, python-brace-format
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr ""
@@ -4050,51 +4175,18 @@ msgstr ""
msgid "Step 2 - Select Fields"
msgstr ""
-#: part/templates/part/bom_upload/select_fields.html:21
-msgid "Missing selections for the following required columns"
-msgstr ""
-
-#: part/templates/part/bom_upload/select_fields.html:32
-msgid "Submit Selections"
-msgstr ""
-
-#: part/templates/part/bom_upload/select_fields.html:41
-msgid "File Fields"
-msgstr ""
-
-#: part/templates/part/bom_upload/select_fields.html:47
-msgid "Remove column"
-msgstr ""
-
-#: part/templates/part/bom_upload/select_fields.html:58
-msgid "Match Fields"
-msgstr ""
-
#: part/templates/part/bom_upload/select_fields.html:68
msgid "Duplicate column selection"
msgstr ""
-#: part/templates/part/bom_upload/select_fields.html:76
-#: part/templates/part/bom_upload/select_parts.html:58
-msgid "Remove row"
-msgstr ""
-
#: part/templates/part/bom_upload/select_parts.html:16
msgid "Step 3 - Select Parts"
msgstr ""
-#: part/templates/part/bom_upload/select_parts.html:21
-msgid "Errors exist in the submitted data"
-msgstr ""
-
#: part/templates/part/bom_upload/select_parts.html:27
msgid "Submit BOM"
msgstr ""
-#: part/templates/part/bom_upload/select_parts.html:39
-msgid "Row"
-msgstr ""
-
#: 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 ""
msgid "Each part must already exist in the database"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:27
-msgid "Upload File"
-msgstr ""
-
#: part/templates/part/bom_validate.html:6
#, python-format
msgid "Confirm that the Bill of Materials (BOM) is valid for:
%(part)s"
@@ -6178,10 +6266,6 @@ msgstr ""
msgid "Add Attachment"
msgstr ""
-#: templates/attachment_table.html:15
-msgid "File"
-msgstr ""
-
#: templates/attachment_table.html:17
msgid "Uploaded"
msgstr ""