dbo.InsertNewDiscount.StoredProcedure.sql 4.43 KB
USE [AIADatabaseV5]
GO
/****** Object:  StoredProcedure [dbo].[InsertNewDiscount]    Script Date: 2/1/2018 12:15:55 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- ====================================================
-- Author:		Magic Software
-- Create date: 23-Dec-2009
-- Description:	To create new discount
-- ====================================================

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[InsertNewDiscount]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[InsertNewDiscount]
GO

CREATE PROCEDURE [dbo].[InsertNewDiscount] 
	-- Add the parameters for the stored procedure here
	@dPercentage DECIMAL(5,2), @sStartDate VARCHAR(20), @sEndDate VARCHAR(20), @sDiscountCode VARCHAR(255)=''
AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;
	BEGIN TRY
		BEGIN TRANSACTION
			DECLARE @iDiscountId INT, @iDiscountExists INT
			DECLARE @iActive TINYINT
			DECLARE @dtStartDate DATETIME, @dtEndDate DATETIME
			DECLARE @sErrorStatus CHAR(2)
			
			SET @iActive = 1
			SET @sErrorStatus = 'ok'
			
			-- convert the datatype of startdate & enddate parameter to datetime
			SELECT @dtStartDate = CONVERT(DATETIME,@sStartDate)
			SELECT @dtEndDate = DATEADD(ms,-3,DATEADD(DAY,1,CONVERT(DATETIME,@sEndDate)))
			
			INSERT INTO Discount (Percentage, StartDate, EndDate, IsActive) 
				VALUES(@dPercentage, @dtStartDate, @dtEndDate, @iActive)
			-- to get the last inserted discount id identity value in the current session
			SET @iDiscountId = SCOPE_IDENTITY()
			
			IF @sDiscountCode = ''
			BEGIN
				SET @sDiscountCode = 'InteractiveAnatomy'+RIGHT('000'+CAST(@iDiscountId AS VARCHAR(10)), 3)
				SET @iDiscountExists = (SELECT Id FROM Discount WHERE DiscountCode = @sDiscountCode)
				IF @iDiscountExists > 0
				BEGIN
					UPDATE Discount SET IsActive = 0 WHERE Id = @iDiscountExists
				END
			END
			UPDATE Discount SET DiscountCode = @sDiscountCode WHERE Id = @iDiscountId
			
		COMMIT
		SELECT @sErrorStatus as SPStatus
	END TRY
	BEGIN CATCH
		IF @@TRANCOUNT > 0 
			ROLLBACK TRANSACTION
		SELECT Error_Message() as SPStatus
	END CATCH
   
END

GO