Merge pull request #690 from SchrodingersGat/bug-fixes

Bug fixes
This commit is contained in:
Oliver 2020-03-31 21:43:42 +11:00 committed by GitHub
commit 9d19029ba9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 349 additions and 149 deletions

View File

@ -43,7 +43,19 @@ def round_decimal(value, places):
class RoundingDecimalFormField(forms.DecimalField):
def to_python(self, value):
value = super(RoundingDecimalFormField, self).to_python(value)
return round_decimal(value, self.decimal_places)
value = round_decimal(value, self.decimal_places)
return value
def prepare_value(self, value):
"""
Override the 'prepare_value' method, to remove trailing zeros when displaying.
Why? It looks nice!
"""
if type(value) == Decimal:
return value.normalize()
else:
return value
class RoundingDecimalField(models.DecimalField):

View File

@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-03-22 08:55+0000\n"
"POT-Creation-Date: 2020-03-31 10:33+0000\n"
"PO-Revision-Date: 2020-02-02 08:07+0100\n"
"Last-Translator: Christian Schlüter <chschlue@gmail.com>\n"
"Language-Team: C <kde-i18n-doc@kde.org>\n"
@ -17,7 +17,7 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Lokalize 19.12.0\n"
#: InvenTree/helpers.py:186 order/models.py:163 order/models.py:214
#: InvenTree/helpers.py:186 order/models.py:164 order/models.py:215
msgid "Invalid quantity provided"
msgstr "Keine gültige Menge"
@ -71,7 +71,7 @@ msgstr "Französisch"
msgid "Polish"
msgstr "Polnisch"
#: InvenTree/status_codes.py:36 InvenTree/status_codes.py:91
#: InvenTree/status_codes.py:36 InvenTree/status_codes.py:97
msgid "Pending"
msgstr "Ausstehend"
@ -79,11 +79,11 @@ msgstr "Ausstehend"
msgid "Placed"
msgstr "Platziert"
#: InvenTree/status_codes.py:38 InvenTree/status_codes.py:94
#: InvenTree/status_codes.py:38 InvenTree/status_codes.py:100
msgid "Complete"
msgstr "Fertig"
#: InvenTree/status_codes.py:39 InvenTree/status_codes.py:93
#: InvenTree/status_codes.py:39 InvenTree/status_codes.py:99
msgid "Cancelled"
msgstr "Storniert"
@ -111,7 +111,7 @@ msgstr "Beschädigt"
msgid "Destroyed"
msgstr "Zerstört"
#: InvenTree/status_codes.py:92 build/templates/build/allocate_edit.html:28
#: InvenTree/status_codes.py:98 build/templates/build/allocate_edit.html:28
#: build/templates/build/allocate_view.html:21
#: part/templates/part/part_base.html:106 part/templates/part/tabs.html:21
msgid "Allocated"
@ -233,6 +233,7 @@ msgstr "Zuweisung aufheben"
#: build/templates/build/allocate_view.html:17
#: build/templates/build/detail.html:17
#: company/templates/company/detail_part.html:65
#: order/templates/order/order_wizard/select_parts.html:30
#: order/templates/order/purchase_order_detail.html:25
msgid "Part"
msgstr "Teil"
@ -297,6 +298,7 @@ msgstr "Titel"
#: build/templates/build/detail.html:20
#: company/templates/company/supplier_part_pricing.html:27
#: order/templates/order/order_wizard/select_parts.html:32
#: order/templates/order/purchase_order_detail.html:29
#: stock/templates/stock/item_base.html:101
#: stock/templates/stock/stock_adjust.html:18
@ -378,7 +380,7 @@ msgid "Outputs"
msgstr ""
#: build/templates/build/tabs.html:11 company/models.py:248
#: company/templates/company/tabs.html:26 order/templates/order/tabs.html:11
#: company/templates/company/tabs.html:26 order/templates/order/tabs.html:15
#: part/templates/part/tabs.html:58 stock/templates/stock/tabs.html:17
msgid "Notes"
msgstr "Notizen"
@ -646,7 +648,7 @@ msgstr "Mindestpreis"
msgid "Part packaging"
msgstr "Teile-Packaging"
#: company/templates/company/company_base.html:7 order/models.py:130
#: company/templates/company/company_base.html:7 order/models.py:131
msgid "Company"
msgstr "Firma"
@ -687,6 +689,7 @@ msgstr "Kunde"
#: company/templates/company/supplier_part_base.html:44
#: company/templates/company/supplier_part_detail.html:21
#: order/templates/order/order_base.html:67
#: order/templates/order/order_wizard/select_pos.html:30
#: stock/templates/stock/item_base.html:137
msgid "Supplier"
msgstr "Zulieferer"
@ -966,72 +969,72 @@ msgstr ""
msgid "Delete Price Break"
msgstr "Anhang löschen"
#: order/forms.py:21
#: order/forms.py:22
msgid "Place order"
msgstr "Bestellung aufgeben"
#: order/forms.py:32
#: order/forms.py:33
msgid "Mark order as complete"
msgstr "Bestellung als vollständig markieren"
#: order/forms.py:43
#: order/forms.py:44
msgid "Cancel order"
msgstr "Bestellung stornieren"
#: order/forms.py:54
#: order/forms.py:55
msgid "Receive parts to this location"
msgstr "Teile in diesen Ort empfangen"
#: order/models.py:67
#: order/models.py:68
msgid "Order reference"
msgstr "Bestell-Referenz"
#: order/models.py:69
#: order/models.py:70
msgid "Order description"
msgstr "Bestellungs-Beschreibung"
#: order/models.py:71
#: order/models.py:72
msgid "Link to external page"
msgstr "Link auf externe Seite"
#: order/models.py:88
#: order/models.py:89
msgid "Order notes"
msgstr "Bestell-Notizen"
#: order/models.py:161 order/models.py:212 part/views.py:1119
#: order/models.py:162 order/models.py:213 part/views.py:1119
#: stock/models.py:463
msgid "Quantity must be greater than zero"
msgstr "Anzahl muss größer Null sein"
#: order/models.py:166
#: order/models.py:167
msgid "Part supplier must match PO supplier"
msgstr "Teile-Zulieferer muss dem Zulieferer des Kaufvertrags entsprechen"
#: order/models.py:207
#: order/models.py:208
msgid "Lines can only be received against an order marked as 'Placed'"
msgstr "Nur Teile aufgegebener Bestllungen können empfangen werden"
#: order/models.py:267
#: order/models.py:268
msgid "Item quantity"
msgstr "Anzahl"
#: order/models.py:269
#: order/models.py:270
msgid "Line item reference"
msgstr "Position - Referenz"
#: order/models.py:271
#: order/models.py:272
msgid "Line item notes"
msgstr "Position - Notizen"
#: order/models.py:297 stock/templates/stock/item_base.html:119
#: order/models.py:298 stock/templates/stock/item_base.html:119
msgid "Purchase Order"
msgstr "Kaufvertrag"
#: order/models.py:306
#: order/models.py:307
msgid "Supplier part"
msgstr "Zulieferer-Teil"
#: order/models.py:309
#: order/models.py:310
msgid "Number of items received"
msgstr "Empfangene Objekt-Anzahl"
@ -1053,6 +1056,59 @@ msgstr "Empfangen"
msgid "Order Notes"
msgstr "Bestellungsbemerkungen"
#: order/templates/order/order_wizard/select_parts.html:9
msgid "Step 1 of 2 - Select Part Suppliers"
msgstr ""
#: order/templates/order/order_wizard/select_parts.html:14
#, fuzzy
#| msgid "Select supplier"
msgid "Select suppliers."
msgstr "Zulieferer auswählen"
#: order/templates/order/order_wizard/select_parts.html:18
#, fuzzy
#| msgid "Duplicate part selected"
msgid "No purchaseable parts selected."
msgstr "Teil doppelt ausgewählt"
#: order/templates/order/order_wizard/select_parts.html:31
#, fuzzy
#| msgid "Select supplier"
msgid "Select Supplier"
msgstr "Zulieferer auswählen"
#: order/templates/order/order_wizard/select_parts.html:57
#, fuzzy
#| msgid "Select supplier"
msgid "Select a supplier for"
msgstr "Zulieferer auswählen"
#: order/templates/order/order_wizard/select_pos.html:8
msgid "Step 2 of 2 - Select Purchase Orders"
msgstr ""
#: order/templates/order/order_wizard/select_pos.html:12
msgid "Select existing purchase orders, or create new orders."
msgstr ""
#: order/templates/order/order_wizard/select_pos.html:31
#: order/templates/order/tabs.html:5
msgid "Items"
msgstr "Positionen"
#: order/templates/order/order_wizard/select_pos.html:32
#, fuzzy
#| msgid "Purchase Order"
msgid "Select Purchase Order"
msgstr "Kaufvertrag"
#: order/templates/order/order_wizard/select_pos.html:67
#, fuzzy
#| msgid "Purchase Order"
msgid "Select a purchase order for"
msgstr "Kaufvertrag"
#: order/templates/order/po_attachments.html:11
#, fuzzy
#| msgid "Purchase Order Details"
@ -1112,10 +1168,6 @@ msgstr "Bestellnummer"
msgid "Reference"
msgstr "Referenz"
#: order/templates/order/tabs.html:5
msgid "Items"
msgstr "Positionen"
#: order/templates/order/tabs.html:8 part/templates/part/tabs.html:55
msgid "Attachments"
msgstr "Anhänge"
@ -1419,63 +1471,63 @@ msgstr "Bemerkungen - unterstüzt Markdown-Formatierung"
msgid "Stored BOM checksum"
msgstr "Prüfsumme der Stückliste gespeichert"
#: part/models.py:1004
#: part/models.py:1023
msgid "Parameter template name must be unique"
msgstr "Vorlagen-Name des Parameters muss eindeutig sein"
#: part/models.py:1009
#: part/models.py:1028
msgid "Parameter Name"
msgstr "Name des Parameters"
#: part/models.py:1011
#: part/models.py:1030
msgid "Parameter Units"
msgstr "Parameter Einheit"
#: part/models.py:1037
#: part/models.py:1056
msgid "Parent Part"
msgstr "Ausgangsteil"
#: part/models.py:1039
#: part/models.py:1058
msgid "Parameter Template"
msgstr "Parameter Vorlage"
#: part/models.py:1041
#: part/models.py:1060
msgid "Parameter Value"
msgstr "Parameter Wert"
#: part/models.py:1065
#: part/models.py:1084
msgid "Select parent part"
msgstr "Ausgangsteil auswählen"
#: part/models.py:1074
#: part/models.py:1093
msgid "Select part to be used in BOM"
msgstr "Teil für die Nutzung in der Stückliste auswählen"
#: part/models.py:1081
#: part/models.py:1100
msgid "BOM quantity for this BOM item"
msgstr "Stücklisten-Anzahl für dieses Stücklisten-Teil"
#: part/models.py:1084
#: part/models.py:1103
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr "Geschätzter Ausschuss (absolut oder prozentual)"
#: part/models.py:1087
#: part/models.py:1106
msgid "BOM item reference"
msgstr "Referenz des Objekts auf der Stückliste"
#: part/models.py:1090
#: part/models.py:1109
msgid "BOM item notes"
msgstr "Notizen zum Stücklisten-Objekt"
#: part/models.py:1092
#: part/models.py:1111
msgid "BOM line checksum"
msgstr "Prüfsumme der Stückliste"
#: part/models.py:1155
#: part/models.py:1174
msgid "Part cannot be added to its own Bill of Materials"
msgstr "Teil kann nicht zu seiner eigenen Stückliste hinzugefügt werden"
#: part/models.py:1162
#: part/models.py:1181
#, python-brace-format
msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)"
msgstr "Teil '{p1}' wird in Stückliste für Teil '{p2}' benutzt (rekursiv)"
@ -1695,6 +1747,18 @@ msgstr "Teil"
msgid "Create New Part"
msgstr "Neues Lagerobjekt hinzufügen"
#: part/templates/part/stock_count.html:7
#, fuzzy
#| msgid "Stock"
msgid "No Stock"
msgstr "Lagerbestand"
#: part/templates/part/stock_count.html:9
#, fuzzy
#| msgid "Stock"
msgid "Low Stock"
msgstr "Lagerbestand"
#: part/templates/part/tabs.html:9
msgid "Parameters"
msgstr "Parameter"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-03-22 08:55+0000\n"
"POT-Creation-Date: 2020-03-31 10:33+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -18,7 +18,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: InvenTree/helpers.py:186 order/models.py:163 order/models.py:214
#: InvenTree/helpers.py:186 order/models.py:164 order/models.py:215
msgid "Invalid quantity provided"
msgstr ""
@ -70,7 +70,7 @@ msgstr ""
msgid "Polish"
msgstr ""
#: InvenTree/status_codes.py:36 InvenTree/status_codes.py:91
#: InvenTree/status_codes.py:36 InvenTree/status_codes.py:97
msgid "Pending"
msgstr ""
@ -78,11 +78,11 @@ msgstr ""
msgid "Placed"
msgstr ""
#: InvenTree/status_codes.py:38 InvenTree/status_codes.py:94
#: InvenTree/status_codes.py:38 InvenTree/status_codes.py:100
msgid "Complete"
msgstr ""
#: InvenTree/status_codes.py:39 InvenTree/status_codes.py:93
#: InvenTree/status_codes.py:39 InvenTree/status_codes.py:99
msgid "Cancelled"
msgstr ""
@ -110,7 +110,7 @@ msgstr ""
msgid "Destroyed"
msgstr ""
#: InvenTree/status_codes.py:92 build/templates/build/allocate_edit.html:28
#: InvenTree/status_codes.py:98 build/templates/build/allocate_edit.html:28
#: build/templates/build/allocate_view.html:21
#: part/templates/part/part_base.html:106 part/templates/part/tabs.html:21
msgid "Allocated"
@ -229,6 +229,7 @@ msgstr ""
#: build/templates/build/allocate_view.html:17
#: build/templates/build/detail.html:17
#: company/templates/company/detail_part.html:65
#: order/templates/order/order_wizard/select_parts.html:30
#: order/templates/order/purchase_order_detail.html:25
msgid "Part"
msgstr ""
@ -288,6 +289,7 @@ msgstr ""
#: build/templates/build/detail.html:20
#: company/templates/company/supplier_part_pricing.html:27
#: order/templates/order/order_wizard/select_parts.html:32
#: order/templates/order/purchase_order_detail.html:29
#: stock/templates/stock/item_base.html:101
#: stock/templates/stock/stock_adjust.html:18
@ -369,7 +371,7 @@ msgid "Outputs"
msgstr ""
#: build/templates/build/tabs.html:11 company/models.py:248
#: company/templates/company/tabs.html:26 order/templates/order/tabs.html:11
#: company/templates/company/tabs.html:26 order/templates/order/tabs.html:15
#: part/templates/part/tabs.html:58 stock/templates/stock/tabs.html:17
msgid "Notes"
msgstr ""
@ -605,7 +607,7 @@ msgstr ""
msgid "Part packaging"
msgstr ""
#: company/templates/company/company_base.html:7 order/models.py:130
#: company/templates/company/company_base.html:7 order/models.py:131
msgid "Company"
msgstr ""
@ -644,6 +646,7 @@ msgstr ""
#: company/templates/company/supplier_part_base.html:44
#: company/templates/company/supplier_part_detail.html:21
#: order/templates/order/order_base.html:67
#: order/templates/order/order_wizard/select_pos.html:30
#: stock/templates/stock/item_base.html:137
msgid "Supplier"
msgstr ""
@ -866,72 +869,72 @@ msgstr ""
msgid "Delete Price Break"
msgstr ""
#: order/forms.py:21
#: order/forms.py:22
msgid "Place order"
msgstr ""
#: order/forms.py:32
#: order/forms.py:33
msgid "Mark order as complete"
msgstr ""
#: order/forms.py:43
#: order/forms.py:44
msgid "Cancel order"
msgstr ""
#: order/forms.py:54
#: order/forms.py:55
msgid "Receive parts to this location"
msgstr ""
#: order/models.py:67
#: order/models.py:68
msgid "Order reference"
msgstr ""
#: order/models.py:69
#: order/models.py:70
msgid "Order description"
msgstr ""
#: order/models.py:71
#: order/models.py:72
msgid "Link to external page"
msgstr ""
#: order/models.py:88
#: order/models.py:89
msgid "Order notes"
msgstr ""
#: order/models.py:161 order/models.py:212 part/views.py:1119
#: order/models.py:162 order/models.py:213 part/views.py:1119
#: stock/models.py:463
msgid "Quantity must be greater than zero"
msgstr ""
#: order/models.py:166
#: order/models.py:167
msgid "Part supplier must match PO supplier"
msgstr ""
#: order/models.py:207
#: order/models.py:208
msgid "Lines can only be received against an order marked as 'Placed'"
msgstr ""
#: order/models.py:267
#: order/models.py:268
msgid "Item quantity"
msgstr ""
#: order/models.py:269
#: order/models.py:270
msgid "Line item reference"
msgstr ""
#: order/models.py:271
#: order/models.py:272
msgid "Line item notes"
msgstr ""
#: order/models.py:297 stock/templates/stock/item_base.html:119
#: order/models.py:298 stock/templates/stock/item_base.html:119
msgid "Purchase Order"
msgstr ""
#: order/models.py:306
#: order/models.py:307
msgid "Supplier part"
msgstr ""
#: order/models.py:309
#: order/models.py:310
msgid "Number of items received"
msgstr ""
@ -953,6 +956,47 @@ msgstr ""
msgid "Order Notes"
msgstr ""
#: order/templates/order/order_wizard/select_parts.html:9
msgid "Step 1 of 2 - Select Part Suppliers"
msgstr ""
#: order/templates/order/order_wizard/select_parts.html:14
msgid "Select suppliers."
msgstr ""
#: order/templates/order/order_wizard/select_parts.html:18
msgid "No purchaseable parts selected."
msgstr ""
#: order/templates/order/order_wizard/select_parts.html:31
msgid "Select Supplier"
msgstr ""
#: order/templates/order/order_wizard/select_parts.html:57
msgid "Select a supplier for"
msgstr ""
#: order/templates/order/order_wizard/select_pos.html:8
msgid "Step 2 of 2 - Select Purchase Orders"
msgstr ""
#: order/templates/order/order_wizard/select_pos.html:12
msgid "Select existing purchase orders, or create new orders."
msgstr ""
#: order/templates/order/order_wizard/select_pos.html:31
#: order/templates/order/tabs.html:5
msgid "Items"
msgstr ""
#: order/templates/order/order_wizard/select_pos.html:32
msgid "Select Purchase Order"
msgstr ""
#: order/templates/order/order_wizard/select_pos.html:67
msgid "Select a purchase order for"
msgstr ""
#: order/templates/order/po_attachments.html:11
msgid "Purchase Order Attachments"
msgstr ""
@ -1007,10 +1051,6 @@ msgstr ""
msgid "Reference"
msgstr ""
#: order/templates/order/tabs.html:5
msgid "Items"
msgstr ""
#: order/templates/order/tabs.html:8 part/templates/part/tabs.html:55
msgid "Attachments"
msgstr ""
@ -1280,63 +1320,63 @@ msgstr ""
msgid "Stored BOM checksum"
msgstr ""
#: part/models.py:1004
#: part/models.py:1023
msgid "Parameter template name must be unique"
msgstr ""
#: part/models.py:1009
#: part/models.py:1028
msgid "Parameter Name"
msgstr ""
#: part/models.py:1011
#: part/models.py:1030
msgid "Parameter Units"
msgstr ""
#: part/models.py:1037
#: part/models.py:1056
msgid "Parent Part"
msgstr ""
#: part/models.py:1039
#: part/models.py:1058
msgid "Parameter Template"
msgstr ""
#: part/models.py:1041
#: part/models.py:1060
msgid "Parameter Value"
msgstr ""
#: part/models.py:1065
#: part/models.py:1084
msgid "Select parent part"
msgstr ""
#: part/models.py:1074
#: part/models.py:1093
msgid "Select part to be used in BOM"
msgstr ""
#: part/models.py:1081
#: part/models.py:1100
msgid "BOM quantity for this BOM item"
msgstr ""
#: part/models.py:1084
#: part/models.py:1103
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr ""
#: part/models.py:1087
#: part/models.py:1106
msgid "BOM item reference"
msgstr ""
#: part/models.py:1090
#: part/models.py:1109
msgid "BOM item notes"
msgstr ""
#: part/models.py:1092
#: part/models.py:1111
msgid "BOM line checksum"
msgstr ""
#: part/models.py:1155
#: part/models.py:1174
msgid "Part cannot be added to its own Bill of Materials"
msgstr ""
#: part/models.py:1162
#: part/models.py:1181
#, python-brace-format
msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)"
msgstr ""
@ -1546,6 +1586,14 @@ msgstr ""
msgid "Create New Part"
msgstr ""
#: part/templates/part/stock_count.html:7
msgid "No Stock"
msgstr ""
#: part/templates/part/stock_count.html:9
msgid "Low Stock"
msgstr ""
#: part/templates/part/tabs.html:9
msgid "Parameters"
msgstr ""

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-03-22 08:55+0000\n"
"POT-Creation-Date: 2020-03-31 10:33+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -18,7 +18,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: InvenTree/helpers.py:186 order/models.py:163 order/models.py:214
#: InvenTree/helpers.py:186 order/models.py:164 order/models.py:215
msgid "Invalid quantity provided"
msgstr ""
@ -70,7 +70,7 @@ msgstr ""
msgid "Polish"
msgstr ""
#: InvenTree/status_codes.py:36 InvenTree/status_codes.py:91
#: InvenTree/status_codes.py:36 InvenTree/status_codes.py:97
msgid "Pending"
msgstr ""
@ -78,11 +78,11 @@ msgstr ""
msgid "Placed"
msgstr ""
#: InvenTree/status_codes.py:38 InvenTree/status_codes.py:94
#: InvenTree/status_codes.py:38 InvenTree/status_codes.py:100
msgid "Complete"
msgstr ""
#: InvenTree/status_codes.py:39 InvenTree/status_codes.py:93
#: InvenTree/status_codes.py:39 InvenTree/status_codes.py:99
msgid "Cancelled"
msgstr ""
@ -110,7 +110,7 @@ msgstr ""
msgid "Destroyed"
msgstr ""
#: InvenTree/status_codes.py:92 build/templates/build/allocate_edit.html:28
#: InvenTree/status_codes.py:98 build/templates/build/allocate_edit.html:28
#: build/templates/build/allocate_view.html:21
#: part/templates/part/part_base.html:106 part/templates/part/tabs.html:21
msgid "Allocated"
@ -229,6 +229,7 @@ msgstr ""
#: build/templates/build/allocate_view.html:17
#: build/templates/build/detail.html:17
#: company/templates/company/detail_part.html:65
#: order/templates/order/order_wizard/select_parts.html:30
#: order/templates/order/purchase_order_detail.html:25
msgid "Part"
msgstr ""
@ -288,6 +289,7 @@ msgstr ""
#: build/templates/build/detail.html:20
#: company/templates/company/supplier_part_pricing.html:27
#: order/templates/order/order_wizard/select_parts.html:32
#: order/templates/order/purchase_order_detail.html:29
#: stock/templates/stock/item_base.html:101
#: stock/templates/stock/stock_adjust.html:18
@ -369,7 +371,7 @@ msgid "Outputs"
msgstr ""
#: build/templates/build/tabs.html:11 company/models.py:248
#: company/templates/company/tabs.html:26 order/templates/order/tabs.html:11
#: company/templates/company/tabs.html:26 order/templates/order/tabs.html:15
#: part/templates/part/tabs.html:58 stock/templates/stock/tabs.html:17
msgid "Notes"
msgstr ""
@ -605,7 +607,7 @@ msgstr ""
msgid "Part packaging"
msgstr ""
#: company/templates/company/company_base.html:7 order/models.py:130
#: company/templates/company/company_base.html:7 order/models.py:131
msgid "Company"
msgstr ""
@ -644,6 +646,7 @@ msgstr ""
#: company/templates/company/supplier_part_base.html:44
#: company/templates/company/supplier_part_detail.html:21
#: order/templates/order/order_base.html:67
#: order/templates/order/order_wizard/select_pos.html:30
#: stock/templates/stock/item_base.html:137
msgid "Supplier"
msgstr ""
@ -866,72 +869,72 @@ msgstr ""
msgid "Delete Price Break"
msgstr ""
#: order/forms.py:21
#: order/forms.py:22
msgid "Place order"
msgstr ""
#: order/forms.py:32
#: order/forms.py:33
msgid "Mark order as complete"
msgstr ""
#: order/forms.py:43
#: order/forms.py:44
msgid "Cancel order"
msgstr ""
#: order/forms.py:54
#: order/forms.py:55
msgid "Receive parts to this location"
msgstr ""
#: order/models.py:67
#: order/models.py:68
msgid "Order reference"
msgstr ""
#: order/models.py:69
#: order/models.py:70
msgid "Order description"
msgstr ""
#: order/models.py:71
#: order/models.py:72
msgid "Link to external page"
msgstr ""
#: order/models.py:88
#: order/models.py:89
msgid "Order notes"
msgstr ""
#: order/models.py:161 order/models.py:212 part/views.py:1119
#: order/models.py:162 order/models.py:213 part/views.py:1119
#: stock/models.py:463
msgid "Quantity must be greater than zero"
msgstr ""
#: order/models.py:166
#: order/models.py:167
msgid "Part supplier must match PO supplier"
msgstr ""
#: order/models.py:207
#: order/models.py:208
msgid "Lines can only be received against an order marked as 'Placed'"
msgstr ""
#: order/models.py:267
#: order/models.py:268
msgid "Item quantity"
msgstr ""
#: order/models.py:269
#: order/models.py:270
msgid "Line item reference"
msgstr ""
#: order/models.py:271
#: order/models.py:272
msgid "Line item notes"
msgstr ""
#: order/models.py:297 stock/templates/stock/item_base.html:119
#: order/models.py:298 stock/templates/stock/item_base.html:119
msgid "Purchase Order"
msgstr ""
#: order/models.py:306
#: order/models.py:307
msgid "Supplier part"
msgstr ""
#: order/models.py:309
#: order/models.py:310
msgid "Number of items received"
msgstr ""
@ -953,6 +956,47 @@ msgstr ""
msgid "Order Notes"
msgstr ""
#: order/templates/order/order_wizard/select_parts.html:9
msgid "Step 1 of 2 - Select Part Suppliers"
msgstr ""
#: order/templates/order/order_wizard/select_parts.html:14
msgid "Select suppliers."
msgstr ""
#: order/templates/order/order_wizard/select_parts.html:18
msgid "No purchaseable parts selected."
msgstr ""
#: order/templates/order/order_wizard/select_parts.html:31
msgid "Select Supplier"
msgstr ""
#: order/templates/order/order_wizard/select_parts.html:57
msgid "Select a supplier for"
msgstr ""
#: order/templates/order/order_wizard/select_pos.html:8
msgid "Step 2 of 2 - Select Purchase Orders"
msgstr ""
#: order/templates/order/order_wizard/select_pos.html:12
msgid "Select existing purchase orders, or create new orders."
msgstr ""
#: order/templates/order/order_wizard/select_pos.html:31
#: order/templates/order/tabs.html:5
msgid "Items"
msgstr ""
#: order/templates/order/order_wizard/select_pos.html:32
msgid "Select Purchase Order"
msgstr ""
#: order/templates/order/order_wizard/select_pos.html:67
msgid "Select a purchase order for"
msgstr ""
#: order/templates/order/po_attachments.html:11
msgid "Purchase Order Attachments"
msgstr ""
@ -1007,10 +1051,6 @@ msgstr ""
msgid "Reference"
msgstr ""
#: order/templates/order/tabs.html:5
msgid "Items"
msgstr ""
#: order/templates/order/tabs.html:8 part/templates/part/tabs.html:55
msgid "Attachments"
msgstr ""
@ -1280,63 +1320,63 @@ msgstr ""
msgid "Stored BOM checksum"
msgstr ""
#: part/models.py:1004
#: part/models.py:1023
msgid "Parameter template name must be unique"
msgstr ""
#: part/models.py:1009
#: part/models.py:1028
msgid "Parameter Name"
msgstr ""
#: part/models.py:1011
#: part/models.py:1030
msgid "Parameter Units"
msgstr ""
#: part/models.py:1037
#: part/models.py:1056
msgid "Parent Part"
msgstr ""
#: part/models.py:1039
#: part/models.py:1058
msgid "Parameter Template"
msgstr ""
#: part/models.py:1041
#: part/models.py:1060
msgid "Parameter Value"
msgstr ""
#: part/models.py:1065
#: part/models.py:1084
msgid "Select parent part"
msgstr ""
#: part/models.py:1074
#: part/models.py:1093
msgid "Select part to be used in BOM"
msgstr ""
#: part/models.py:1081
#: part/models.py:1100
msgid "BOM quantity for this BOM item"
msgstr ""
#: part/models.py:1084
#: part/models.py:1103
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr ""
#: part/models.py:1087
#: part/models.py:1106
msgid "BOM item reference"
msgstr ""
#: part/models.py:1090
#: part/models.py:1109
msgid "BOM item notes"
msgstr ""
#: part/models.py:1092
#: part/models.py:1111
msgid "BOM line checksum"
msgstr ""
#: part/models.py:1155
#: part/models.py:1174
msgid "Part cannot be added to its own Bill of Materials"
msgstr ""
#: part/models.py:1162
#: part/models.py:1181
#, python-brace-format
msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)"
msgstr ""
@ -1546,6 +1586,14 @@ msgstr ""
msgid "Create New Part"
msgstr ""
#: part/templates/part/stock_count.html:7
msgid "No Stock"
msgstr ""
#: part/templates/part/stock_count.html:9
msgid "Low Stock"
msgstr ""
#: part/templates/part/tabs.html:9
msgid "Parameters"
msgstr ""

