USP_DATAFORMTEMPLATE_EDITLOAD_DISCOUNTDETAIL

The load procedure used by the edit dataform template "Discount Details Edit Data Form"

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier IN The input ID parameter used to load the fields defined on the form.
@DATALOADED bit INOUT Output parameter indicating whether or not data was actually loaded.
@TSLONG bigint INOUT Output parameter indicating the TSLONG value of the record being edited. This is used to manage multi-user concurrency issues when multiple users access the same record.
@NUMBERTOPURCHASE int INOUT Quantity at full price
@NUMBERTODISCOUNTTYPECODE tinyint INOUT Quantity discounted
@NUMBERTODISCOUNT int INOUT Number to discount
@CALCULATIONTYPECODE tinyint INOUT Calculation type
@DISCOUNTTICKETSFORCODE tinyint INOUT Limit discount to
@LIMITDISCOUNTSPERORDER bit INOUT Limit the number of times this discount may be applied
@NUMBEROFDISCOUNTSPERORDER int INOUT Uses allowed
@DISCOUNTQUALIFYINGPRICETYPES xml INOUT Buy these price types
@DISCOUNTPRICETYPES xml INOUT Apply discounts to these price types
@DISCOUNTMERCHANDISEDEPARTMENTS xml INOUT Departments
@DISCOUNTMERCHANDISEITEMS xml INOUT Items
@ITEMMERCHANDISEPERCENT decimal(5, 2) INOUT Value
@ITEMMERCHANDISEAMOUNT money INOUT Value
@QUALIFYINGDISCOUNTMERCHANDISEDEPARTMENTS xml INOUT Departments
@QUALIFYINGDISCOUNTMERCHANDISEITEMS xml INOUT Items
@QUALIFYINGITEMTYPECODE tinyint INOUT Item type
@DISCOUNTITEMTYPECODE tinyint INOUT Item type
@DISCOUNTMERCHANDISEFORCODE tinyint INOUT Limit discount to
@APPLIESTOMERCHANDISECODE tinyint INOUT Applies to
@QUALIFYINGAPPLIESTOMERCHANDISECODE tinyint INOUT Triggered by
@DISCOUNTPROGRAMS xml INOUT Select programs for discount

Definition

Copy


