diff --git a/InvenTree/stock/forms.py b/InvenTree/stock/forms.py index 548a03ae90..d9937f3106 100644 --- a/InvenTree/stock/forms.py +++ b/InvenTree/stock/forms.py @@ -108,7 +108,7 @@ class ConvertStockItemForm(HelperForm): class CreateStockItemForm(HelperForm): """ Form for creating a new StockItem """ - serial_numbers = forms.CharField(label='Serial numbers', required=False, help_text=_('Enter unique serial numbers (or leave blank)')) + serial_numbers = forms.CharField(label=_('Serial numbers'), required=False, help_text=_('Enter unique serial numbers (or leave blank)')) def __init__(self, *args, **kwargs): diff --git a/InvenTree/stock/views.py b/InvenTree/stock/views.py index 65c8f30893..a60ce6b55c 100644 --- a/InvenTree/stock/views.py +++ b/InvenTree/stock/views.py @@ -1510,11 +1510,8 @@ class StockItemCreate(AjaxCreateView): # form.fields['part'].widget = HiddenInput() # Trackable parts get special consideration: - if part.trackable: - form.fields['delete_on_deplete'].widget = HiddenInput() - form.fields['delete_on_deplete'].initial = False - else: - form.fields['serial_numbers'].widget = HiddenInput() + form.fields['delete_on_deplete'].disabled = not part.trackable + form.fields['serial_numbers'].disabled = not part.trackable # If the part is NOT purchaseable, hide the supplier_part field if not part.purchaseable: @@ -1539,6 +1536,8 @@ class StockItemCreate(AjaxCreateView): # We must not provide *any* options for SupplierPart form.fields['supplier_part'].queryset = SupplierPart.objects.none() + form.fields['serial_numbers'].disabled = True + # Otherwise if the user has selected a SupplierPart, we know what Part they meant! if form['supplier_part'].value() is not None: pass diff --git a/InvenTree/templates/js/stock.html b/InvenTree/templates/js/stock.html index c4209733ef..150765a305 100644 --- a/InvenTree/templates/js/stock.html +++ b/InvenTree/templates/js/stock.html @@ -769,6 +769,7 @@ function createNewStockItem(options) { field: 'part', action: function(value) { + // Reload options for supplier part reloadFieldOptions( 'supplier_part', { @@ -782,6 +783,18 @@ function createNewStockItem(options) { } } ); + + // Disable serial number field if the part is not trackable + inventreeGet( + `/api/part/${value}/`, {}, + { + success: function(response) { + + enableField('serial_numbers', response.trackable); + clearField('serial_numbers'); + } + } + ); } }, ];