View File

@ -11,6 +11,7 @@ from django.utils.translation import ugettext as _
from mptt.fields import TreeNodeChoiceField
from InvenTree.forms import HelperForm
from InvenTree.fields import RoundingDecimalFormField
from stock.models import StockLocation
from .models import PurchaseOrder, PurchaseOrderLineItem, PurchaseOrderAttachment
@ -70,7 +71,6 @@ class EditPurchaseOrderForm(HelperForm):
'supplier',
'description',
'URL',
'notes'
]
@ -89,6 +89,8 @@ class EditPurchaseOrderAttachmentForm(HelperForm):
class EditPurchaseOrderLineItemForm(HelperForm):
""" Form for editing a PurchaseOrderLineItem object """
quantity = RoundingDecimalFormField(max_digits=10, decimal_places=5)
class Meta:
model = PurchaseOrderLineItem
fields = [

View File

@ -0,0 +1,20 @@
# Generated by Django 2.2.10 on 2020-03-31 10:00
import InvenTree.fields
import django.core.validators
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('order', '0016_purchaseorderattachment'),
]
operations = [
migrations.AlterField(
model_name='purchaseorderlineitem',
name='quantity',
field=InvenTree.fields.RoundingDecimalField(decimal_places=5, default=1, help_text='Item quantity', max_digits=15, validators=[django.core.validators.MinValueValidator(0)]),
),
]

