Skip to end of metadata
Go to start of metadata
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




  • No labels