Build output serial number docs (#12486)

* Remove serial number restriction when creating build outputs

* Updated docs

* additional docs
This commit is contained in:
Oliver
2026-07-28 18:49:14 +10:00
committed by GitHub
parent 6302748ec8
commit 45f3810a8b
7 changed files with 64 additions and 12 deletions
@@ -441,13 +441,6 @@ class BuildOutputCreateSerializer(serializers.Serializer):
quantity = data['quantity']
serial_numbers = data.get('serial_numbers', '')
if part.trackable and not serial_numbers:
raise ValidationError({
'serial_numbers': _(
'Serial numbers must be provided for trackable parts'
)
})
if serial_numbers:
try:
self.serials = InvenTree.helpers.extract_serial_numbers(
+29
View File
@@ -1388,6 +1388,35 @@ class BuildOutputCreateTest(BuildAPITest):
# The new output must have a creation_date set
self.assertIsNotNone(part.stock_items.order_by('-pk').first().creation_date)
def test_create_unserialized_output_trackable_part(self):
"""A build output for a trackable part may be created without serial numbers.
This allows a batch quantity to be created (e.g. from an external build order)
which can be serialized at some later stage in the process.
"""
build_id = 1
url = reverse('api-build-output-create', kwargs={'pk': build_id})
build = Build.objects.get(pk=build_id)
part = build.part
part.trackable = True
part.save()
n_outputs = build.output_count
n_items = part.stock_items.count()
# Create a single non-serialized output, even though the part is trackable
self.post(url, data={'quantity': 10}, expected_code=201)
# A single build output has been created (not one per unit of quantity)
self.assertEqual(n_outputs + 1, build.output_count)
self.assertEqual(n_items + 1, part.stock_items.count())
output = part.stock_items.order_by('-pk').first()
self.assertIsNone(output.serial)
self.assertEqual(output.quantity, 10)
class BuildOutputScrapTest(BuildAPITest):
"""Unit tests for scrapping build outputs."""