UFN_CHECKDETAIL_BENEFITSCHANGEDFORGL
Determines if the benefits for a revenue detail record have changed so that the gl distributions should be regenerated.
Return
Return Type |
---|
bit |
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@REVENUEID | uniqueidentifier | IN | |
@BENEFITS | xml | IN |
Definition
Copy
CREATE function dbo.UFN_CHECKDETAIL_BENEFITSCHANGEDFORGL
(
@REVENUEID uniqueidentifier,
@BENEFITS xml
)
returns bit
with execute as caller
as
begin
declare @BENEFITSTABLE table
(
ID uniqueidentifier,
BENEFITID uniqueidentifier,
TOTALVALUE money,
QUANTITY int,
ITEMVALUE money,
APPLICABLEAMOUNT money,
VALUEPERCENT decimal
);
declare @NEWBENEFITSTABLE table
(
ID uniqueidentifier,
BENEFITID uniqueidentifier,
TOTALVALUE money,
QUANTITY int,
ITEMVALUE money,
APPLICABLEAMOUNT money,
VALUEPERCENT decimal
);
declare @BENEFITSCOUNT int;
declare @CHANGED bit = 0;
insert into @NEWBENEFITSTABLE(ID, BENEFITID, TOTALVALUE, QUANTITY, ITEMVALUE, APPLICABLEAMOUNT, VALUEPERCENT)
select ID, BENEFITID, TOTALVALUE, QUANTITY, UNITVALUE, PERCENTAPPLICABLEAMOUNT, VALUEPERCENT from dbo.UFN_REVENUE_GETBENEFITS2_FROMITEMLISTXML(@BENEFITS);
set @BENEFITSCOUNT = @@ROWCOUNT;
insert into @BENEFITSTABLE(ID, BENEFITID, TOTALVALUE, QUANTITY, ITEMVALUE, APPLICABLEAMOUNT, VALUEPERCENT)
select ID, BENEFITID, TOTALVALUE, QUANTITY, UNITVALUE, PERCENTAPPLICABLEAMOUNT, VALUEPERCENT from dbo.UFN_REVENUE_GETBENEFITS2(@REVENUEID);
if @@ROWCOUNT <> @BENEFITSCOUNT
set @CHANGED = 1;
if @CHANGED = 0
begin
select
@CHANGED = 1
from
(
select
count(1) BENEFITCOUNT,
BENEFITID,
TOTALVALUE,
QUANTITY,
ITEMVALUE,
APPLICABLEAMOUNT,
VALUEPERCENT
from
@NEWBENEFITSTABLE
group by
BENEFITID, TOTALVALUE, QUANTITY, ITEMVALUE, APPLICABLEAMOUNT, VALUEPERCENT
) NEWBENEFITS
full outer join
(
select
count(1) BENEFITCOUNT,
BENEFITID,
TOTALVALUE,
QUANTITY,
ITEMVALUE,
APPLICABLEAMOUNT,
VALUEPERCENT
from
@BENEFITSTABLE
group by
BENEFITID, TOTALVALUE, QUANTITY, ITEMVALUE, APPLICABLEAMOUNT, VALUEPERCENT
) OLDBENEFITS
on NEWBENEFITS.BENEFITID = OLDBENEFITS.BENEFITID
and NEWBENEFITS.TOTALVALUE = OLDBENEFITS.TOTALVALUE
and NEWBENEFITS.BENEFITCOUNT = OLDBENEFITS.BENEFITCOUNT
and NEWBENEFITS.QUANTITY = OLDBENEFITS.QUANTITY
and NEWBENEFITS.ITEMVALUE = OLDBENEFITS.ITEMVALUE
and NEWBENEFITS.APPLICABLEAMOUNT = OLDBENEFITS.APPLICABLEAMOUNT
and NEWBENEFITS.VALUEPERCENT = OLDBENEFITS.VALUEPERCENT
where
NEWBENEFITS.BENEFITID is null or
OLDBENEFITS.BENEFITID is null
end
return @CHANGED;
end