UFN_ADJUSTMENTHISTORY_SPLITSCHANGED
Determines if splits have changed for an adjustment.
Return
Return Type |
---|
bit |
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@REVENUEID | uniqueidentifier | IN | |
@ADJUSTMENTHISTORYID | uniqueidentifier | IN |
Definition
Copy
CREATE function dbo.UFN_ADJUSTMENTHISTORY_SPLITSCHANGED
(
@REVENUEID uniqueidentifier,
@ADJUSTMENTHISTORYID uniqueidentifier = null
)
returns bit
with execute as caller
as
begin
declare @SPLITSCHANGED bit;
set @SPLITSCHANGED = 0;
declare @SPLITSCOUNT int;
declare @SPLITSTABLE table
(
ID uniqueidentifier,
AMOUNT money,
DESIGNATIONID nvarchar(36)
);
declare @NEWSPLITSTABLE table
(
ID uniqueidentifier,
AMOUNT money,
DESIGNATIONID nvarchar(36)
);
insert into @SPLITSTABLE(ID, AMOUNT, DESIGNATIONID)
select
ID,
AMOUNT,
DESIGNATIONIDENTIFIER
from dbo.ADJUSTMENTHISTORYSPLIT
where REVENUEIDENTIFIER = cast(@REVENUEID as nvarchar(36))
and (@ADJUSTMENTHISTORYID is null or ADJUSTMENTHISTORYSPLIT.ADJUSTMENTHISTORYID = @ADJUSTMENTHISTORYID);
insert into @NEWSPLITSTABLE(ID, AMOUNT, DESIGNATIONID)
select
[SPLITS].ID,
[SPLITS].AMOUNT,
cast([SPLITS].DESIGNATIONID as nvarchar(36))
from dbo.REVENUESPLIT as [SPLITS]
where [SPLITS].REVENUEID = @REVENUEID
select @SPLITSCOUNT = count(ID) from @SPLITSTABLE;
if @SPLITSCOUNT <> (select count(ID) from @NEWSPLITSTABLE)
set @SPLITSCHANGED = 1;
if @SPLITSCHANGED = 0
begin
select @SPLITSCOUNT = count([NEW].ID)
from @NEWSPLITSTABLE as [NEW]
inner join @SPLITSTABLE as [OLD]
on [NEW].AMOUNT = [OLD].AMOUNT
and [NEW].DESIGNATIONID = [OLD].DESIGNATIONID or ([NEW].DESIGNATIONID = null and [OLD].DESIGNATIONID = null);
if @SPLITSCOUNT <> (select count(ID) from @NEWSPLITSTABLE)
set @SPLITSCHANGED = 1;
end
return @SPLITSCHANGED;
end