USP_DATAFORMTEMPLATE_EDITSAVE_PROGRAMDISCOUNT

The save procedure used by the edit dataform template "Edit Program Discount Data Form".

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier IN The input ID parameter indicating the ID of the record being edited.
@CHANGEAGENTID uniqueidentifier IN Input parameter indicating the ID of the change agent invoking the procedure.
@DISCOUNTID uniqueidentifier IN Discount

Definition

Copy


                    CREATE procedure dbo.USP_DATAFORMTEMPLATE_EDITSAVE_PROGRAMDISCOUNT
                    (
                        @ID uniqueidentifier,
                        @CHANGEAGENTID uniqueidentifier=null,
                        @DISCOUNTID uniqueidentifier
                    )
                    as 
                        set nocount on;

                        if @CHANGEAGENTID is null  
                        exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output

                        declare @CURRENTDATE datetime
                        set @CURRENTDATE = getdate()

                        declare @OLDDISCOUNTTYPE tinyint
                        declare @NEWDISCOUNTTYPE tinyint

                        begin try
                            select
                                @OLDDISCOUNTTYPE = (select top(1) DISCOUNTTYPECODE from dbo.DISCOUNT where ID = DG.DISCOUNTID),
                                @NEWDISCOUNTTYPE = (select top(1) DISCOUNTTYPECODE from dbo.DISCOUNT where ID = @DISCOUNTID)
                            from dbo.DISCOUNTGROUP DG
                            where DG.ID = @ID

                            update dbo.DISCOUNTGROUP
                            set
                                DISCOUNTID = @DISCOUNTID,
                                CHANGEDBYID = @CHANGEAGENTID,
                                DATECHANGED = @CURRENTDATE
                            where
                                ID = @ID

                            if @OLDDISCOUNTTYPE <> @NEWDISCOUNTTYPE
                            begin
                                if @OLDDISCOUNTTYPE = 1 --moving from BOGO to standard

                                begin
                                    declare @ORPHANDISCOUNTGROUPDETAIL uniqueidentifier
                                    select @ORPHANDISCOUNTGROUPDETAIL = ID from dbo.DISCOUNTGROUPDETAIL where DISCOUNTGROUPID = @ID and DISCOUNTEDITEM = 0
                                    exec USP_DISCOUNTGROUPDETAIL_DELETEBYID_WITHCHANGEAGENTID @ORPHANDISCOUNTGROUPDETAIL, @CHANGEAGENTID
                                end
                                else
                                begin
                                    if @NEWDISCOUNTTYPE = 1 --moving from standard to BOGO

                                    begin
                                            declare @UNDISCOUNTEDGROUPDETAILID uniqueidentifier
                                            declare @PROGRAMID uniqueidentifier

                                            select
                                                @UNDISCOUNTEDGROUPDETAILID = newid(),
                                                @PROGRAMID = DGDP.PROGRAMID
                                            from dbo.DISCOUNTGROUP DG
                                                inner join dbo.DISCOUNTGROUPDETAIL DGD on DG.ID = DGD.DISCOUNTGROUPID
                                                inner join dbo.DISCOUNTGROUPDETAILPROGRAM DGDP on DGDP.ID = DGD.ID
                                            where
                                                DG.ID = @ID

                                            insert into dbo.DISCOUNTGROUPDETAIL (
                                                ID,
                                                DISCOUNTGROUPID,
                                                DISCOUNTEDITEM,
                                                ADDEDBYID,
                                                CHANGEDBYID,
                                                DATEADDED,
                                                DATECHANGED
                                            ) values (
                                                @UNDISCOUNTEDGROUPDETAILID,
                                                @ID,
                                                0,
                                                @CHANGEAGENTID,
                                                @CHANGEAGENTID,
                                                @CURRENTDATE,
                                                @CURRENTDATE
                                            )

                                            insert into dbo.DISCOUNTGROUPDETAILPROGRAM (
                                                ID,
                                                PROGRAMID,
                                                ADDEDBYID,
                                                CHANGEDBYID,
                                                DATEADDED,
                                                DATECHANGED
                                            ) values (
                                                @UNDISCOUNTEDGROUPDETAILID,
                                                @PROGRAMID,
                                                @CHANGEAGENTID,
                                                @CHANGEAGENTID,
                                                @CURRENTDATE,
                                                @CURRENTDATE
                                            )
                                    end
                                end
                            end
                        end try
                        begin catch
                            exec dbo.USP_RAISE_ERROR
                            return 1
                        end catch

                    return 0;