Auto-fill serial numbers for the SerializeStock form

This commit is contained in:
Oliver Walters 2020-05-16 09:06:39 +10:00
parent 10762fc1cf
commit 0ccac09962
2 changed files with 32 additions and 2 deletions

View File

@ -9,6 +9,9 @@ from django import forms
from django.forms.utils import ErrorDict
from django.utils.translation import ugettext as _
from crispy_forms.layout import Field, Layout
from crispy_forms.bootstrap import PrependedText
from mptt.fields import TreeNodeChoiceField
from InvenTree.helpers import GetExportFormats
@ -95,11 +98,29 @@ class SerializeStockForm(HelperForm):
def __init__(self, *args, **kwargs):
# Extract the stock item
stock_item = kwargs.pop('item')
item = kwargs.pop('item')
super().__init__(*args, **kwargs)
# TODO - Pre-fill the serial numbers!
# Pre-calculate what the serial numbers should be!
sn = item.part.get_next_serial_number()
if item.quantity >= 2:
sn = "{n}-{m}".format(n=sn, m=int(sn+item.quantity-1))
else:
sn = str(sn)
# TODO - Refactor this? Should not have to specify Field('field') for each field...
self.helper.layout = Layout(
Field('quantity'),
Field(PrependedText(
'serial_numbers',
'#',
placeholder=sn
)),
Field('destination'),
Field('note'),
)
class Meta:
model = StockItem

View File

@ -774,7 +774,16 @@ class StockItemSerialize(AjaxUpdateView):
item = self.get_object()
# Pre-calculate what the serial numbers should be!
sn = item.part.get_next_serial_number()
if item.quantity >= 2:
sn = "{n}-{m}".format(n=sn, m=int(sn+item.quantity-1))
else:
sn = str(sn)
initials['quantity'] = item.quantity
initials['serial_numbers'] = sn
initials['destination'] = item.location.pk
return initials