View File

@ -20,6 +20,7 @@ from datetime import datetime
from stock.models import StockItem
from company.models import Company, SupplierPart
from InvenTree.fields import RoundingDecimalField
from InvenTree.helpers import decimal2string
from InvenTree.status_codes import OrderStatus
from InvenTree.models import InvenTreeAttachment
@ -264,7 +265,7 @@ class OrderLineItem(models.Model):
class Meta:
abstract = True
quantity = models.DecimalField(max_digits=15, decimal_places=5, validators=[MinValueValidator(0)], default=1, help_text=_('Item quantity'))
quantity = RoundingDecimalField(max_digits=15, decimal_places=5, validators=[MinValueValidator(0)], default=1, help_text=_('Item quantity'))
reference = models.CharField(max_length=100, blank=True, help_text=_('Line item reference'))

View File

@ -1,18 +1,21 @@
{% extends "modal_form.html" %}
{% load inventree_extras %}
{% load i18n %}
{% block form %}
<h4>
Step 1 of 2 - Select Part Suppliers
{% trans "Step 1 of 2 - Select Part Suppliers" %}
</h4>
{% if parts|length > 0 %}
<div class='alert alert-info alert-block' role='alert'>
Select suppliers for {{ parts|length }} parts.
{% trans "Select suppliers." %}
</div>
{% else %}
<div class='alert alert-warning alert-block' role='alert'>
No purchaseable parts selected.
{% trans "No purchaseable parts selected." %}
</div>
{% endif %}
@ -24,9 +27,9 @@
<table class='table table-condensed table-striped' id='order-wizard-part-table'>
<tr>
<th>Part</th>
<th colspan='2'>Select Supplier</th>
<th>Quantity</th>
<th>{% trans "Part" %}</th>
<th colspan='2'>{% trans "Select Supplier" %}</th>
<th>{% trans "Quantity" %}</th>
<th></th>
</tr>
{% for part in parts %}
@ -51,14 +54,14 @@
</select>
</div>
{% if not part.order_supplier %}
<span class='help-inline'>Select a supplier for <i>{{ part.name }}</i></span>
<span class='help-inline'>{% trans "Select a supplier for" %} <i>{{ part.name }}</i></span>
{% endif %}
</div>
</td>
<td>
<div class='control-group'>
<div class='controls'>
<input class='numberinput' type='number' min='0' value='{{ part.order_quantity }}' name='part-quantity-{{ part.id }}'/>
<input class='numberinput' type='number' min='0' value='{% decimal part.order_quantity %}' name='part-quantity-{{ part.id }}'/>
</div>
</div>
</td>

