Skip to end of metadata
Go to start of metadata

Note! No checks are done if transactions are on the stock items!



--call this:
EXEC _as_DeleteAllDuplicateStock



DELETE DUPLICATES - ALL
--EXEC _as_DeleteAllDuplicateStock

CREATE PROCEDURE _as_DeleteAllDuplicateStock
AS
BEGIN

DECLARE @ItemCode varchar(100)
DECLARE MyCursor CURSOR 
 	FORWARD_ONLY
 	FOR
	select Code FROm StkItem group by Code having count(*) > 1

	OPEN MyCursor
 
 	FETCH NEXT FROM MyCursor INTO @ItemCode
 				
 	WHILE @@FETCH_STATUS = 0 
 	BEGIN	

		EXEC _as_DeleteDuplicateStockItem @ItemCode

	FETCH NEXT FROM MyCursor INTO @ItemCode
 	END 
 	CLOSE MyCursor
 	DEALLOCATE MyCursor

END

SQL - Delete Duplicate Stock Item
CREATE PROCEDURE _as_DeleteDuplicateStockItem
	@ItemCode as varchar(100)
AS
BEGIN
	DECLARE @stockID int
	if exists (SELECT * FROM StkItem WHERE Code = @ItemCode GROUP BY Code HAVING COUNT(*) > 1)
		BEGIN
			SELECT @stockID = (SELECT TOP 1 StockLink FROM StkItem WHERE Code = @ItemCode)
			DELETE FROM StkItem WHERE StockLink = @stockID;
			DELETE FROM WhseStk WHERE WhseStk.WHStockLink = @stockID;
			PRINT 'Deleted item ' + @ItemCode + ' with id ' + cast(@stockid as varchar(100));
		END
	ELSE
		BEGIN
			PRINT 'DID NOT DELETE item ' + @ItemCode ;
		END
END



  • No labels