USP_PROGRAMDISCOUNT_COPYDISCOUNT_UPDATEFROMXML

This program will update a program's discounts given a collection of discounts.

Parameters

Parameter Parameter Type Mode Description
@PROGRAMID uniqueidentifier IN
@XML xml IN
@CHANGEAGENTID uniqueidentifier IN
@CHANGEDATE datetime IN

Definition

Copy


            CREATE PROCEDURE [dbo].[USP_PROGRAMDISCOUNT_COPYDISCOUNT_UPDATEFROMXML] 
            (
                @PROGRAMID uniqueidentifier,
                @XML xml,
                @CHANGEAGENTID uniqueidentifier = null,
                @CHANGEDATE datetime = null
            )

            as
            set nocount on;

            if @CHANGEAGENTID is null
                exec USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;

            if @CHANGEDATE is null 
                set @CHANGEDATE = getdate();

            declare @contextCache varbinary(128);
            declare @e int;

            -- cache current context information 

            set @contextCache = CONTEXT_INFO();

            -- set CONTEXT_INFO to @CHANGEAGENTID 

            if not @CHANGEAGENTID is null
                set CONTEXT_INFO @CHANGEAGENTID;

            -- delete any discounts associated with the program

            delete from dbo.[PROGRAMDISCOUNT] where [PROGRAMDISCOUNT].PROGRAMID=@PROGRAMID;

            select @e=@@error;

            -- reset CONTEXT_INFO to previous value 

            if not @contextCache is null
                set CONTEXT_INFO @contextCache;

            if @e <> 0
                return 1;

            -- insert all items from the xml


            insert into [PROGRAMDISCOUNT] 
            ([PROGRAMID], 
            [DISCOUNTID],
            [ID],                
            ADDEDBYID, 
            CHANGEDBYID, 
            DATEADDED, 
            DATECHANGED)
            (select
            @PROGRAMID
            [DISCOUNTID],
            newid(),
            @CHANGEAGENTID
            @CHANGEAGENTID
            @CHANGEDATE
            @CHANGEDATE
            from dbo.UFN_PROGRAMDISCOUNT_GETDISCOUNT_FROMITEMLISTXML(@XML)
            )

            if @@Error <> 0
                return 2;

            return 0;