Note; it also ensures it's a warehouse item.
Stored Proc: _as_EnableWarehouseItem
-- SP IF EXISTS ( SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'_AS_EnableWarehouseItem') AND type IN ( N'P', N'PC' ) ) DROP PROCEDURE _AS_EnableWarehouseItem GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO Create Procedure [dbo].[_AS_EnableWarehouseItem] @StockCode Varchar(100), @WHCode Varchar(100) = NULL AS BEGIN Declare @LogMessage as Varchar(1024) --1) Get basic information Declare @stockLink int Declare @Group varchar(100) Select @stockLink = (Select stocklink from stkitem where Code = @StockCode) IF (COALESCE(@stockLink,0) = 0) BEGIN Select @LogMessage = 'Stock code does not exist, aborting ('+@stockLink+')' print @LogMessage return END Select @Group = (Select ItemGroup from stkitem where Code = @StockCode) ----DECLARE Temp Table, in which we will put the WH Codes to add the stock item to. DECLARE @tblWHCodes TABLE (WHCode varchar(100)) IF (@WHCode IS NULL) BEGIN INSERT INTO @tblWHCodes (WHCode) (SELECT Code FROM WhseMst) END ELSE BEGIN INSERT INTO @tblWHCodes (WHCode) VALUES (@WHCode) END --2) Set STK item as WH item Update StkItem set Whseitem =1 where Code =@StockCode --3) Foreach the warehouses and add Item DECLARE @WhseLink int DECLARE WHCursor CURSOR FOR Select WhseLink from dbo.WhseMst WHERE WhseMst.Code IN (SELECT WHCode FROM @tblWHCodes) --Open WHCursor OPEN WHCursor FETCH NEXT FROM WHCursor INTO @WhseLink WHILE @@FETCH_STATUS = 0 BEGIN -- do not create new record, if record already exists IF NOT EXISTS (SELECT ws.IdWhseStk FROM dbo.WhseStk ws WHERE ws.WHStockLink = @stockLink AND ws.WHWhseID = @WhseLink) BEGIN insert into dbo.WhseStk ( [WHWhseID] ,[WHStockLink] ,[WHStockGroup] ,[WHQtyOnHand] ,[WHQtyOnSO] ,[WHQtyOnPO] ,[WHQtyReserved] ,[WHTTInv] ,[WHTTCrn] ,[WHTTGrv] ,[WHTTRts] ,[WHBarCode] ,[WHRe_Ord_Lvl] ,[WHRe_Ord_Qty] ,[WHMin_Lvl] ,[WHMax_Lvl] ,[WHUsePriceDefs] ,[WHUseInfoDefs] ,[WHUseOrderDefs] ,[WHUseDefaultDefs] ,[WHPackCode] ,[WHJobQty] ,[iBinLocationID] -- ,[fLGRVCount] ,[WHMFPQty] ,[WHUseSupplierDefs] ,[fAverageCost] ,[fLatestCost] ,[fLowestCost] ,[fHighestCost] ,[fManualCost] ,[fWhseLastGRVCost] ,[WhseStk_iBranchID] ,[WhseStk_iCreatedBranchID] ,[WhseStk_iModifiedBranchID] ,[WhseStk_iCreatedAgentID] ,[WhseStk_iModifiedAgentID] ,[WhseStk_iChangeSetID] ,[bWHAllowNegStock] -- ,[fWHQtyToDeliver] ,[WhseStk_fLeadDays] ,[WHBuyingAgentID]) Values( @WhseLink, --WHWhseID @stockLink, --WHStockLink @Group, --Group 0, --qty 0, --WHQtyOnSO 0, --WHQtyOnPO 0, --WHQtyReserved 1, --WHTTInv 1, --WHTTCrn 6, --WHTTGrv 6, --WHTTRts '', --WHBarCode 0, --WHRe_Ord_Lvl 0, --WHRe_Ord_Qty 0, --WHMin_Lvl 0, --WHMax_Lvl 1, --WHUsePriceDefs 1, --WHUseInfoDefs 1, --WHUseOrderDefs 1, --WHUseDefaultDefs '', --WHPackCode 0, --WHJobQty 0, --iBinLocationID -- NULL, --fLGRVCount 0, --WHMFPQty 1, --WHUseSupplierDefs 0, --fAverageCost 0, --fLatestCost 0, --fLowestCost 0, --fHighestCost 0, --fManualCost 0, --fWhseLastGRVCost 0, --WhseStk_iBranchID 0, --WhseStk_iCreatedBranchID 0, --WhseStk_iModifiedBranchID 1, --WhseStk_iCreatedAgentID 1, --WhseStk_iModifiedAgentID 1, --WhseStk_iChangeSetID 0, --bWHAllowNegStock -- NULL, --fWHQtyToDeliver 0, --WhseStk_fLeadDays 0) --WHBuyingAgentID END --CURSOR NEXT: WHCursor FETCH NEXT FROM WHCursor INTO @WhseLink END --WHILE @@FETCH_STATUS... WHCursor --Cleaning up cursor: CLOSE WHCursor DEALLOCATE WHCursor END