UFN_CHECKDETAIL_DESIGNATIONSCHANGED
Determines if the designations in splits have changed.
Return
Return Type |
---|
bit |
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@REVENUEID | uniqueidentifier | IN | |
@SPLITS | xml | IN |
Definition
Copy
create function dbo.UFN_CHECKDETAIL_DESIGNATIONSCHANGED(@REVENUEID as uniqueidentifier, @SPLITS as xml)
returns bit
with execute as caller
as begin
declare @SPLITSTABLE table
(
ID uniqueidentifier,
DESIGNATIONID uniqueidentifier
);
declare @NEWSPLITSTABLE table
(
ID uniqueidentifier,
DESIGNATIONID uniqueidentifier
);
declare @SPLITSCOUNT int
declare @CHANGED as bit
set @CHANGED = 0;
insert into @NEWSPLITSTABLE(ID, DESIGNATIONID)
select ID, DESIGNATIONID from dbo.UFN_REVENUE_GETSPLITS_2_FROMITEMLISTXML(@SPLITS);
insert into @SPLITSTABLE(ID, DESIGNATIONID)
select ID, DESIGNATIONID from dbo.UFN_REVENUE_GETSPLITS_2(@REVENUEID);
select @SPLITSCOUNT = count(ID) from @SPLITSTABLE;
if @SPLITSCOUNT <> (select count(*) from @NEWSPLITSTABLE)
set @CHANGED = 1;
if @CHANGED = 0
begin
select @SPLITSCOUNT = count([NEW].ID)
from @NEWSPLITSTABLE as [NEW]
inner join @SPLITSTABLE as [OLD] on ([NEW].DESIGNATIONID = [OLD].DESIGNATIONID or ([NEW].DESIGNATIONID is null and [OLD].DESIGNATIONID is null));
if @SPLITSCOUNT <> (select count(*) from @NEWSPLITSTABLE)
set @CHANGED = 1;
end
return @CHANGED
end