USP_PRICELIST_UPDATEPROGRAMPRICE
Push price list to selected programs and create a link.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | IN | |
@PRICES | xml | IN | |
@PROGRAMS | xml | IN |
Definition
Copy
create procedure dbo.USP_PRICELIST_UPDATEPROGRAMPRICE
(
@ID uniqueidentifier = null,
@PRICES xml = null,
@PROGRAMS xml = null
)
as
begin
declare @CHANGEAGENTID uniqueidentifier
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output
declare @CURRENTDATE datetime
set @CURRENTDATE = 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 prices currently connected to the program
delete from dbo.[PROGRAMPRICE]
where
[PROGRAMPRICE].PROGRAMID in
(
select T.c.value('(ID)[1]','uniqueidentifier') from
@PROGRAMS.nodes('/PROGRAMS/ITEM') T(c)
)
select @e=@@error;
-- reset CONTEXT_INFO to previous value
if not @contextCache is null
set CONTEXT_INFO @contextCache;
if @e <> 0
return 1;
insert into dbo.[PROGRAMPRICE]
(
[PROGRAMID],
[FACEPRICE],
[ID],
[PRICETYPECODEID],
[SEQUENCE],
ADDEDBYID,
CHANGEDBYID,
DATEADDED,
DATECHANGED
)
select
P.programs.value('(ID)[1]','uniqueidentifier'),
T.c.value('(FACEPRICE)[1]','money'),
newid(),
T.c.value('(PRICETYPECODEID)[1]','uniqueidentifier'),
T.c.value('(SEQUENCE)[1]','integer'),
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
from @PRICES.nodes('/PRICES/ITEM') T(c)
cross join
@PROGRAMS.nodes('/PROGRAMS/ITEM') P(programs)
update dbo.PROGRAM set
PRICELISTID = @ID,
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = @CURRENTDATE
where
ID in
(
select T.c.value('(ID)[1]','uniqueidentifier') from
@PROGRAMS.nodes('/PROGRAMS/ITEM') T(c)
)
end