mirror of
https://github.com/inventree/InvenTree
synced 2024-08-30 18:33:04 +00:00
Added function to split stock
- Specify the quantity to move into the NEW stock item - The left over quantity will remain in the current stock item
This commit is contained in:
parent
6561a613d7
commit
c376f38a8d
@ -281,7 +281,47 @@ class StockItem(models.Model):
|
||||
track.save()
|
||||
|
||||
@transaction.atomic
|
||||
def move(self, location, notes, user):
|
||||
def splitStock(self, quantity, user):
|
||||
""" Split this stock item into two items, in the same location.
|
||||
Stock tracking notes for this StockItem will be duplicated,
|
||||
and added to the new StockItem.
|
||||
|
||||
Args:
|
||||
quantity: Number of stock items to remove from this entity, and pass to the next
|
||||
|
||||
Notes:
|
||||
The provided quantity will be subtracted from this item and given to the new one.
|
||||
The new item will have a different StockItem ID, while this will remain the same.
|
||||
"""
|
||||
|
||||
# Doesn't make sense for a zero quantity
|
||||
if quantity <= 0:
|
||||
return
|
||||
|
||||
# Also doesn't make sense to split the full amount
|
||||
if quantity >= self.quantity:
|
||||
return
|
||||
|
||||
# Create a new StockItem object, duplicating relevant fields
|
||||
new_stock = StockItem.objects.create(
|
||||
part=self.part,
|
||||
quantity=quantity,
|
||||
supplier_part=self.supplier_part,
|
||||
location=self.location,
|
||||
batch=self.batch,
|
||||
delete_on_deplete=self.delete_on_deplete
|
||||
)
|
||||
|
||||
new_stock.save()
|
||||
|
||||
# Add a new tracking item for the new stock item
|
||||
new_stock.addTransactionNote(
|
||||
"Split from existing stock",
|
||||
user,
|
||||
"Split {n} from existing stock item".format(n=quantity))
|
||||
|
||||
# Remove the specified quantity from THIS stock item
|
||||
self.take_stock(quantity, user, 'Split {n} items into new stock item'.format(n=quantity))
|
||||
|
||||
if location is None:
|
||||
# TODO - Raise appropriate error (cannot move to blank location)
|
||||
|
Loading…
Reference in New Issue
Block a user