CREATE procedure dbo.USP_DATAFORMTEMPLATE_EDITLOAD_DISCOUNTDETAIL
(
    @ID uniqueidentifier,
    @DATALOADED bit = 0 output,
    @TSLONG bigint = 0 output,
    @NUMBERTOPURCHASE int = null output,
    @NUMBERTODISCOUNTTYPECODE tinyint = null output,
    @NUMBERTODISCOUNT int = null output,
    @CALCULATIONTYPECODE tinyint = null output,
    @DISCOUNTTICKETSFORCODE tinyint = null output,
    @LIMITDISCOUNTSPERORDER bit = null output,
    @NUMBEROFDISCOUNTSPERORDER int = null output,
    @DISCOUNTQUALIFYINGPRICETYPES xml = null output,
    @DISCOUNTPRICETYPES xml = null output,
    @DISCOUNTMERCHANDISEDEPARTMENTS xml = null output,
    @DISCOUNTMERCHANDISEITEMS xml = null output,
    @ITEMMERCHANDISEPERCENT decimal(5, 2) = null output,
    @ITEMMERCHANDISEAMOUNT money = null output,
    @QUALIFYINGDISCOUNTMERCHANDISEDEPARTMENTS xml = null output,
    @QUALIFYINGDISCOUNTMERCHANDISEITEMS xml = null output,
    @QUALIFYINGITEMTYPECODE tinyint = null output,
    @DISCOUNTITEMTYPECODE tinyint = null output,
    @DISCOUNTMERCHANDISEFORCODE tinyint = null output,
    @APPLIESTOMERCHANDISECODE tinyint = null output,
    @QUALIFYINGAPPLIESTOMERCHANDISECODE tinyint = null output,
    @DISCOUNTPROGRAMS xml = null output
)
as
    set nocount on;

    set @DATALOADED = 0;

    declare @APPLIESTOCODE tinyint;

    select
        @DATALOADED = 1,
        @NUMBERTOPURCHASE = NUMBERTOPURCHASE,
        @NUMBERTODISCOUNTTYPECODE = NUMBERTODISCOUNTTYPECODE,
        @NUMBERTODISCOUNT = NUMBERTODISCOUNT,
        @CALCULATIONTYPECODE = CALCULATIONTYPECODE,
        @DISCOUNTTICKETSFORCODE = DISCOUNTTICKETSFORCODE,
        @LIMITDISCOUNTSPERORDER = LIMITDISCOUNTSPERORDER,
        @NUMBEROFDISCOUNTSPERORDER = NUMBEROFDISCOUNTSPERORDER,
        @DISCOUNTITEMTYPECODE = DISCOUNTITEMTYPECODE,
        @QUALIFYINGITEMTYPECODE = QUALIFYINGITEMTYPECODE,
        @ITEMMERCHANDISEPERCENT = MERCHANDISEPERCENT,
        @ITEMMERCHANDISEAMOUNT = MERCHANDISEAMOUNT,
        @DISCOUNTMERCHANDISEFORCODE = DISCOUNTMERCHANDISEFORCODE
    from
        dbo.DISCOUNT

    where
        ID = @ID;

    if @DATALOADED = 1
    begin
        if @QUALIFYINGITEMTYPECODE = 0 -- tickets qualifying

        begin
            set @DISCOUNTQUALIFYINGPRICETYPES = dbo.UFN_DISCOUNT_GETQUALIFYINGPRICETYPES_TOITEMLISTXML(@ID);
            set @QUALIFYINGAPPLIESTOMERCHANDISECODE = 4;
        end
        else -- merchandise qualifying

        begin
            select
                @QUALIFYINGAPPLIESTOMERCHANDISECODE = DISCOUNTGROUPDETAIL.DISCOUNTGROUPDETAILAPPLICATIONCODE
            from dbo.DISCOUNTGROUPDETAIL
            inner join dbo.DISCOUNTGROUP
                on DISCOUNTGROUP.ID = DISCOUNTGROUPDETAIL.DISCOUNTGROUPID
            where DISCOUNTGROUP.DISCOUNTID = @ID
                and DISCOUNTGROUPDETAIL.DISCOUNTEDITEM = 0
                and DISCOUNTGROUPDETAIL.DISCOUNTGROUPDETAILAPPLICATIONCODE <> 3

            if @QUALIFYINGAPPLIESTOMERCHANDISECODE = 1
            begin
                set @QUALIFYINGDISCOUNTMERCHANDISEDEPARTMENTS = (
                    select
                        DISCOUNTGROUPDETAILMERCHANDISEDEPARTMENT.ID,
                        DISCOUNTGROUPDETAILMERCHANDISEDEPARTMENT.MERCHANDISEDEPARTMENTID,
                        DISCOUNTGROUPDETAILMERCHANDISEDEPARTMENT.SEQUENCE
                    from dbo.DISCOUNTGROUPDETAILMERCHANDISEDEPARTMENT
                    inner join dbo.DISCOUNTGROUPDETAIL
                        on dbo.DISCOUNTGROUPDETAILMERCHANDISEDEPARTMENT.ID = DISCOUNTGROUPDETAIL.ID
                    inner join dbo.DISCOUNTGROUP
                        on DISCOUNTGROUP.ID = DISCOUNTGROUPDETAIL.DISCOUNTGROUPID
                    where DISCOUNTGROUP.DISCOUNTID = @ID
                        and DISCOUNTEDITEM = 0
                    for xml raw('ITEM'),type,elements,root('QUALIFYINGDISCOUNTMERCHANDISEDEPARTMENTS'),binary base64
                );
            end
            else if @QUALIFYINGAPPLIESTOMERCHANDISECODE = 2
            begin
                set @QUALIFYINGDISCOUNTMERCHANDISEITEMS = (
                    select
                        DISCOUNTGROUPDETAILMERCHANDISEITEM.ID,
                        DISCOUNTGROUPDETAILMERCHANDISEITEM.MERCHANDISEITEMID,
                        DISCOUNTGROUPDETAILMERCHANDISEITEM.SEQUENCE
                    from dbo.DISCOUNTGROUPDETAILMERCHANDISEITEM
                    inner join dbo.DISCOUNTGROUPDETAIL
                        on dbo.DISCOUNTGROUPDETAILMERCHANDISEITEM.ID = DISCOUNTGROUPDETAIL.ID
                    inner join dbo.DISCOUNTGROUP
                        on DISCOUNTGROUP.ID = DISCOUNTGROUPDETAIL.DISCOUNTGROUPID
                    where DISCOUNTGROUP.DISCOUNTID = @ID
                        and DISCOUNTEDITEM = 0
                    for xml raw('ITEM'),type,elements,root('QUALIFYINGDISCOUNTMERCHANDISEITEMS'),binary base64
                );

            end

        end

        if @DISCOUNTITEMTYPECODE = 0
        begin
            set @DISCOUNTPRICETYPES = dbo.UFN_DISCOUNT_GETPRICETYPES_TOITEMLISTXML(@ID);
            set @APPLIESTOMERCHANDISECODE = 5
        end
        else -- merchandise is discounted

        begin
            select
                @APPLIESTOMERCHANDISECODE = DISCOUNTGROUPDETAIL.DISCOUNTGROUPDETAILAPPLICATIONCODE
            from dbo.DISCOUNTGROUPDETAIL
            inner join dbo.DISCOUNTGROUP
                on DISCOUNTGROUP.ID = DISCOUNTGROUPDETAIL.DISCOUNTGROUPID
            where DISCOUNTGROUP.DISCOUNTID = @ID
                and DISCOUNTEDITEM = 1
                and DISCOUNTGROUPDETAIL.DISCOUNTGROUPDETAILAPPLICATIONCODE <> 3

            if @APPLIESTOMERCHANDISECODE = 1
            begin
                set @DISCOUNTMERCHANDISEDEPARTMENTS = (
                    select
                        DISCOUNTGROUPDETAILMERCHANDISEDEPARTMENT.ID,
                        DISCOUNTGROUPDETAILMERCHANDISEDEPARTMENT.MERCHANDISEDEPARTMENTID,
                        DISCOUNTGROUPDETAILMERCHANDISEDEPARTMENT.SEQUENCE
                    from dbo.DISCOUNTGROUPDETAILMERCHANDISEDEPARTMENT
                    inner join dbo.DISCOUNTGROUPDETAIL
                        on dbo.DISCOUNTGROUPDETAILMERCHANDISEDEPARTMENT.ID = DISCOUNTGROUPDETAIL.ID
                    inner join dbo.DISCOUNTGROUP
                        on DISCOUNTGROUP.ID = DISCOUNTGROUPDETAIL.DISCOUNTGROUPID
                    where DISCOUNTGROUP.DISCOUNTID = @ID
                        and DISCOUNTEDITEM = 1
                    for xml raw('ITEM'),type,elements,root('DISCOUNTMERCHANDISEDEPARTMENTS'),binary base64
                );
            end
            else if @APPLIESTOMERCHANDISECODE = 2
            begin
                set @DISCOUNTMERCHANDISEITEMS = (
                    select
                        DISCOUNTGROUPDETAILMERCHANDISEITEM.ID,
                        DISCOUNTGROUPDETAILMERCHANDISEITEM.MERCHANDISEITEMID,
                        DISCOUNTGROUPDETAILMERCHANDISEITEM.SEQUENCE
                    from dbo.DISCOUNTGROUPDETAILMERCHANDISEITEM
                    inner join dbo.DISCOUNTGROUPDETAIL
                        on dbo.DISCOUNTGROUPDETAILMERCHANDISEITEM.ID = DISCOUNTGROUPDETAIL.ID
                    inner join dbo.DISCOUNTGROUP
                        on DISCOUNTGROUP.ID = DISCOUNTGROUPDETAIL.DISCOUNTGROUPID
                    where DISCOUNTGROUP.DISCOUNTID = @ID
                        and DISCOUNTEDITEM = 1
                    for xml raw('ITEM'),type,elements,root('DISCOUNTMERCHANDISEITEMS'),binary base64
                );
            end
        end

        if @DISCOUNTITEMTYPECODE = 0 or @QUALIFYINGITEMTYPECODE = 0
            set @DISCOUNTPROGRAMS =
                (
                    select distinct
                        DISCOUNTGROUPID,
                        PROGRAMID
                    from dbo.UFN_DISCOUNT_GETDISCOUNTEDPROGRAMS(@ID)
                    for xml raw('ITEM'),type,elements,root('DISCOUNTPROGRAMS'),binary base64
                );
    end

    return 0;