UFN_OPPORTUNITY_DESIGNATIONSCHANGED
Checks if an opportunity's designations changed.
Return
Return Type |
---|
bit |
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@OPPORTUNITYID | uniqueidentifier | IN | |
@DESIGNATIONS | xml | IN |
Definition
Copy
create function dbo.UFN_OPPORTUNITY_DESIGNATIONSCHANGED
(
@OPPORTUNITYID as uniqueidentifier,
@DESIGNATIONS as xml
)
returns bit
with execute as caller
as
begin
declare @DESIGNATIONSTABLE table
(
ID uniqueidentifier,
AMOUNT money,
DESIGNATIONID uniqueidentifier
);
declare @NEWDESIGNATIONSTABLE table
(
ID uniqueidentifier,
AMOUNT money,
DESIGNATIONID uniqueidentifier
);
declare @DESIGNATIONSCOUNT int
declare @CHANGED as bit
set @CHANGED = 0;
if @CHANGED = 0
begin
insert into @NEWDESIGNATIONSTABLE(ID, AMOUNT, DESIGNATIONID)
select ID, AMOUNT, DESIGNATIONID from dbo.UFN_OPPORTUNITY_DESIGNATION_FROMITEMLISTXML(@DESIGNATIONS);
insert into @DESIGNATIONSTABLE(ID, AMOUNT, DESIGNATIONID)
select ID, AMOUNT, DESIGNATIONID from dbo.UFN_OPPORTUNITY_DESIGNATION(@OPPORTUNITYID);
select @DESIGNATIONSCOUNT = count(ID) from @DESIGNATIONSTABLE;
if @DESIGNATIONSCOUNT <> (select count(*) from @NEWDESIGNATIONSTABLE)
set @CHANGED = 1;
if @CHANGED = 0
begin
select @DESIGNATIONSCOUNT = count([NEW].ID)
from @NEWDESIGNATIONSTABLE as [NEW]
inner join @DESIGNATIONSTABLE as [OLD]
on [NEW].AMOUNT = [OLD].AMOUNT
and ([NEW].DESIGNATIONID = [OLD].DESIGNATIONID or ([NEW].DESIGNATIONID is null and [OLD].DESIGNATIONID is null));
if @DESIGNATIONSCOUNT <> (select count(*) from @NEWDESIGNATIONSTABLE)
set @CHANGED = 1;
end
end
return @CHANGED
end