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): class RoundingDecimalFormField(forms.DecimalField):
def to_python(self, value): def to_python(self, value):
value = super(RoundingDecimalFormField, self).to_python(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): class RoundingDecimalField(models.DecimalField):

View File

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

View File

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

View File

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

View File

@ -11,6 +11,7 @@ from django.utils.translation import ugettext as _
from mptt.fields import TreeNodeChoiceField from mptt.fields import TreeNodeChoiceField
from InvenTree.forms import HelperForm from InvenTree.forms import HelperForm
from InvenTree.fields import RoundingDecimalFormField
from stock.models import StockLocation from stock.models import StockLocation
from .models import PurchaseOrder, PurchaseOrderLineItem, PurchaseOrderAttachment from .models import PurchaseOrder, PurchaseOrderLineItem, PurchaseOrderAttachment
@ -70,7 +71,6 @@ class EditPurchaseOrderForm(HelperForm):
'supplier', 'supplier',
'description', 'description',
'URL', 'URL',
'notes'
] ]
@ -89,6 +89,8 @@ class EditPurchaseOrderAttachmentForm(HelperForm):
class EditPurchaseOrderLineItemForm(HelperForm): class EditPurchaseOrderLineItemForm(HelperForm):
""" Form for editing a PurchaseOrderLineItem object """ """ Form for editing a PurchaseOrderLineItem object """
quantity = RoundingDecimalFormField(max_digits=10, decimal_places=5)
class Meta: class Meta:
model = PurchaseOrderLineItem model = PurchaseOrderLineItem
fields = [ 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 stock.models import StockItem
from company.models import Company, SupplierPart from company.models import Company, SupplierPart
from InvenTree.fields import RoundingDecimalField
from InvenTree.helpers import decimal2string from InvenTree.helpers import decimal2string
from InvenTree.status_codes import OrderStatus from InvenTree.status_codes import OrderStatus
from InvenTree.models import InvenTreeAttachment from InvenTree.models import InvenTreeAttachment
@ -264,7 +265,7 @@ class OrderLineItem(models.Model):
class Meta: class Meta:
abstract = True 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')) reference = models.CharField(max_length=100, blank=True, help_text=_('Line item reference'))

View File

@ -1,18 +1,21 @@
{% extends "modal_form.html" %} {% extends "modal_form.html" %}
{% load inventree_extras %}
{% load i18n %}
{% block form %} {% block form %}
<h4> <h4>
Step 1 of 2 - Select Part Suppliers {% trans "Step 1 of 2 - Select Part Suppliers" %}
</h4> </h4>
{% if parts|length > 0 %} {% if parts|length > 0 %}
<div class='alert alert-info alert-block' role='alert'> <div class='alert alert-info alert-block' role='alert'>
Select suppliers for {{ parts|length }} parts. {% trans "Select suppliers." %}
</div> </div>
{% else %} {% else %}
<div class='alert alert-warning alert-block' role='alert'> <div class='alert alert-warning alert-block' role='alert'>
No purchaseable parts selected. {% trans "No purchaseable parts selected." %}
</div> </div>
{% endif %} {% endif %}
@ -24,9 +27,9 @@
<table class='table table-condensed table-striped' id='order-wizard-part-table'> <table class='table table-condensed table-striped' id='order-wizard-part-table'>
<tr> <tr>
<th>Part</th> <th>{% trans "Part" %}</th>
<th colspan='2'>Select Supplier</th> <th colspan='2'>{% trans "Select Supplier" %}</th>
<th>Quantity</th> <th>{% trans "Quantity" %}</th>
<th></th> <th></th>
</tr> </tr>
{% for part in parts %} {% for part in parts %}
@ -51,14 +54,14 @@
</select> </select>
</div> </div>
{% if not part.order_supplier %} {% 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 %} {% endif %}
</div> </div>
</td> </td>
<td> <td>
<div class='control-group'> <div class='control-group'>
<div class='controls'> <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>
</div> </div>
</td> </td>

View File

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