From 24c13b04b6a2fc532262f9a195491fe77a66dccd Mon Sep 17 00:00:00 2001 From: Oliver Date: Tue, 15 Feb 2022 13:19:41 +1100 Subject: [PATCH] Extract serial numbers from submitted form data --- InvenTree/build/serializers.py | 9 +++++---- InvenTree/templates/js/translated/build.js | 15 +++++++++++++++ 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/InvenTree/build/serializers.py b/InvenTree/build/serializers.py index e44a00c306..9b558a9420 100644 --- a/InvenTree/build/serializers.py +++ b/InvenTree/build/serializers.py @@ -245,9 +245,10 @@ class BuildOutputCreateSerializer(serializers.Serializer): Perform form validation """ - build = self.get_build() part = self.get_part() - serials = None + + # Cache a list of serial numbers (to be used in the "save" method) + self.serials = None quantity = data['quantity'] serial_numbers = data.get('serial_numbers', '') @@ -255,7 +256,7 @@ class BuildOutputCreateSerializer(serializers.Serializer): if serial_numbers: try: - serials = extract_serial_numbers(serial_numbers, quantity, part.getLatestSerialNumberInt()) + self.serials = extract_serial_numbers(serial_numbers, quantity, part.getLatestSerialNumberInt()) except DjangoValidationError as e: raise ValidationError({ 'serial_numbers': e.messages, @@ -264,7 +265,7 @@ class BuildOutputCreateSerializer(serializers.Serializer): # Check for conflicting serial numbesr existing = [] - for serial in serials: + for serial in self.serials: if part.checkIfSerialNumberExists(serial): existing.append(serial) diff --git a/InvenTree/templates/js/translated/build.js b/InvenTree/templates/js/translated/build.js index bb6b3c9daf..2130b4c84c 100644 --- a/InvenTree/templates/js/translated/build.js +++ b/InvenTree/templates/js/translated/build.js @@ -205,6 +205,18 @@ function createBuildOutput(build_id, options) { auto_allocate: {}, }; + // Work out the next available serial numbers + inventreeGet(`/api/part/${build.part}/serial-numbers/`, {}, { + success: function(data) { + if (data.next) { + fields.serial_numbers.placeholder = `{% trans "Next available serial number" %}: ${data.next}`; + } else { + fields.serial_numbers.placeholder = `{% trans "Latest serial number" %}: ${data.latest}`; + } + }, + async: false, + }); + if (options.trackable_parts) { html += `
@@ -229,6 +241,9 @@ function createBuildOutput(build_id, options) { confirm: true, fields: fields, preFormContent: html, + onSuccess: function(response) { + location.reload(); + }, }); }