Stored Proc: Unlink item from WH
-- SP IF EXISTS ( SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'_AS_UnlinkItemFromWH') AND type IN ( N'P', N'PC' ) ) DROP PROCEDURE _AS_UnlinkItemFromWH GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: Asamco BV, Alexander Toufexis -- Create date: 07/05/2018 -- Description: Remove item from WH -- ============================================= Create Procedure [dbo].[_AS_UnlinkItemFromWH] @StockCode Varchar(100), @WHCode Varchar(100) 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 ('+@StockCode+')' print @LogMessage return END --2) Get WH ID. DECLARE @WhseLink int SELECT @WhseLink = (Select WhseLink from dbo.WhseMst WHERE WhseMst.Code = @WHCode) IF (COALESCE(@WhseLink,0) = 0) --early out, if WH doesn't exist BEGIN Select @LogMessage = 'WH code does not exist, aborting ('+@WHCode+')' print @LogMessage return END --3) Check if stock item has balances in WH DECLARE @QtyInWH float SELECT @QtyInWH = (SELECT ABS([WHQtyOnHand]) + ABS([WHQtyOnSO]) + ABS([WHQtyOnPO]) + ABS([WHQtyReserved]) FROM WhseStk W WHERE W.WHStockLink = @stockLink AND W.[WHWhseID] = @WhseLink) IF (@QtyInWH > 0) --early out. Note qty is handled using Absolutes, so qty check works. BEGIN Select @LogMessage = 'Stock Item ('+@StockCode+') has Qtys in the WH ('+@WHCode+') (on hand, or on PO, or on SO) aborting ('+@stockLink+')' print @LogMessage return END --4) Remove record from WhseStk DECLARE @idWHStk bigint SELECT @idWHStk = COALESCE((SELECT IdWhseStk FROM WhseStk WHERE WhseStk.[WHWhseID] = @WhseLink AND WhseStk.WHStockLink = @stockLink),0) IF (@idWHStk > 0) BEGIN DELETE FROM WhseStk WHERE WhseStk.[WHWhseID] = @WhseLink AND WhseStk.WHStockLink = @stockLink Select @LogMessage = 'SUCCESS: Stock Item ('+@StockCode+') was deleted from WH ('+@WHCode+')' print @LogMessage END ELSE BEGIN Select @LogMessage = 'INFO: Stock Item ('+@StockCode+') was not found in WH ('+@WHCode+')' print @LogMessage END END