USP_DATAFORMTEMPLATE_ADD_DISCOUNTBOGO

The save procedure used by the add dataform template "Discount With Required Purchase Add Data Form".

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier INOUT The output parameter indicating the ID of the record added.
@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
@APPLIESTOCODE tinyint IN Applies to
@APPLICATIONTYPECODE tinyint IN Selected for use
@DISCOUNTTYPECODE tinyint IN Add a discount requiring a purchase
@CALCULATIONTYPECODE tinyint IN Calculation type
@PERCENT decimal(5, 2) IN Value
@AMOUNT money IN Value
@NUMBERTOPURCHASE int IN Quantity at full price
@NUMBERTODISCOUNTTYPECODE tinyint IN Quantity discounted
@NUMBERTODISCOUNT int IN Number to discount
@LIMITDISCOUNTSPERORDER bit IN Limit the number of times this discount may be applied in an order
@NUMBEROFDISCOUNTSPERORDER int IN Uses allowed
@BOGOCALCULATIONTYPECODE tinyint IN Calculation type
@BOGOLIMITDISCOUNTSPERORDER bit IN Limit the number of times this discount may be applied
@BOGONUMBEROFDISCOUNTSPERORDER int IN Uses allowed
@DISCOUNTTICKETSFORCODE tinyint IN Limit discount to
@ALLOWWALKUPSALES bit IN Walk up
@WALKUPID uniqueidentifier IN Walk Up Sales ID
@WALKUPACTIVE bit IN Walk Up Sales Active
@ALLOWADVANCEDSALES bit IN Advance sales
@ADVANCEDID uniqueidentifier IN Advanced Sales ID
@ADVANCEDACTIVE bit IN Advanced Sales Active
@ALLOWONLINESALES bit IN Online
@ONLINEID uniqueidentifier IN Online Sales ID
@ONLINEACTIVE bit IN Online Sales Active
@ALLOWMONDAY bit IN Monday
@ALLOWTUESDAY bit IN Tuesday
@ALLOWWEDNESDAY bit IN Wednesday
@ALLOWTHURSDAY bit IN Thursday
@ALLOWFRIDAY bit IN Friday
@ALLOWSATURDAY bit IN Saturday
@ALLOWSUNDAY bit IN Sunday
@ALLOWDISCOUNTDATEFROM datetime IN From
@ALLOWDISCOUNTDATETO datetime IN To
@ALLOWDISCOUNTTIMEFROM UDT_HOURMINUTE IN From
@ALLOWDISCOUNTTIMETO UDT_HOURMINUTE IN To
@ITEMAMOUNT money IN Value
@ITEMPERCENT decimal(5, 2) IN Value
@PROMOTIONALCODES xml IN Promotion codes
@DISCOUNTQUALIFYINGPRICETYPES xml IN Buy these price types
@DISCOUNTPRICETYPES xml IN Apply discounts to these price types
@DISCOUNTPROGRAMS xml IN Select programs for discount
@DISCOUNTMEMBERS xml IN Restrict discount ot these memberships
@DISCOUNTCONSTITUENCYCODES xml IN Restrict discount to these constituencies
@ADDRESSSELECTIONID uniqueidentifier IN Include
@GROUPSIZES xml IN Group size details
@GROUPSALESID uniqueidentifier IN
@GROUPSALESACTIVE bit IN
@ALLOWGROUPSALES bit IN Group sales
@DISCOUNTMERCHANDISEDEPARTMENTS xml IN Departments
@DISCOUNTMERCHANDISEITEMS xml IN Items
@ITEMMERCHANDISEPERCENT decimal(5, 2) IN Value
@ITEMMERCHANDISEAMOUNT money IN Value
@QUALIFYINGDISCOUNTMERCHANDISEDEPARTMENTS xml IN Departments
@QUALIFYINGDISCOUNTMERCHANDISEITEMS xml IN Items
@QUALIFYINGITEMTYPECODE tinyint IN Item type
@DISCOUNTITEMTYPECODE tinyint IN Item type
@DISCOUNTMERCHANDISEFORCODE tinyint IN Limit discount to
@APPLIESTOMERCHANDISECODE tinyint IN Applies to
@QUALIFYINGAPPLIESTOMERCHANDISECODE tinyint IN Triggered by

Definition

Copy


