mirror of
https://github.com/inventree/InvenTree.git
synced 2025-04-30 12:36:45 +00:00
Do not enforce serialization when creating a stock item
This commit is contained in:
parent
614363fa03
commit
88b90281f5
@ -7,6 +7,7 @@ from __future__ import unicode_literals
|
|||||||
|
|
||||||
from django import forms
|
from django import forms
|
||||||
from django.forms.utils import ErrorDict
|
from django.forms.utils import ErrorDict
|
||||||
|
from django.utils.translation import ugettext as _
|
||||||
|
|
||||||
from InvenTree.forms import HelperForm
|
from InvenTree.forms import HelperForm
|
||||||
from .models import StockLocation, StockItem, StockItemTracking
|
from .models import StockLocation, StockItem, StockItemTracking
|
||||||
@ -27,7 +28,7 @@ class EditStockLocationForm(HelperForm):
|
|||||||
class CreateStockItemForm(HelperForm):
|
class CreateStockItemForm(HelperForm):
|
||||||
""" Form for creating a new StockItem """
|
""" Form for creating a new StockItem """
|
||||||
|
|
||||||
serial_numbers = forms.CharField(label='Serial numbers', required=False, help_text='Enter unique serial numbers')
|
serial_numbers = forms.CharField(label='Serial numbers', required=False, help_text=_('Enter unique serial numbers (or leave blank)'))
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = StockItem
|
model = StockItem
|
||||||
|
@ -593,47 +593,51 @@ class StockItemCreate(AjaxCreateView):
|
|||||||
if part.trackable:
|
if part.trackable:
|
||||||
sn = request.POST.get('serial_numbers', '')
|
sn = request.POST.get('serial_numbers', '')
|
||||||
|
|
||||||
try:
|
sn = str(sn).strip()
|
||||||
serials = ExtractSerialNumbers(sn, quantity)
|
|
||||||
|
|
||||||
existing = []
|
# If user has specified a range of serial numbers
|
||||||
|
if len(sn) > 0:
|
||||||
|
try:
|
||||||
|
serials = ExtractSerialNumbers(sn, quantity)
|
||||||
|
|
||||||
for serial in serials:
|
existing = []
|
||||||
if not StockItem.check_serial_number(part, serial):
|
|
||||||
existing.append(serial)
|
|
||||||
|
|
||||||
if len(existing) > 0:
|
for serial in serials:
|
||||||
exists = ",".join([str(x) for x in existing])
|
if not StockItem.check_serial_number(part, serial):
|
||||||
form.errors['serial_numbers'] = [_('The following serial numbers already exist: ({sn})'.format(sn=exists))]
|
existing.append(serial)
|
||||||
|
|
||||||
|
if len(existing) > 0:
|
||||||
|
exists = ",".join([str(x) for x in existing])
|
||||||
|
form.errors['serial_numbers'] = [_('The following serial numbers already exist: ({sn})'.format(sn=exists))]
|
||||||
|
valid = False
|
||||||
|
|
||||||
|
# At this point we have a list of serial numbers which we know are valid,
|
||||||
|
# and do not currently exist
|
||||||
|
form.clean()
|
||||||
|
|
||||||
|
data = form.cleaned_data
|
||||||
|
|
||||||
|
for serial in serials:
|
||||||
|
# Create a new stock item for each serial number
|
||||||
|
item = StockItem(
|
||||||
|
part=part,
|
||||||
|
quantity=1,
|
||||||
|
serial=serial,
|
||||||
|
supplier_part=data.get('supplier_part'),
|
||||||
|
location=data.get('location'),
|
||||||
|
batch=data.get('batch'),
|
||||||
|
delete_on_deplete=False,
|
||||||
|
status=data.get('status'),
|
||||||
|
notes=data.get('notes'),
|
||||||
|
URL=data.get('URL'),
|
||||||
|
)
|
||||||
|
|
||||||
|
item.save()
|
||||||
|
|
||||||
|
except ValidationError as e:
|
||||||
|
form.errors['serial_numbers'] = e.messages
|
||||||
valid = False
|
valid = False
|
||||||
|
|
||||||
# At this point we have a list of serial numbers which we know are valid,
|
|
||||||
# and do not currently exist
|
|
||||||
form.clean()
|
|
||||||
|
|
||||||
data = form.cleaned_data
|
|
||||||
|
|
||||||
for serial in serials:
|
|
||||||
# Create a new stock item for each serial number
|
|
||||||
item = StockItem(
|
|
||||||
part=part,
|
|
||||||
quantity=1,
|
|
||||||
serial=serial,
|
|
||||||
supplier_part=data.get('supplier_part'),
|
|
||||||
location=data.get('location'),
|
|
||||||
batch=data.get('batch'),
|
|
||||||
delete_on_deplete=False,
|
|
||||||
status=data.get('status'),
|
|
||||||
notes=data.get('notes'),
|
|
||||||
URL=data.get('URL'),
|
|
||||||
)
|
|
||||||
|
|
||||||
item.save()
|
|
||||||
|
|
||||||
except ValidationError as e:
|
|
||||||
form.errors['serial_numbers'] = e.messages
|
|
||||||
valid = False
|
|
||||||
|
|
||||||
else:
|
else:
|
||||||
# For non-serialized items, simply save the form.
|
# For non-serialized items, simply save the form.
|
||||||
# We need to call _post_clean() here because it is prevented in the form implementation
|
# We need to call _post_clean() here because it is prevented in the form implementation
|
||||||
|
Loading…
x
Reference in New Issue
Block a user