USP_MERGETWOCONSTITUENTS_SECURITIES
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@SOURCEID | uniqueidentifier | IN | |
@TARGETID | uniqueidentifier | IN | |
@CHANGEAGENTID | uniqueidentifier | IN |
Definition
Copy
create procedure dbo.USP_MERGETWOCONSTITUENTS_SECURITIES
(
@SOURCEID uniqueidentifier,
@TARGETID uniqueidentifier,
@CHANGEAGENTID uniqueidentifier = null
)
as
begin
set nocount on;
declare @CURRENTDATE datetime = getdate();
-- If Source and Target match on hash code and Source is Rejected/Confirmed, but Target is not Rejected/Confirmed, update the Target record values with Source record values. Notes will always be appended.
update TARGETSECURITIES
set
[CONFIRMED] = SOURCESECURITIES.CONFIRMED
,[DATECONFIRMED] = SOURCESECURITIES.DATECONFIRMED
,[CONFIRMEDBYAPPUSERID] = SOURCESECURITIES.CONFIRMEDBYAPPUSERID
,[SOURCE] = SOURCESECURITIES.SOURCE
,[VIID] = SOURCESECURITIES.VIID
,[REVISION] = SOURCESECURITIES.REVISION
,[ORIGINALID] = SOURCESECURITIES.ORIGINALID
,[NEWROW] = SOURCESECURITIES.NEWROW
,[CDATE] = SOURCESECURITIES.CDATE
,[CVALUE] = SOURCESECURITIES.CVALUE
,[CNOTES] = case SOURCESECURITIES.CNOTES when '' then TARGETSECURITIES.CNOTES else TARGETSECURITIES.CNOTES + (case when TARGETSECURITIES.CNOTES = '' then '' else (char(13) + char(10)) end) + SOURCESECURITIES.CNOTES end
,[FULLHASH] = SOURCESECURITIES.FULLHASH
,[PARTIALHASH] = SOURCESECURITIES.PARTIALHASH
,[MC] = SOURCESECURITIES.MC
,[FULLNAME] = SOURCESECURITIES.FULLNAME
,[CUSIP] = SOURCESECURITIES.CUSIP
,[FILERID] = SOURCESECURITIES.FILERID
,[RELATIONSHIP] = SOURCESECURITIES.RELATIONSHIP
,[TICKER] = SOURCESECURITIES.TICKER
,[ISSUERNAME] = SOURCESECURITIES.ISSUERNAME
,[REPORTDATEDIRECT] = SOURCESECURITIES.REPORTDATEDIRECT
,[REPORTDATEINDIRECT] = SOURCESECURITIES.REPORTDATEINDIRECT
,[AMOUNTOWNEDDIRECT] = SOURCESECURITIES.AMOUNTOWNEDDIRECT
,[AMOUNTOWNEDINDIRECT] = SOURCESECURITIES.AMOUNTOWNEDINDIRECT
,[PRICEDIRECT] = SOURCESECURITIES.PRICEDIRECT
,[PRICEINDIRECT] = SOURCESECURITIES.PRICEINDIRECT
,[VALUEDIRECT] = SOURCESECURITIES.VALUEDIRECT
,[VALUEINDIRECT] = SOURCESECURITIES.VALUEINDIRECT
,[UPDATEDVALUEDIRECT] = SOURCESECURITIES.UPDATEDVALUEDIRECT
,[UPDATEDVALUEINDIRECT] = SOURCESECURITIES.UPDATEDVALUEINDIRECT
,[UPDATEDDATE] = SOURCESECURITIES.UPDATEDDATE
,[UPDATEDPRICE] = SOURCESECURITIES.UPDATEDPRICE
,[ACTIVE] = SOURCESECURITIES.ACTIVE
,[CHANGEDBYID] = @CHANGEAGENTID
,[DATECHANGED] = @CURRENTDATE
,[REJECTED] = SOURCESECURITIES.REJECTED
,[DATEREJECTED] = SOURCESECURITIES.DATEREJECTED
,[REJECTEDBYAPPUSERID] = SOURCESECURITIES.REJECTEDBYAPPUSERID
,[VIEWED] = SOURCESECURITIES.VIEWED
,[RECURSIVEMATCH] = SOURCESECURITIES.RECURSIVEMATCH
,[SECURITYID] = SOURCESECURITIES.SECURITYID
,[SHARESHELDDATE] = SOURCESECURITIES.SHARESHELDDATE
,[ISHISTORICAL] = SOURCESECURITIES.ISHISTORICAL
from dbo.WPSECURITIES TARGETSECURITIES
inner join dbo.WPSECURITIES SOURCESECURITIES ON SOURCESECURITIES.PARTIALHASH = TARGETSECURITIES.PARTIALHASH
where SOURCESECURITIES.WEALTHID = @SOURCEID
and TARGETSECURITIES.WEALTHID = @TARGETID
and not (TARGETSECURITIES.CONFIRMED = 1 or TARGETSECURITIES.REJECTED = 1)
and (SOURCESECURITIES.CONFIRMED = 1 or SOURCESECURITIES.REJECTED = 1)
and SOURCESECURITIES.PARTIALHASH <> ''
-- For all other cases when Source and Target match on hash codes, only notes will be appended.
update TARGETSECURITIES
set
[CNOTES] = TARGETSECURITIES.CNOTES + (case when TARGETSECURITIES.CNOTES = '' then '' else (char(13) + char(10)) end) + SOURCESECURITIES.CNOTES
,[CHANGEDBYID] = @CHANGEAGENTID
,[DATECHANGED] = @CURRENTDATE
from dbo.WPSECURITIES TARGETSECURITIES
inner join dbo.WPSECURITIES SOURCESECURITIES ON SOURCESECURITIES.PARTIALHASH = TARGETSECURITIES.PARTIALHASH
where SOURCESECURITIES.WEALTHID = @SOURCEID
and TARGETSECURITIES.WEALTHID = @TARGETID
and ((TARGETSECURITIES.CONFIRMED = 1 or TARGETSECURITIES.REJECTED = 1)
or (SOURCESECURITIES.CONFIRMED = 0 and SOURCESECURITIES.REJECTED = 0))
and SOURCESECURITIES.PARTIALHASH <> ''
and SOURCESECURITIES.CNOTES <> ''
-- If unique record in Source that came from wealth screening (will have hash code), move it to Target.
update SOURCESECURITIES
set
[WEALTHID] = @TARGETID,
[CHANGEDBYID] = @CHANGEAGENTID,
[DATECHANGED] = @CURRENTDATE
from dbo.WPSECURITIES SOURCESECURITIES
left join dbo.WPSECURITIES TARGETSECURITIES ON TARGETSECURITIES.PARTIALHASH = SOURCESECURITIES.PARTIALHASH and TARGETSECURITIES.WEALTHID = @TARGETID
where SOURCESECURITIES.WEALTHID = @SOURCEID
and (SOURCESECURITIES.PARTIALHASH is not null and SOURCESECURITIES.PARTIALHASH <> '')
and TARGETSECURITIES.ID is null
-- If unique record in Source which is entered manually, move it to Target.
update dbo.WPSECURITIES
set
[WEALTHID] = @TARGETID,
[CHANGEDBYID] = @CHANGEAGENTID,
[DATECHANGED] = @CURRENTDATE
where WEALTHID = @SOURCEID
and (PARTIALHASH is null or PARTIALHASH = '')
exec dbo.USP_WEALTHPOINT_UPDATEWEALTHSUMMARY_SECURITIES @TARGETID, @CHANGEAGENTID;
exec dbo.USP_WEALTHPOINT_UPDATEWEALTHSUMMARY_SECURITIES @SOURCEID, @CHANGEAGENTID;
end