USP_PROGRAM_COPYDISCOUNTS
Assigns program B to all discounts program A is assigned to
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@OLDPROGRAMID | uniqueidentifier | IN | |
@NEWPROGRAMID | uniqueidentifier | IN | |
@CHANGEAGENTID | uniqueidentifier | IN |
Definition
Copy
CREATE procedure dbo.USP_PROGRAM_COPYDISCOUNTS
(
@OLDPROGRAMID uniqueidentifier,
@NEWPROGRAMID uniqueidentifier,
@CHANGEAGENTID uniqueidentifier = null
)
as
begin
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output
declare @CURRENTDATE datetime
set @CURRENTDATE = getdate()
declare @PROGRAMDISCOUNTS table
(
DISCOUNTGROUPID uniqueidentifier,
DISCOUNTGROUPDETAILID uniqueidentifier,
DISCOUNTID uniqueidentifier,
UNDISCOUNTEDGROUPDETAILID uniqueidentifier
)
insert into @PROGRAMDISCOUNTS
select
newid() as DISCOUNTGROUPID,
newid() as DISCOUNTGROUPDETAILID,
DISCOUNT.ID as DISCOUNTID,
case (DISCOUNT.DISCOUNTTYPECODE)
when 1 then newid()
else null
end as UNDISCOUNTEDGROUPDETAILID
from
dbo.DISCOUNT
inner join dbo.DISCOUNTGROUP on DISCOUNTGROUP.DISCOUNTID = DISCOUNT.ID
inner join dbo.DISCOUNTGROUPDETAIL on DISCOUNTGROUPDETAIL.DISCOUNTGROUPID = DISCOUNTGROUP.ID
inner join dbo.DISCOUNTGROUPDETAILPROGRAM on DISCOUNTGROUPDETAIL.ID = DISCOUNTGROUPDETAILPROGRAM.ID
where
DISCOUNT.SUPERSEDEDBYID is null and
DISCOUNTGROUPDETAILPROGRAM.PROGRAMID = @OLDPROGRAMID and
DISCOUNTGROUPDETAIL.DISCOUNTEDITEM = 1
insert into dbo.DISCOUNTGROUP (
ID,
DISCOUNTID,
ADDEDBYID,
CHANGEDBYID,
DATEADDED,
DATECHANGED
)
select
DISCOUNTGROUPID,
DISCOUNTID,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
from @PROGRAMDISCOUNTS
insert into dbo.DISCOUNTGROUPDETAIL (
ID,
DISCOUNTGROUPID,
DISCOUNTEDITEM,
ADDEDBYID,
CHANGEDBYID,
DATEADDED,
DATECHANGED
)
select
DISCOUNTGROUPDETAILID,
DISCOUNTGROUPID,
1,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
from @PROGRAMDISCOUNTS
insert into dbo.DISCOUNTGROUPDETAILPROGRAM (
ID,
PROGRAMID,
ADDEDBYID,
CHANGEDBYID,
DATEADDED,
DATECHANGED
)
select
DISCOUNTGROUPDETAILID,
@NEWPROGRAMID,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
from @PROGRAMDISCOUNTS
-- take care of any bogo discounts
insert into dbo.DISCOUNTGROUPDETAIL (
ID,
DISCOUNTGROUPID,
DISCOUNTEDITEM,
ADDEDBYID,
CHANGEDBYID,
DATEADDED,
DATECHANGED
)
select
UNDISCOUNTEDGROUPDETAILID,
DISCOUNTGROUPID,
0,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
from @PROGRAMDISCOUNTS
where UNDISCOUNTEDGROUPDETAILID is not null
insert into dbo.DISCOUNTGROUPDETAILPROGRAM (
ID,
PROGRAMID,
ADDEDBYID,
CHANGEDBYID,
DATEADDED,
DATECHANGED
)
select
UNDISCOUNTEDGROUPDETAILID,
@NEWPROGRAMID,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
from @PROGRAMDISCOUNTS
where UNDISCOUNTEDGROUPDETAILID is not null
end