USP_DATAFORMTEMPLATE_EDIT_DISCOUNTGENERAL

The save procedure used by the edit dataform template "Discount General Edit 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.
@NAME nvarchar(100) IN Name
@DESCRIPTION nvarchar(255) IN Description
@DISCOUNTTYPECODE tinyint IN Discount type code
@APPLIESTOCODE tinyint IN Applies to code
@APPLICATIONTYPECODE tinyint IN Selected for use
@CALCULATIONTYPECODE tinyint IN Calculation type
@PERCENT decimal(5, 2) IN Value
@AMOUNT money IN Value
@LIMITDISCOUNTSPERORDER bit IN Limit the number of times this discount may be applied
@NUMBEROFDISCOUNTSPERORDER int IN Uses allowed

Definition

Copy


                    CREATE procedure dbo.USP_DATAFORMTEMPLATE_EDIT_DISCOUNTGENERAL
                    (
                        @ID uniqueidentifier,
                        @CHANGEAGENTID uniqueidentifier = null,
                        @NAME nvarchar(100),
                        @DESCRIPTION nvarchar(255),
                        @DISCOUNTTYPECODE tinyint,
                        @APPLIESTOCODE tinyint,
                        @APPLICATIONTYPECODE tinyint,
                        @CALCULATIONTYPECODE tinyint,
                        @PERCENT decimal(5,2),
                        @AMOUNT money,
                        @LIMITDISCOUNTSPERORDER bit,
                        @NUMBEROFDISCOUNTSPERORDER int
                    )
                    as
                        set nocount on;

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

                        declare @CURRENTDATE datetime;
                        set @CURRENTDATE = getdate();

                        if @APPLICATIONTYPECODE = 0 and exists(select 1 from dbo.DAILYSALEITEMDISCOUNT where DISCOUNTID = @ID)
                            raiserror('BBERR_DISCOUNT_IN_USE_DAILYSALEBUTTON',13,1)

                        if @CALCULATIONTYPECODE = 0
                            set @PERCENT = 0.0
                        else
                            set @AMOUNT = 0

                        if @APPLIESTOCODE = 0
                            begin
                                set @LIMITDISCOUNTSPERORDER = 0
                                set @NUMBEROFDISCOUNTSPERORDER = 1
                            end

                        if @APPLIESTOCODE = 1
                            begin
                                if @LIMITDISCOUNTSPERORDER = 0
                                    set @NUMBEROFDISCOUNTSPERORDER = 1
                            end

                        begin try
                            if @DISCOUNTTYPECODE = 0
                                begin

                                    -- Clone before updating, because these changes may affect discount amount calculations for old sales orders.

                                    declare @CLONEID uniqueidentifier;
                                    exec dbo.USP_DISCOUNT_CLONE @ID, @CLONEID output;

                                    set @ID = @CLONEID;

                                    if @APPLIESTOCODE = 1
                                        begin
                                            update dbo.DISCOUNT set
                                                NAME = @NAME,
                                                [DESCRIPTION] = @DESCRIPTION,
                                                APPLICATIONTYPECODE = @APPLICATIONTYPECODE,
                                                CALCULATIONTYPECODE = @CALCULATIONTYPECODE,
                                                AMOUNT = 0,
                                                [PERCENT] = 0,
                                                LIMITDISCOUNTSPERORDER = @LIMITDISCOUNTSPERORDER,
                                                NUMBEROFDISCOUNTSPERORDER = @NUMBEROFDISCOUNTSPERORDER,
                                                CHANGEDBYID = @CHANGEAGENTID,
                                                DATECHANGED = @CURRENTDATE
                                            where
                                                ID = @ID;
                                        end
                                    else
                                        begin
                                            update dbo.DISCOUNT set
                                                NAME = @NAME,
                                                [DESCRIPTION] = @DESCRIPTION,
                                                APPLICATIONTYPECODE = @APPLICATIONTYPECODE,
                                                CALCULATIONTYPECODE = @CALCULATIONTYPECODE,
                                                AMOUNT = @AMOUNT,
                                                [PERCENT] = @PERCENT,
                                                LIMITDISCOUNTSPERORDER = @LIMITDISCOUNTSPERORDER,
                                                NUMBEROFDISCOUNTSPERORDER = @NUMBEROFDISCOUNTSPERORDER,
                                                CHANGEDBYID = @CHANGEAGENTID,
                                                DATECHANGED = @CURRENTDATE
                                            where
                                                ID = @ID;
                                        end
                                end
                            else
                                begin
                                    update dbo.DISCOUNT set
                                        NAME = @NAME,
                                        [DESCRIPTION] = @DESCRIPTION,
                                        APPLICATIONTYPECODE = @APPLICATIONTYPECODE,
                                        CHANGEDBYID = @CHANGEAGENTID,
                                        DATECHANGED = @CURRENTDATE
                                    where
                                        ID = @ID;
                                end

                            if @APPLICATIONTYPECODE<>2
                                exec dbo.USP_DISCOUNT_GETPROMOTIONALCODES_UPDATEFROMXML @ID, null, @CHANGEAGENTID, @CURRENTDATE;

                        end try

                        begin catch
                            exec dbo.USP_RAISE_ERROR;
                            return 1;
                        end catch

                        return 0;