USP_MERGETASK_CONSTITUENT_VENDOR
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@SOURCEID | uniqueidentifier | IN | |
@TARGETID | uniqueidentifier | IN | |
@CHANGEAGENTID | uniqueidentifier | IN |
Definition
Copy
CREATE procedure dbo.USP_MERGETASK_CONSTITUENT_VENDOR
(
@SOURCEID uniqueidentifier,
@TARGETID uniqueidentifier,
@CHANGEAGENTID uniqueidentifier
)
as
set nocount on;
-- WI 168786, if this is a group merge then skip the vendor merge task because groups cannot be vendors
if dbo.UFN_CONSTITUENT_ISGROUP(@TARGETID) = 0
begin
declare @CURRENTDATE datetime = getdate();
declare @PRODUCTSFORVENDOR table(ID uniqueidentifier);
insert into @PRODUCTSFORVENDOR
select
PRODUCTID
from dbo.PRODUCTVENDOR
where VENDORID = @SOURCEID;
declare @SERVICETYPESFORVENDOR table ([SERVICETYPECODE] tinyint);
insert into @SERVICETYPESFORVENDOR
select
SERVICETYPECODE
from dbo.MKTVENDORSERVICETYPE
where VENDORID = @SOURCEID;
declare @SERVICESFORVENDOR table ([SERVICEID] uniqueidentifier);
insert into @SERVICESFORVENDOR
select
SERVICEID
from MKTVENDORSERVICE
where VENDORID = @SOURCEID;
declare @e int;
declare @contextCache varbinary(128);
set @contextCache = CONTEXT_INFO();
if not @CHANGEAGENTID is null
set CONTEXT_INFO @CHANGEAGENTID
delete from dbo.PRODUCTVENDOR where VENDORID=@SOURCEID;
delete from dbo.MKTVENDORSERVICETYPE where VENDORID = @SOURCEID;
delete from dbo.MKTVENDORSERVICE where VENDORID = @SOURCEID;
if not @contextCache is null
set CONTEXT_INFO @contextCache
select @e=@@error;
if @e<>0 return -456; --always return non-zero sp result if an error occurs
-- if target constituent is not already a vendor
if not exists(select 1 from dbo.VENDOR where ID = @TARGETID)
begin
update dbo.VENDOR
set
ID = @TARGETID,
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = @CURRENTDATE
where ID = @SOURCEID;
end
insert into dbo.PRODUCTVENDOR
(
VENDORID,
PRODUCTID,
ADDEDBYID,
CHANGEDBYID,
DATEADDED,
DATECHANGED
)
select
@TARGETID,
ID,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
from @PRODUCTSFORVENDOR;
insert into dbo.MKTVENDORSERVICETYPE
(
VENDORID,
SERVICETYPECODE,
ADDEDBYID,
CHANGEDBYID,
DATEADDED,
DATECHANGED
)
select
@TARGETID,
SERVICETYPECODE,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
from @SERVICETYPESFORVENDOR as T
where not exists (select top 1 1 from dbo.MKTVENDORSERVICETYPE where VENDORID = @TARGETID and SERVICETYPECODE = T.SERVICETYPECODE);
insert into dbo.MKTVENDORSERVICE
(
VENDORID,
SERVICEID,
ADDEDBYID,
CHANGEDBYID,
DATEADDED,
DATECHANGED
)
select
@TARGETID,
SERVICEID,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
from @SERVICESFORVENDOR as T
where not exists (select top 1 1 from dbo.MKTVENDORSERVICE where VENDORID = @TARGETID and SERVICEID = T.SERVICEID);
end
return 0;