CREATE procedure dbo.USP_DATAFORMTEMPLATE_ADD_DISCOUNTBOGO
(
    @ID uniqueidentifier = null output,
    @CHANGEAGENTID uniqueidentifier = null,
    @NAME nvarchar(100),
    @DESCRIPTION nvarchar(255) = '',
    @APPLIESTOCODE tinyint = 1,
    @APPLICATIONTYPECODE tinyint = 0,
    @DISCOUNTTYPECODE tinyint = 1,
    @CALCULATIONTYPECODE tinyint = 0,
    @PERCENT decimal(5,2) = 0.0,
    @AMOUNT money = 0,
    @NUMBERTOPURCHASE int = 1,
    @NUMBERTODISCOUNTTYPECODE tinyint = 0,
    @NUMBERTODISCOUNT int = 1,
    @LIMITDISCOUNTSPERORDER bit = 0,
    @NUMBEROFDISCOUNTSPERORDER int = 1,                        
    @BOGOCALCULATIONTYPECODE tinyint = 0,
    @BOGOLIMITDISCOUNTSPERORDER bit = 0,
    @BOGONUMBEROFDISCOUNTSPERORDER int = 1,                        
    @DISCOUNTTICKETSFORCODE tinyint = 0,
    @ALLOWWALKUPSALES bit = 1,
    @WALKUPID uniqueidentifier = null,
    @WALKUPACTIVE bit = 1,
    @ALLOWADVANCEDSALES bit = 1,
    @ADVANCEDID uniqueidentifier = null,
    @ADVANCEDACTIVE bit = 1,                        
    @ALLOWONLINESALES bit = 1,
    @ONLINEID uniqueidentifier = null,
    @ONLINEACTIVE bit = 1,                        
    @ALLOWMONDAY bit=1,
    @ALLOWTUESDAY bit=1,
    @ALLOWWEDNESDAY bit=1,
    @ALLOWTHURSDAY bit=1,
    @ALLOWFRIDAY bit=1,
    @ALLOWSATURDAY bit=1,
    @ALLOWSUNDAY bit=1,
    @ALLOWDISCOUNTDATEFROM  datetime = null,
    @ALLOWDISCOUNTDATETO  datetime = null,
    @ALLOWDISCOUNTTIMEFROM  dbo.UDT_HOURMINUTE = null,
    @ALLOWDISCOUNTTIMETO  dbo.UDT_HOURMINUTE = null,
    @ITEMAMOUNT money = 0,
    @ITEMPERCENT decimal (5,2) = 0.0,                        
    @PROMOTIONALCODES xml = null,
    @DISCOUNTQUALIFYINGPRICETYPES xml = null,
    @DISCOUNTPRICETYPES xml = null,
    @DISCOUNTPROGRAMS xml = null,
    @DISCOUNTMEMBERS xml = null,
    @DISCOUNTCONSTITUENCYCODES xml = null,
    @ADDRESSSELECTIONID uniqueidentifier = null,
    @GROUPSIZES xml = null,
    @GROUPSALESID uniqueidentifier = null,
    @GROUPSALESACTIVE bit = null,
    @ALLOWGROUPSALES bit = 0,
    @DISCOUNTMERCHANDISEDEPARTMENTS xml = null,
    @DISCOUNTMERCHANDISEITEMS xml = null,
    @ITEMMERCHANDISEPERCENT decimal(5, 2) = 0.0,
    @ITEMMERCHANDISEAMOUNT money = 0,
    @QUALIFYINGDISCOUNTMERCHANDISEDEPARTMENTS xml = null,
    @QUALIFYINGDISCOUNTMERCHANDISEITEMS xml = null,
    @QUALIFYINGITEMTYPECODE tinyint = 0,
    @DISCOUNTITEMTYPECODE tinyint = 0,
    @DISCOUNTMERCHANDISEFORCODE tinyint = 0,
    @APPLIESTOMERCHANDISECODE tinyint = 5,
    @QUALIFYINGAPPLIESTOMERCHANDISECODE tinyint = 4

)
as
    set nocount on;

    if @ID is null
        set @ID = newid();

    begin try
        -- 0 tickets  1 merchandise

        if @QUALIFYINGITEMTYPECODE = 0
        -- clear out qualifying merchandise discount xmls

        begin
            select @QUALIFYINGDISCOUNTMERCHANDISEDEPARTMENTS = null,
                @QUALIFYINGDISCOUNTMERCHANDISEITEMS = null
        end
        else
        begin
            select @DISCOUNTQUALIFYINGPRICETYPES = null
            if @QUALIFYINGAPPLIESTOMERCHANDISECODE = 1 and not exists
                (select 1 
                    from @QUALIFYINGDISCOUNTMERCHANDISEDEPARTMENTS.nodes('/QUALIFYINGDISCOUNTMERCHANDISEDEPARTMENTS/ITEM') T(merch)
                )
                raiserror('BBERR_MISSINGQUALIFYINGDEPARTMENTS', 13, 1);            

            if @QUALIFYINGAPPLIESTOMERCHANDISECODE = 2 and not exists
                (select 1 
                    from @QUALIFYINGDISCOUNTMERCHANDISEITEMS.nodes('/QUALIFYINGDISCOUNTMERCHANDISEITEMS/ITEM') T(merch)
                )
                raiserror('BBERR_MISSINGQUALIFYINGITEMS', 13, 1);                        
        end

        if @DISCOUNTITEMTYPECODE = 0
        -- clear out discount merchandise xmls

        begin
            select @DISCOUNTMERCHANDISEDEPARTMENTS = null,
                @DISCOUNTMERCHANDISEITEMS = null
        end
        else
            select @DISCOUNTPRICETYPES = null

        declare @APPLIESTOMERCHANDISE bit = 0
        declare @APPLIESTOTICKETS bit = 0

        if @DISCOUNTITEMTYPECODE = 1
        begin
            set @APPLIESTOMERCHANDISE = 1
            set @APPLIESTOTICKETS = 0
        end
        else
        begin
            set @APPLIESTOMERCHANDISE = 0
            set @APPLIESTOTICKETS = 1
        end

        if (@APPLIESTOMERCHANDISE = 1)
        begin
            if @APPLIESTOMERCHANDISECODE = 1 and not exists 
                (select 1 
                    from @DISCOUNTMERCHANDISEDEPARTMENTS.nodes('/DISCOUNTMERCHANDISEDEPARTMENTS/ITEM') T(merch)
                )

                raiserror('BBERR_MISSINGDEPARTMENTS', 13, 1);

            if @APPLIESTOMERCHANDISECODE = 2 and not exists
                (select 1 
                    from @DISCOUNTMERCHANDISEITEMS.nodes('/DISCOUNTMERCHANDISEITEMS/ITEM') T(merch)
                )
                raiserror('BBERR_MISSINGITEMS', 13, 1);                
        end

        if (@APPLIESTOTICKETS = 1) and not exists 
                (
                    select 1 
                    from @DISCOUNTPRICETYPES.nodes('/DISCOUNTPRICETYPES/ITEM') T(pricetypes)
                )
                raiserror('BBERR_MISSINGPRICETYPES', 13, 1);                

        exec dbo.USP_DISCOUNT_ADD
                @ID,
                @CHANGEAGENTID,
                @NAME,
                @DESCRIPTION,
                @APPLIESTOCODE,
                @APPLICATIONTYPECODE,
                @DISCOUNTTYPECODE,
                @CALCULATIONTYPECODE,
                @PERCENT,
                @AMOUNT,
                @NUMBERTOPURCHASE,
                @NUMBERTODISCOUNTTYPECODE,
                @NUMBERTODISCOUNT,
                @LIMITDISCOUNTSPERORDER,
                @NUMBEROFDISCOUNTSPERORDER,
                @BOGOCALCULATIONTYPECODE,
                @BOGOLIMITDISCOUNTSPERORDER,
                @BOGONUMBEROFDISCOUNTSPERORDER,                        
                @DISCOUNTTICKETSFORCODE,
                @ALLOWWALKUPSALES,
                @WALKUPID,
                @WALKUPACTIVE,
                @ALLOWADVANCEDSALES,
                @ADVANCEDID,
                @ADVANCEDACTIVE,                        
                @ALLOWONLINESALES,
                @ONLINEID,
                @ONLINEACTIVE,                        
                @ALLOWMONDAY,
                @ALLOWTUESDAY,
                @ALLOWWEDNESDAY,
                @ALLOWTHURSDAY,
                @ALLOWFRIDAY,
                @ALLOWSATURDAY,
                @ALLOWSUNDAY,
                @ALLOWDISCOUNTDATEFROM,
                @ALLOWDISCOUNTDATETO,
                @ALLOWDISCOUNTTIMEFROM,
                @ALLOWDISCOUNTTIMETO,
                @ITEMAMOUNT,
                @ITEMPERCENT,                        
                @PROMOTIONALCODES,
                @DISCOUNTQUALIFYINGPRICETYPES,
                @DISCOUNTPRICETYPES,
                @DISCOUNTPROGRAMS,
                @DISCOUNTMEMBERS,
                @DISCOUNTCONSTITUENCYCODES,
                @ADDRESSSELECTIONID,
                @GROUPSIZES,
                @GROUPSALESID,
                @GROUPSALESACTIVE,
                @ALLOWGROUPSALES,
                @APPLIESTOTICKETS, -- tickets

                @APPLIESTOMERCHANDISE, -- merchandise

                @APPLIESTOMERCHANDISECODE,
                @DISCOUNTMERCHANDISEDEPARTMENTS,
                @DISCOUNTMERCHANDISEITEMS,
                @ITEMMERCHANDISEPERCENT,
                @ITEMMERCHANDISEAMOUNT,
                @QUALIFYINGDISCOUNTMERCHANDISEDEPARTMENTS,
                @QUALIFYINGDISCOUNTMERCHANDISEITEMS,
                @QUALIFYINGITEMTYPECODE,
                @DISCOUNTITEMTYPECODE,
                @DISCOUNTMERCHANDISEFORCODE,
                @QUALIFYINGAPPLIESTOMERCHANDISECODE

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


    return 0;