USP_REVENUEBATCH_ADDAPPLICATIONSOLICITORS
Add solicitors linked to applications to the system from a revenue batch.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@REVENUEID | uniqueidentifier | IN | |
@APPLICATIONSOLICITORS | xml | IN | |
@CHANGEAGENTID | uniqueidentifier | IN | |
@CHANGEDATE | datetime | IN | |
@REVENUESPLITSPONSORSHIPID | xml | IN |
Definition
Copy
CREATE procedure dbo.USP_REVENUEBATCH_ADDAPPLICATIONSOLICITORS
(
@REVENUEID uniqueidentifier,
@APPLICATIONSOLICITORS xml,
@CHANGEAGENTID uniqueidentifier,
@CHANGEDATE datetime,
@REVENUESPLITSPONSORSHIPID xml = null
)
as
set nocount on;
declare @BASECURRENCYID uniqueidentifier;
declare @ORGANIZATIONEXCHANGERATEID uniqueidentifier;
select
@BASECURRENCYID = BASECURRENCYID,
@ORGANIZATIONEXCHANGERATEID = ORGANIZATIONEXCHANGERATEID
from dbo.REVENUE where ID = @REVENUEID;
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;
if @CHANGEDATE is null
set @CHANGEDATE = getdate();
begin try
declare @REVENUESPLITID uniqueidentifier
declare @SOLICITORS xml
declare @SOLICITORSTABLE table
(
APPLICATIONCODE tinyint,
DESIGNATIONID uniqueidentifier,
SOLICITORS xml,
DECLINESGIFTAID bit,
SPONSORSHIPID uniqueidentifier
)
declare @REVENUESPLITSPONSORSHIPTABLE table
(
REVENUESPLITID uniqueidentifier,
SPONSORSHIPID uniqueidentifier
)
insert into @SOLICITORSTABLE(APPLICATIONCODE, DESIGNATIONID, SOLICITORS, DECLINESGIFTAID, SPONSORSHIPID)
select case T.c.value('(ADDITIONALAPPLICATIONTYPECODE)[1]','tinyint') when 0 then 0 when 1 then 4 when 2 then 7 when 3 then 0 end as APPLICATIONCODE,
T.c.value('(ADDITIONALAPPLICATIONDESIGNATIONID)[1]','uniqueidentifier') as DESIGNATIONID,
case when T.c.exist('./SOLICITORS/ITEM') = 1 then T.c.query('(SOLICITORS)[1]') else null end as SOLICITORS,
T.c.value('(ADDITIONALAPPLICATIONDECLINESGIFTAID)[1]','bit') as DECLINESGIFTAID,
T.c.value('(ADDITIONALAPPLICATIONSPONSORSHIPID)[1]','uniqueidentifier') as SPONSORSHIPID
from @APPLICATIONSOLICITORS.nodes('/APPLICATIONSOLICITORS/ITEM') T(c)
insert into @REVENUESPLITSPONSORSHIPTABLE(REVENUESPLITID,SPONSORSHIPID)
select T.c.value('(REVENUESPLITID)[1]','uniqueidentifier') as REVENUESPLITID,
T.c.value('(SPONSORSHIPID)[1]','uniqueidentifier') as SPONSORSHIPID
from @REVENUESPLITSPONSORSHIPID.nodes('REVENUESPLITSPONSORSHIPID/ITEM') T(c)
declare SOLICITORSCURSOR cursor local fast_forward for
select REVENUESPLIT.ID, SOLICITORS
from @SOLICITORSTABLE ST
inner join dbo.REVENUESPLIT on
ST.APPLICATIONCODE = REVENUESPLIT.APPLICATIONCODE and
ST.DESIGNATIONID = REVENUESPLIT.DESIGNATIONID
left join dbo.REVENUESPLITGIFTAID on
REVENUESPLIT.ID = REVENUESPLITGIFTAID.ID and
ST.DECLINESGIFTAID = REVENUESPLITGIFTAID.DECLINESGIFTAID
left join @REVENUESPLITSPONSORSHIPTABLE REVSPONSOR on
REVSPONSOR.REVENUESPLITID = REVENUESPLIT.ID
where REVENUEID = @REVENUEID
--WI 194341 when sponsorship additional donation, limit records to below criteria
and coalesce(ST.SPONSORSHIPID,'00000000-0000-0000-0000-000000000000') = coalesce(REVSPONSOR.SPONSORSHIPID,'00000000-0000-0000-0000-000000000000')
and (REVSPONSOR.REVENUESPLITID is null or REVSPONSOR.REVENUESPLITID = REVENUESPLIT.ID)
open SOLICITORSCURSOR
fetch next from SOLICITORSCURSOR into @REVENUESPLITID, @SOLICITORS
while @@FETCH_STATUS = 0
begin
set @SOLICITORS = dbo.UFN_REVENUESOLICITOR_CONVERTAMOUNTSINXML(@SOLICITORS, @BASECURRENCYID, @ORGANIZATIONEXCHANGERATEID);
exec dbo.USP_REVENUE_GETSOLICITORS_2_ADDFROMXML @REVENUESPLITID, @SOLICITORS, @CHANGEAGENTID, @CHANGEDATE;
fetch next from SOLICITORSCURSOR into @REVENUESPLITID, @SOLICITORS
end
close SOLICITORSCURSOR
deallocate SOLICITORSCURSOR
end try
begin catch
exec dbo.USP_RAISE_ERROR;
return 1;
end catch
return 0;