UFN_ADJUSTMENTHISTORY_STREAMSCHANGED
Determines if streams have changed for an adjustment.
Return
Return Type |
---|
bit |
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ADJUSTMENTHISTORYID | uniqueidentifier | IN | |
@REVENUEID | uniqueidentifier | IN |
Definition
Copy
CREATE function dbo.UFN_ADJUSTMENTHISTORY_STREAMSCHANGED
(
@ADJUSTMENTHISTORYID uniqueidentifier,
@REVENUEID uniqueidentifier
)
returns bit
with execute as caller
as
begin
declare @OLDTABLE table
(
REVENUEID nvarchar(36),
AMOUNT money,
REVENUECATEGORYCODEID nvarchar(36),
APPLICATION nvarchar(36)
);
declare @NEWTABLE table
(
REVENUEID nvarchar(36),
AMOUNT money,
REVENUECATEGORYCODEID nvarchar(36),
APPLICATION nvarchar(36)
);
declare @STREAMSCHANGED bit;
declare @NEWCOUNT int;
declare @OLDCOUNT int;
set @STREAMSCHANGED = 0;
insert into @OLDTABLE
select
REVENUEIDENTIFIER,
AMOUNT,
REVENUECATEGORYCODEIDENTIFIER,
APPLICATION
from dbo.ADJUSTMENTHISTORYREVENUE
where ADJUSTMENTHISTORYID = @ADJUSTMENTHISTORYID;
insert into @NEWTABLE
select
cast(FINANCIALTRANSACTION.ID as nvarchar(36)),
FINANCIALTRANSACTION.BASEAMOUNT,
case when REVENUECATEGORY.GLREVENUECATEGORYMAPPINGID is null then '00000000-0000-0000-0000-000000000000' else cast(REVENUECATEGORY.GLREVENUECATEGORYMAPPINGID as nvarchar(36)) end,
APPLICATION
from dbo.FINANCIALTRANSACTION
inner join dbo.REVENUE_EXT on FINANCIALTRANSACTION.ID = REVENUE_EXT.ID
inner join dbo.FINANCIALTRANSACTIONLINEITEM on FINANCIALTRANSACTION.ID = FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID
inner join dbo.REVENUESPLIT_EXT on FINANCIALTRANSACTIONLINEITEM.ID = REVENUESPLIT_EXT.ID
left join dbo.REVENUECATEGORY on REVENUECATEGORY.ID = FINANCIALTRANSACTIONLINEITEM.ID
where FINANCIALTRANSACTION.ID = @REVENUEID --and TRANSACTIONTYPECODE <> 0;
and FINANCIALTRANSACTION.DELETEDON is null
and FINANCIALTRANSACTIONLINEITEM.DELETEDON is null
and FINANCIALTRANSACTIONLINEITEM.TYPECODE <> 1
select @NEWCOUNT = count(REVENUEID) from @NEWTABLE;
select @OLDCOUNT = count(REVENUEID) from @OLDTABLE;
if @NEWCOUNT <> @OLDCOUNT
set @STREAMSCHANGED = 1;
if @STREAMSCHANGED = 0
begin
select @NEWCOUNT = count([NEW].REVENUEID)
from @NEWTABLE as [NEW]
inner join @OLDTABLE as [OLD]
on [OLD].AMOUNT = [NEW].AMOUNT
and [OLD].REVENUECATEGORYCODEID = [NEW].REVENUECATEGORYCODEID
and ([NEW].REVENUEID = [OLD].REVENUEID or ([NEW].REVENUEID is null and [OLD].REVENUEID is null))
and [NEW].APPLICATION = [OLD].APPLICATION;
if @NEWCOUNT <> @OLDCOUNT
set @STREAMSCHANGED = 1;
end
return @STREAMSCHANGED;
end