Skip to content

Commit

Permalink
Zero stock fix (#8766) (#8768)
Browse files Browse the repository at this point in the history
* Change backend validation

- Allow stock adjustments with zero quantity

* Frontend changes

(cherry picked from commit ae7f4e3)

Co-authored-by: Oliver <[email protected]>
  • Loading branch information
github-actions[bot] and SchrodingersGat authored Dec 26, 2024
1 parent 40245a6 commit cab7a06
Show file tree
Hide file tree
Showing 3 changed files with 11 additions and 5 deletions.
9 changes: 7 additions & 2 deletions src/backend/InvenTree/stock/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -1508,17 +1508,22 @@ def child_count(self):
"""
return self.children.count()

def is_in_stock(self, check_status: bool = True):
def is_in_stock(
self, check_status: bool = True, check_quantity: bool = True
) -> bool:
"""Return True if this StockItem is "in stock".
Args:
check_status: If True, check the status of the StockItem. Defaults to True.
check_quantity: If True, check the quantity of the StockItem. Defaults to True.
"""
if check_status and self.status not in StockStatusGroups.AVAILABLE_CODES:
return False

if check_quantity and self.quantity <= 0:
return False

return all([
self.quantity > 0, # Quantity must be greater than zero
self.sales_order is None, # Not assigned to a SalesOrder
self.belongs_to is None, # Not installed inside another StockItem
self.customer is None, # Not assigned to a customer
Expand Down
4 changes: 3 additions & 1 deletion src/backend/InvenTree/stock/serializers.py
Original file line number Diff line number Diff line change
Expand Up @@ -1571,7 +1571,9 @@ def validate_pk(self, pk):
'STOCK_ALLOW_OUT_OF_STOCK_TRANSFER', backup_value=False, cache=False
)

if not allow_out_of_stock_transfer and not pk.is_in_stock(check_status=False):
if not allow_out_of_stock_transfer and not pk.is_in_stock(
check_status=False, check_quantity=False
):
raise ValidationError(_('Stock item is not in stock'))

return pk
Expand Down
3 changes: 1 addition & 2 deletions src/frontend/src/pages/stock/StockDetail.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -661,7 +661,6 @@ export default function StockDetail() {
const stockActions = useMemo(() => {
const inStock =
user.hasChangeRole(UserRoles.stock) &&
stockitem.quantity > 0 &&
!stockitem.sales_order &&
!stockitem.belongs_to &&
!stockitem.customer &&
Expand Down Expand Up @@ -717,7 +716,7 @@ export default function StockDetail() {
{
name: t`Remove`,
tooltip: t`Remove Stock`,
hidden: serialized || !inStock,
hidden: serialized || !inStock || stockitem.quantity <= 0,
icon: <InvenTreeIcon icon='remove' iconProps={{ color: 'red' }} />,
onClick: () => {
stockitem.pk && removeStockItem.open();
Expand Down

0 comments on commit cab7a06

Please sign in to comment.