View File

@ -1,13 +1,15 @@
{% extends "modal_form.html" %}
{% load i18n %}
{% block form %}
<h4>
Step 2 of 2 - Select Purchase Orders
{% trans "Step 2 of 2 - Select Purchase Orders" %}
</h4>
<div class='alert alert-info alert-block' role='alert'>
Select existing purchase orders, or create new orders.
{% trans "Select existing purchase orders, or create new orders." %}
</div>
<form method='post' action='' class='js-modal-form' enctype='multipart/form-data'>
@ -25,9 +27,9 @@
<table class='table table-condensed table-striped' id='order-wizard-po-table'>
<tr>
<th>Supplier</th>
<th>Items</th>
<th colspan='2'>Select Purchase Order</th>
<th>{% trans "Supplier" %}</th>
<th>{% trans "Items" %}</th>
<th colspan='2'>{% trans "Select Purchase Order" %}</th>
</tr>
{% for supplier in suppliers %}
<tr id='suppier_row_{{ supplier.id }}'>
@ -62,7 +64,7 @@
</select>
</div>
{% if not supplier.selected_purchase_order %}
<span class='help-inline'>Select a purchase order for {{ supplier.name }}</span>
<span class='help-inline'>{% trans "Select a purchase order for" %} {{ supplier.name }}</span>
{% endif %}
</div>
</td>