USP_DISCOUNT_ADDDISCOUNTPROGRAMSFROMXML
Adds to the discounted programs table from the xml passed to it from the grid.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@DISCOUNTID | uniqueidentifier | IN | |
@XML | xml | IN | |
@DISCOUNTTYPECODE | tinyint | IN | |
@CHANGEAGENTID | uniqueidentifier | IN | |
@CHANGEDATE | datetime | IN | |
@DISCOUNTITEMTYPECODE | tinyint | IN | |
@QUALIFYINGITEMTYPECODE | tinyint | IN |
Definition
Copy
CREATE procedure [dbo].[USP_DISCOUNT_ADDDISCOUNTPROGRAMSFROMXML]
(
@DISCOUNTID uniqueidentifier,
@XML xml,
@DISCOUNTTYPECODE tinyint = 0,
@CHANGEAGENTID uniqueidentifier = null,
@CHANGEDATE datetime = null,
@DISCOUNTITEMTYPECODE tinyint = 0,
@QUALIFYINGITEMTYPECODE tinyint = 0
)
as
set nocount on;
if @CHANGEAGENTID is null
exec USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output
if @CHANGEDATE is null
set @CHANGEDATE = getdate()
-- build a temporary table containing the values from the XML
declare @TempTbl table (
[DISCOUNTITEMID] uniqueidentifier,
[QUALIFYINGITEMID] uniqueidentifier,
[DISCOUNTGROUPID] uniqueidentifier,
[PROGRAMID] uniqueidentifier)
insert into @TempTbl select
[DISCOUNTITEMID], [DISCOUNTGROUPID], [QUALIFYINGITEMID], [PROGRAMID]
from dbo.UFN_DISCOUNT_GETDISCOUNTPROGRAMS_FROMITEMLISTXML(@XML)
update @TempTbl set DISCOUNTITEMID = newid() where (DISCOUNTITEMID is null) or (DISCOUNTITEMID = '00000000-0000-0000-0000-000000000000');
update @TempTbl set DISCOUNTGROUPID = newid() where (DISCOUNTGROUPID is null) or (DISCOUNTGROUPID = '00000000-0000-0000-0000-000000000000');
if @@Error <> 0
return 1;
-- insert new items
insert into [DISCOUNTGROUP]
([DISCOUNTID],
[ID],
ADDEDBYID,
CHANGEDBYID,
DATEADDED,
DATECHANGED)
select @DISCOUNTID,
[DISCOUNTGROUPID],
@CHANGEAGENTID,
@CHANGEAGENTID,
@CHANGEDATE,
@CHANGEDATE
from @TempTbl as [temp]
if @@Error <> 0
return 2;
if @DISCOUNTITEMTYPECODE = 0
begin
insert into [DISCOUNTGROUPDETAIL]
([DISCOUNTGROUPID],
[ID],
DISCOUNTEDITEM,
ADDEDBYID,
CHANGEDBYID,
DATEADDED,
DATECHANGED)
select [DISCOUNTGROUPID],
[DISCOUNTITEMID],
1,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CHANGEDATE,
@CHANGEDATE
from @TempTbl as [temp]
if @@Error <> 0
return 2;
insert into [DISCOUNTGROUPDETAILPROGRAM]
(PROGRAMID,
[ID],
ADDEDBYID,
CHANGEDBYID,
DATEADDED,
DATECHANGED)
select [PROGRAMID],
[DISCOUNTITEMID],
@CHANGEAGENTID,
@CHANGEAGENTID,
@CHANGEDATE,
@CHANGEDATE
from @TempTbl as [temp]
if @@Error <> 0
return 2;
end
if @DISCOUNTTYPECODE = 1 and @QUALIFYINGITEMTYPECODE = 0
begin
update @TempTbl set QUALIFYINGITEMID = newid() where (QUALIFYINGITEMID is null) or (QUALIFYINGITEMID = '00000000-0000-0000-0000-000000000000');
insert into [DISCOUNTGROUPDETAIL]
([DISCOUNTGROUPID],
[ID],
DISCOUNTEDITEM,
ADDEDBYID,
CHANGEDBYID,
DATEADDED,
DATECHANGED)
select [DISCOUNTGROUPID],
[QUALIFYINGITEMID],
0,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CHANGEDATE,
@CHANGEDATE
from @TempTbl as [temp]
if @@Error <> 0
return 2;
insert into [DISCOUNTGROUPDETAILPROGRAM]
(PROGRAMID,
[ID],
ADDEDBYID,
CHANGEDBYID,
DATEADDED,
DATECHANGED)
select [PROGRAMID],
[QUALIFYINGITEMID],
@CHANGEAGENTID,
@CHANGEAGENTID,
@CHANGEDATE,
@CHANGEDATE
from @TempTbl as [temp]
if @@Error <> 0
return 2;
end
return 0;