USP_REVENUE_DISQUALIFIED_GIFT_AID_ATTRIBUTE_2
Sets the revenue ID to not qualified for Gift Aid if due to an attribute.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@REVENUEID | uniqueidentifier | IN |
Definition
Copy
CREATE procedure USP_REVENUE_DISQUALIFIED_GIFT_AID_ATTRIBUTE_2
(
@REVENUEID as uniqueidentifier
)
as
begin
if exists (select id from GIFTAIDDISQUALIFIEDBYATTRIBUTE)
begin
declare @revenueIDs xml;
declare @sql nvarchar(max);
declare @parameters nvarchar(500);
declare @tempTable table([ID] uniqueidentifier);
declare @valueColumnName nvarchar(128);
declare @attributeCategoryID uniqueidentifier;
declare @dataType smallint;
declare @giftAidValue nvarchar(max);
declare @attributeCategoryIDString nvarchar(36);
declare @onlyallowoneperrecord bit;
declare cur_GiftAidAttributes cursor local fast_forward for
select ATTRIBUTECATEGORYID,
case when GIFTAIDDISQUALIFIEDBYATTRIBUTE.DATATYPE = 0
then TEXTVALUE
when GIFTAIDDISQUALIFIEDBYATTRIBUTE.DATATYPE = 1
then convert(nvarchar(100),NUMBERVALUE)
when GIFTAIDDISQUALIFIEDBYATTRIBUTE.DATATYPE = 2
then convert(nvarchar(100),DATEVALUE, 121)
when GIFTAIDDISQUALIFIEDBYATTRIBUTE.DATATYPE = 3
then Convert(nvarchar(100),CURRENCYVALUE)
when GIFTAIDDISQUALIFIEDBYATTRIBUTE.DATATYPE = 4
then convert(nvarchar(100),BOOLEANVALUE)
when GIFTAIDDISQUALIFIEDBYATTRIBUTE.DATATYPE = 5
then convert(nvarchar(100),CODETABLEVALUE)
when GIFTAIDDISQUALIFIEDBYATTRIBUTE.DATATYPE = 6
then Convert(nvarchar(max),CONSTITUENTID)
when GIFTAIDDISQUALIFIEDBYATTRIBUTE.DATATYPE = 7
then FUZZYDATEVALUE
when GIFTAIDDISQUALIFIEDBYATTRIBUTE.DATATYPE = 8
then HOURMINUTEVALUE
when GIFTAIDDISQUALIFIEDBYATTRIBUTE.DATATYPE = 9
then MEMOVALUE
end as GIFTAIDVALUE,
GIFTAIDDISQUALIFIEDBYATTRIBUTE.DATATYPE,
VALUECOLUMNNAME,
ONLYALLOWONEPERRECORD
from GIFTAIDDISQUALIFIEDBYATTRIBUTE
inner join ATTRIBUTECATEGORY
on ATTRIBUTECATEGORY.ID = GIFTAIDDISQUALIFIEDBYATTRIBUTE.ATTRIBUTECATEGORYID
inner join ATTRIBUTERECORDTYPE
on ATTRIBUTERECORDTYPE.ID = ATTRIBUTECATEGORY.ATTRIBUTERECORDTYPEID
inner join RECORDTYPE on RECORDTYPE.ID = ATTRIBUTERECORDTYPE.RECORDTYPEID
where RECORDTYPE.NAME = 'REVENUE'
order by ATTRIBUTECATEGORY.ID;
open cur_GiftAidAttributes;
fetch next from cur_GiftAidAttributes into @attributeCategoryID,@giftAidValue,@dataType,@valueColumnName,@onlyallowoneperrecord;
while @@FETCH_STATUS = 0
begin
if @dataType > -1
begin
set @attributeCategoryIDString = REPLACE(convert(nvarchar(36),@attributeCategoryID),'-','')
if @onlyallowoneperrecord = 1
begin
set @sql = 'select id as revenueid from attribute' + @attributeCategoryIDString + ' where ID = @REVENUEID '
end
else
begin
set @sql = 'select revenueid from attribute' + @attributeCategoryIDString + ' where REVENUEID = @REVENUEID '
end
set @sql = @sql + ' and attribute' + @attributeCategoryIDString + '.' + @valueColumnName + ' = ' + ''''+ @giftAidValue + ''''
end
set @parameters = N'@REVENUEID uniqueidentifier, @revenueIDs_out xml OUTPUT';
set @sql = 'set @revenueIDs_out = (select revenueid as ID from (' + @sql + ') as temptable for XML raw ('
+ '''' + 'ITEM' + '''' + '), type, elements, root(' + '''' + 'REVENUEID' + ''''
+ '), binary base64);'
exec sp_executesql @sql, @parameters, @REVENUEID, @revenueIDs_out = @revenueIDs output;
insert into @tempTable select T.c.value('(ID)[1]', 'uniqueidentifier') as [ID] from @revenueIDs.nodes('/REVENUEID/ITEM') T(c);
fetch next from cur_GiftAidAttributes into @attributeCategoryID,@giftAidValue,@dataType,@valueColumnName,@onlyallowoneperrecord;
end
close cur_GiftAidAttributes;
deallocate cur_GiftAidAttributes;
if exists (select ID from @tempTable where ID = @REVENUEID)
begin
update REVENUESPLITGIFTAID set ATTRIBUTES_STATUS = 0 --disqualified
where ID in
(select FINANCIALTRANSACTIONLINEITEM.ID from dbo.FINANCIALTRANSACTIONLINEITEM
inner join dbo.REVENUESPLIT_EXT on FINANCIALTRANSACTIONLINEITEM.ID = REVENUESPLIT_EXT.ID
where FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID = @REVENUEID
and FINANCIALTRANSACTIONLINEITEM.DELETEDON is null
and FINANCIALTRANSACTIONLINEITEM.TYPECODE <> 1)
end
else
begin
update REVENUESPLITGIFTAID set ATTRIBUTES_STATUS = 1 --qualified
where ID in
(select FINANCIALTRANSACTIONLINEITEM.ID from dbo.FINANCIALTRANSACTIONLINEITEM
inner join dbo.REVENUESPLIT_EXT on FINANCIALTRANSACTIONLINEITEM.ID = REVENUESPLIT_EXT.ID
where FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID = @REVENUEID
and FINANCIALTRANSACTIONLINEITEM.DELETEDON is null
and FINANCIALTRANSACTIONLINEITEM.TYPECODE <> 1)
end
end
else
begin
update REVENUESPLITGIFTAID set ATTRIBUTES_STATUS = 1 --qualified
where ID in
(select id from REVENUESPLIT where REVENUEID = @REVENUEID)
end
end