diff --git a/Distribution/Features/Item/ItemDTOs.cs b/Distribution/Features/Item/ItemDTOs.cs index 9c4cc9d..64533f3 100644 --- a/Distribution/Features/Item/ItemDTOs.cs +++ b/Distribution/Features/Item/ItemDTOs.cs @@ -20,7 +20,8 @@ public record UpdateItemRequest( Guid? SubCategoryId, Guid? BrandId, Guid BaseUomId, - decimal? SalePrice); + decimal? SalePrice, + bool IsActive = true); public record ReplaceConversionsRequest(List Conversions); diff --git a/Distribution/Features/Item/ItemRepository.cs b/Distribution/Features/Item/ItemRepository.cs index 7069e94..4b04b9c 100644 --- a/Distribution/Features/Item/ItemRepository.cs +++ b/Distribution/Features/Item/ItemRepository.cs @@ -20,12 +20,14 @@ public class ItemRepository(AppDBContext context) : IItemRepository public async Task> GetAllAsync(Guid? categoryId = null, Guid? subCategoryId = null, Guid? brandId = null) { + // Deleted items stay IsActive=false but remain visible with an Inactive status — + // Delete never removes the row, only marks it (same rule as Orders/Stores). var query = context.Items .Include(i => i.Category) .Include(i => i.SubCategory) .Include(i => i.Brand) .Include(i => i.BaseUom) - .Where(i => i.IsActive); + .AsQueryable(); if (categoryId.HasValue) query = query.Where(i => i.FK_CategoryId == categoryId); if (subCategoryId.HasValue) query = query.Where(i => i.FK_SubCategoryId == subCategoryId); diff --git a/Distribution/Features/Item/ItemService.cs b/Distribution/Features/Item/ItemService.cs index b3f3b83..777a881 100644 --- a/Distribution/Features/Item/ItemService.cs +++ b/Distribution/Features/Item/ItemService.cs @@ -32,7 +32,7 @@ public class ItemService(IItemRepository repo, IUnitOfWork uow) public async Task GetByIdAsync(Guid id) { var item = await repo.GetByIdAsync(id); - if (item is null || !item.IsActive) return null; + if (item is null) return null; return MapDetail(item); } @@ -74,7 +74,7 @@ public class ItemService(IItemRepository repo, IUnitOfWork uow) public async Task UpdateAsync(Guid id, UpdateItemRequest request, CancellationToken ct = default) { var item = await repo.GetByIdAsync(id); - if (item is null || !item.IsActive) return null; + if (item is null) return null; if (item.SyncSource == Models.SyncSource.Erp) return null; item.Name = request.Name; @@ -84,6 +84,7 @@ public class ItemService(IItemRepository repo, IUnitOfWork uow) item.FK_BrandId = request.BrandId; item.FK_BaseUomId = request.BaseUomId; item.SalePrice = request.SalePrice; + item.IsActive = request.IsActive; await uow.BeginAsync(ct); try { repo.Update(item); await uow.CommitAsync(ct); }