USP_DATAFORMTEMPLATE_VIEW_CONSTITUENTMGDETAILS
The load procedure used by the view dataform template "Constituent Matching Gift Details View Form"
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | nchar | IN | The input ID parameter used to load the fields defined on the form. |
@DATALOADED | bit | INOUT | Output parameter indicating whether or not data was actually loaded. |
@MATCHESGIFTS | bit | INOUT | Matches gifts |
@CONSTITUENTMATCHEDANNUALTOTAL | money | INOUT | Constituent annual matched total |
@CONSTITUENTMATCHEDTOTAL | money | INOUT | Constituent matched total |
@CONSTITUENTGIFTTOTAL | money | INOUT | Constituent donated total |
@CONSTITUENTGIFTANNUALTOTAL | money | INOUT | Constituent annual donated total |
@ORGANIZATIONHASMATCHEDGIFT | bit | INOUT | Organization has matched gift |
@SPLITS | xml | INOUT | Designations |
@MATCHINGGIFTCONDITION | xml | INOUT | Matching gift condition |
@CURRENTAPPUSERID | uniqueidentifier | IN | Input parameter indicating the ID of the current user. |
Definition
Copy
CREATE procedure dbo.USP_DATAFORMTEMPLATE_VIEW_CONSTITUENTMGDETAILS
(
@ID nchar(72),
@DATALOADED bit = 0 output,
@MATCHESGIFTS bit = null output,
@CONSTITUENTMATCHEDANNUALTOTAL money = null output,
@CONSTITUENTMATCHEDTOTAL money = null output,
@CONSTITUENTGIFTTOTAL money = null output,
@CONSTITUENTGIFTANNUALTOTAL money = null output,
@ORGANIZATIONHASMATCHEDGIFT bit = null output,
@SPLITS xml = null output,
@MATCHINGGIFTCONDITION xml = null output,
@CURRENTAPPUSERID uniqueidentifier = null
) as
set nocount on;
set @DATALOADED = 0;
declare @MATCHINGORGANIZATIONID uniqueidentifier;
declare @MATCHEDREVENUEID uniqueidentifier;
declare @CONSTITUENTID uniqueidentifier;
declare @MGCOUNT int;
declare @DATE datetime;
begin try
set @MATCHINGORGANIZATIONID = convert(uniqueidentifier,substring(@ID,0,37));
set @MATCHEDREVENUEID = convert(uniqueidentifier,substring(@ID,37,37));
set @DATALOADED = 1;
end try
begin catch
set @DATALOADED = 0;
end catch
if @DATALOADED = 1 begin
set @DATALOADED = 0;
if exists (select 1 from dbo.CONSTITUENT where ID = @MATCHINGORGANIZATIONID)
begin
-- Check security for this constituent. Using UFN_SECURITY_APPUSER_GRANTED_CONSTITID_FORREPORT
-- since this form's security is implied through other forms.
declare @ISADMIN bit;
declare @APPUSER_IN_NONRACROLE bit;
declare @APPUSER_IN_NOSECGROUPROLE bit;
set @ISADMIN = dbo.UFN_APPUSER_ISSYSADMIN(@CURRENTAPPUSERID);
if @ISADMIN = 0
set @APPUSER_IN_NONRACROLE = dbo.UFN_SECURITY_APPUSER_IN_NONRACROLE(@CURRENTAPPUSERID);
if @ISADMIN = 0 and @APPUSER_IN_NONRACROLE = 0
set @APPUSER_IN_NOSECGROUPROLE = dbo.UFN_SECURITY_APPUSER_IN_NO_SECURITY_GROUP_ROLE(@CURRENTAPPUSERID);
if
(
@ISADMIN = 0
and @APPUSER_IN_NONRACROLE = 0
and (dbo.UFN_SECURITY_APPUSER_GRANTED_CONSTITID_FORREPORT(@CURRENTAPPUSERID, @MATCHINGORGANIZATIONID, @APPUSER_IN_NOSECGROUPROLE) = 0)
)
raiserror('BBERR_DB_RECORDSECURITY_PERMISSION_DENIED', 13, 1);
end
select
@CONSTITUENTID = REVENUE.CONSTITUENTID,
@DATE = DATE
from
dbo.REVENUE
where
REVENUE.ID = @MATCHEDREVENUEID;
declare @FISCALYEARSTARTDATE datetime;
set @FISCALYEARSTARTDATE = dbo.UFN_DATE_THISFISCALYEAR_FIRSTDAY(@DATE, 0);
select
@MATCHESGIFTS = 1
from
dbo.RELATIONSHIP R
where
R.RELATIONSHIPCONSTITUENTID = @MATCHINGORGANIZATIONID and
R.RECIPROCALCONSTITUENTID = @CONSTITUENTID and
R.ISMATCHINGGIFTRELATIONSHIP = 1;
if @@ROWCOUNT = 0 begin
set @MATCHESGIFTS = 0;
end
if @CONSTITUENTID is not null
select
@CONSTITUENTMATCHEDANNUALTOTAL = dbo.UFN_CONSTITUENT_GETMATCHEDTOTALFORYEAR(ID, @MATCHINGORGANIZATIONID, @FISCALYEARSTARTDATE),
@CONSTITUENTMATCHEDTOTAL = dbo.UFN_CONSTITUENT_GETMATCHEDTOTAL(ID, @MATCHINGORGANIZATIONID),
@CONSTITUENTGIFTANNUALTOTAL = dbo.UFN_CONSTITUENT_GETGIFTTOTALFORYEAR(ID, @FISCALYEARSTARTDATE),
@CONSTITUENTGIFTTOTAL = dbo.UFN_CONSTITUENT_GETGIFTTOTAL(ID)
from
dbo.CONSTITUENT
where
ID = @CONSTITUENTID;
else
begin
set @CONSTITUENTMATCHEDANNUALTOTAL = 0;
set @CONSTITUENTMATCHEDTOTAL = 0;
set @CONSTITUENTGIFTANNUALTOTAL = 0;
set @CONSTITUENTGIFTTOTAL = 0;
end
select
@MGCOUNT = count(REVENUE.ID)
from
dbo.REVENUE
inner join dbo.REVENUEMATCHINGGIFT RMG on REVENUE.ID = RMG.ID
where
RMG.MGSOURCEREVENUEID = @MATCHEDREVENUEID and
REVENUE.CONSTITUENTID = @MATCHINGORGANIZATIONID;
if @MGCOUNT > 0
set @ORGANIZATIONHASMATCHEDGIFT = 1;
else
set @ORGANIZATIONHASMATCHEDGIFT = 0;
--Update the IDs in the SPLITS since they are currently a copy of the IDs on the original gift
declare @SPLITSTABLE table
(
AMOUNT money,
DESIGNATIONID uniqueidentifier
);
insert into @SPLITSTABLE(AMOUNT, DESIGNATIONID)
select sum(AMOUNT), DESIGNATIONID
from dbo.UFN_REVENUE_GETSPLITS(@MATCHEDREVENUEID)
where TYPECODE = 0
group by DESIGNATIONID
select @SPLITS = (select newid(), AMOUNT, DESIGNATIONID, 0 as APPLICATIONCODE, 0 as TYPECODE from @SPLITSTABLE for xml raw('ITEM'), type, elements, root('SPLITS'), binary base64)
set @MATCHINGGIFTCONDITION = dbo.UFN_MATCHINGGIFTPLEDGE_GETCONDITION_2_TOITEMLISTXML(@MATCHINGORGANIZATIONID, @CONSTITUENTID);
if @@ROWCOUNT > 0
set @DATALOADED = 1;
end
return 0;