mirror of
https://github.com/inventree/InvenTree
synced 2024-08-30 18:33:04 +00:00
Logic fix for StockItem splitting
- The original is left in place - The new item is moved
This commit is contained in:
parent
3715c5d637
commit
e483b42df6
@ -515,13 +515,14 @@ class StockItem(MPTTModel):
|
||||
item.save()
|
||||
|
||||
@transaction.atomic
|
||||
def splitStock(self, quantity, user):
|
||||
def splitStock(self, quantity, location, 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
|
||||
location: Where to move the new StockItem to
|
||||
|
||||
Notes:
|
||||
The provided quantity will be subtracted from this item and given to the new one.
|
||||
@ -551,6 +552,7 @@ class StockItem(MPTTModel):
|
||||
new_stock.pk = None
|
||||
new_stock.parent = self
|
||||
new_stock.quantity = quantity
|
||||
new_stock.location = location
|
||||
new_stock.save()
|
||||
|
||||
# Copy the transaction history of this part into the new one
|
||||
@ -569,6 +571,11 @@ class StockItem(MPTTModel):
|
||||
def move(self, location, notes, user, **kwargs):
|
||||
""" Move part to a new location.
|
||||
|
||||
If less than the available quantity is to be moved,
|
||||
a new StockItem is created, with the defined quantity,
|
||||
and that new StockItem is moved.
|
||||
The quantity is also subtracted from the existing StockItem.
|
||||
|
||||
Args:
|
||||
location: Destination location (cannot be null)
|
||||
notes: User notes
|
||||
@ -596,8 +603,10 @@ class StockItem(MPTTModel):
|
||||
if quantity < self.quantity:
|
||||
# We need to split the stock!
|
||||
|
||||
# Leave behind certain quantity
|
||||
self.splitStock(self.quantity - quantity, user)
|
||||
# Split the existing StockItem in two
|
||||
self.splitStock(quantity, location, user)
|
||||
|
||||
return
|
||||
|
||||
msg = "Moved to {loc}".format(loc=str(location))
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user