UFN_PLANNEDGIFTADDITION_DESIGNATIONSCHANGED
Checks if a planned gift additions's designations changed.
Return
Return Type |
---|
bit |
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@PLANNEDGIFTADDITIONID | uniqueidentifier | IN | |
@DESIGNATIONS | xml | IN |
Definition
Copy
CREATE function dbo.UFN_PLANNEDGIFTADDITION_DESIGNATIONSCHANGED
(
@PLANNEDGIFTADDITIONID as uniqueidentifier,
@DESIGNATIONS as xml
)
returns bit
with execute as caller
as
begin
declare @DESIGNATIONSTABLE table
(
ID uniqueidentifier,
AMOUNT money,
DESIGNATIONID uniqueidentifier,
PLANNEDGIFTDESCATEGORYCODEID uniqueidentifier,
OPPORTUNITYDESIGNATIONTYPECODEID uniqueidentifier,
DESIGNATIONUSECODEID uniqueidentifier,
DATE datetime,
BASECURRENCYID uniqueidentifier,
ORGANIZATIONAMOUNT money,
ORGANIZATIONEXCHANGERATEID uniqueidentifier,
TRANSACTIONAMOUNT money,
TRANSACTIONCURRENCYID uniqueidentifier,
BASEEXCHANGERATEID uniqueidentifier
);
declare @NEWDESIGNATIONSTABLE table
(
ID uniqueidentifier,
AMOUNT money,
DESIGNATIONID uniqueidentifier,
PLANNEDGIFTDESCATEGORYCODEID uniqueidentifier,
OPPORTUNITYDESIGNATIONTYPECODEID uniqueidentifier,
DESIGNATIONUSECODEID uniqueidentifier,
DATE datetime,
BASECURRENCYID uniqueidentifier,
ORGANIZATIONAMOUNT money,
ORGANIZATIONEXCHANGERATEID uniqueidentifier,
TRANSACTIONAMOUNT money,
TRANSACTIONCURRENCYID uniqueidentifier,
BASEEXCHANGERATEID uniqueidentifier
);
declare @DESIGNATIONSCOUNT int
declare @CHANGED as bit
set @CHANGED = 0;
if @CHANGED = 0
begin
insert into @NEWDESIGNATIONSTABLE(
ID,
AMOUNT,
DESIGNATIONID,
PLANNEDGIFTDESCATEGORYCODEID,
OPPORTUNITYDESIGNATIONTYPECODEID,
DESIGNATIONUSECODEID,
DATE,
BASECURRENCYID,
ORGANIZATIONAMOUNT,
ORGANIZATIONEXCHANGERATEID,
TRANSACTIONAMOUNT,
TRANSACTIONCURRENCYID,
BASEEXCHANGERATEID
)
select
ID,
AMOUNT,
DESIGNATIONID,
CATEGORYCODEID,
TYPECODEID,
USECODEID,
DATE,
BASECURRENCYID,
ORGANIZATIONAMOUNT,
ORGANIZATIONEXCHANGERATEID,
TRANSACTIONAMOUNT,
TRANSACTIONCURRENCYID,
BASEEXCHANGERATEID
from dbo.UFN_PLANNEDGIFTADDITION_GETDESIGNATIONS_FROMITEMLISTXML(@DESIGNATIONS);
insert into @DESIGNATIONSTABLE(
ID,
AMOUNT,
DESIGNATIONID,
PLANNEDGIFTDESCATEGORYCODEID,
OPPORTUNITYDESIGNATIONTYPECODEID,
DESIGNATIONUSECODEID,
DATE,
BASECURRENCYID,
ORGANIZATIONAMOUNT,
ORGANIZATIONEXCHANGERATEID,
TRANSACTIONAMOUNT,
TRANSACTIONCURRENCYID,
BASEEXCHANGERATEID
)
select
ID,
AMOUNT,
DESIGNATIONID,
CATEGORYCODEID,
TYPECODEID,
USECODEID,
DATE,
BASECURRENCYID,
ORGANIZATIONAMOUNT,
ORGANIZATIONEXCHANGERATEID,
TRANSACTIONAMOUNT,
TRANSACTIONCURRENCYID,
BASEEXCHANGERATEID
from dbo.UFN_PLANNEDGIFTADDITION_GETDESIGNATIONS(@PLANNEDGIFTADDITIONID);
select @DESIGNATIONSCOUNT = count(ID) from @DESIGNATIONSTABLE;
if @DESIGNATIONSCOUNT <> (select count(*) from @NEWDESIGNATIONSTABLE)
set @CHANGED = 1;
if @CHANGED = 0
begin
select @DESIGNATIONSCOUNT = count([NEW].ID)
from @NEWDESIGNATIONSTABLE as [NEW]
inner join @DESIGNATIONSTABLE as [OLD]
on [NEW].AMOUNT = [OLD].AMOUNT
and ([NEW].PLANNEDGIFTDESCATEGORYCODEID = [OLD].PLANNEDGIFTDESCATEGORYCODEID or ([NEW].PLANNEDGIFTDESCATEGORYCODEID is null and [OLD].PLANNEDGIFTDESCATEGORYCODEID is null))
and ([NEW].OPPORTUNITYDESIGNATIONTYPECODEID = [OLD].OPPORTUNITYDESIGNATIONTYPECODEID or ([NEW].OPPORTUNITYDESIGNATIONTYPECODEID is null and [OLD].OPPORTUNITYDESIGNATIONTYPECODEID is null))
and ([NEW].DESIGNATIONUSECODEID = [OLD].DESIGNATIONUSECODEID or ([NEW].DESIGNATIONUSECODEID is null and [OLD].DESIGNATIONUSECODEID is null))
and ([NEW].DATE = [OLD].DATE or ([NEW].DATE is null and [OLD].DATE is null))
and ([NEW].DESIGNATIONID = [OLD].DESIGNATIONID or ([NEW].DESIGNATIONID is null and [OLD].DESIGNATIONID is null))
and ([NEW].BASECURRENCYID = [OLD].BASECURRENCYID or ([NEW].BASECURRENCYID is null and [OLD].BASECURRENCYID is null))
and ([NEW].ORGANIZATIONAMOUNT = [OLD].ORGANIZATIONAMOUNT or ([NEW].ORGANIZATIONAMOUNT is null and [OLD].ORGANIZATIONAMOUNT is null))
and ([NEW].ORGANIZATIONEXCHANGERATEID = [OLD].ORGANIZATIONEXCHANGERATEID or ([NEW].ORGANIZATIONEXCHANGERATEID is null and [OLD].ORGANIZATIONEXCHANGERATEID is null))
and ([NEW].TRANSACTIONAMOUNT = [OLD].TRANSACTIONAMOUNT or ([NEW].TRANSACTIONAMOUNT is null and [OLD].TRANSACTIONAMOUNT is null))
and ([NEW].TRANSACTIONCURRENCYID = [OLD].TRANSACTIONCURRENCYID or ([NEW].TRANSACTIONCURRENCYID is null and [OLD].TRANSACTIONCURRENCYID is null))
and ([NEW].BASEEXCHANGERATEID = [OLD].BASEEXCHANGERATEID or ([NEW].BASEEXCHANGERATEID is null and [OLD].BASEEXCHANGERATEID is null));
if @DESIGNATIONSCOUNT <> (select count(*) from @NEWDESIGNATIONSTABLE)
set @CHANGED = 1;
end
end
return @CHANGED
end