mirror of
https://github.com/inventree/InvenTree.git
synced 2025-07-05 13:10:57 +00:00
Adds API endpoint for serialization of stock items
This commit is contained in:
@ -1027,89 +1027,6 @@ class StockLocationCreate(AjaxCreateView):
|
||||
pass
|
||||
|
||||
|
||||
class StockItemSerialize(AjaxUpdateView):
|
||||
""" View for manually serializing a StockItem """
|
||||
|
||||
model = StockItem
|
||||
ajax_template_name = 'stock/item_serialize.html'
|
||||
ajax_form_title = _('Serialize Stock')
|
||||
form_class = StockForms.SerializeStockForm
|
||||
|
||||
def get_form(self):
|
||||
|
||||
context = self.get_form_kwargs()
|
||||
|
||||
# Pass the StockItem object through to the form
|
||||
context['item'] = self.get_object()
|
||||
|
||||
form = StockForms.SerializeStockForm(**context)
|
||||
|
||||
return form
|
||||
|
||||
def get_initial(self):
|
||||
|
||||
initials = super().get_initial().copy()
|
||||
|
||||
item = self.get_object()
|
||||
|
||||
initials['quantity'] = item.quantity
|
||||
initials['serial_numbers'] = item.part.getSerialNumberString(item.quantity)
|
||||
if item.location is not None:
|
||||
initials['destination'] = item.location.pk
|
||||
|
||||
return initials
|
||||
|
||||
def get(self, request, *args, **kwargs):
|
||||
|
||||
return super().get(request, *args, **kwargs)
|
||||
|
||||
def post(self, request, *args, **kwargs):
|
||||
|
||||
form = self.get_form()
|
||||
|
||||
item = self.get_object()
|
||||
|
||||
quantity = request.POST.get('quantity', 0)
|
||||
serials = request.POST.get('serial_numbers', '')
|
||||
dest_id = request.POST.get('destination', None)
|
||||
notes = request.POST.get('note', '')
|
||||
user = request.user
|
||||
|
||||
valid = True
|
||||
|
||||
try:
|
||||
destination = StockLocation.objects.get(pk=dest_id)
|
||||
except (ValueError, StockLocation.DoesNotExist):
|
||||
destination = None
|
||||
|
||||
try:
|
||||
numbers = extract_serial_numbers(serials, quantity)
|
||||
except ValidationError as e:
|
||||
form.add_error('serial_numbers', e.messages)
|
||||
valid = False
|
||||
numbers = []
|
||||
|
||||
if valid:
|
||||
try:
|
||||
item.serializeStock(quantity, numbers, user, notes=notes, location=destination)
|
||||
except ValidationError as e:
|
||||
messages = e.message_dict
|
||||
|
||||
for k in messages.keys():
|
||||
if k in ['quantity', 'destination', 'serial_numbers']:
|
||||
form.add_error(k, messages[k])
|
||||
else:
|
||||
form.add_error(None, messages[k])
|
||||
|
||||
valid = False
|
||||
|
||||
data = {
|
||||
'form_valid': valid,
|
||||
}
|
||||
|
||||
return self.renderJsonResponse(request, form, data=data)
|
||||
|
||||
|
||||
class StockItemCreate(AjaxCreateView):
|
||||
"""
|
||||
View for creating a new StockItem
|
||||
|
Reference in New Issue
Block a user