USP_DATAFORMTEMPLATE_VIEW_SOLICITORSBYPAYMENTREVENUESPLITID
The load procedure used by the view dataform template "Revenue Solicitors By Payment Revenue Split ID View Form"
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | 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. |
@TYPE | nvarchar(20) | INOUT | TYPE |
@AMOUNT | money | INOUT | AMOUNT |
@SOLICITORS | xml | INOUT | SOLICITORS |
@BASECURRENCYID | uniqueidentifier | INOUT | BASECURRENCYID |
Definition
Copy
CREATE procedure dbo.USP_DATAFORMTEMPLATE_VIEW_SOLICITORSBYPAYMENTREVENUESPLITID
(
@ID uniqueidentifier,
@DATALOADED bit = 0 output,
@TYPE nvarchar(20) = null output,
@AMOUNT money = null output,
@SOLICITORS XML= null output,
@BASECURRENCYID uniqueidentifier = null output
)
as
set nocount on;
declare @SOURCEREVENUEID uniqueidentifier;
select @SOURCEREVENUEID = PLEDGEID from dbo.INSTALLMENTSPLITPAYMENT where PAYMENTID = @ID;
if @SOURCEREVENUEID is null
select @SOURCEREVENUEID = SOURCEREVENUEID from dbo.RECURRINGGIFTACTIVITY where PAYMENTREVENUEID = @ID;
-- revenue split temp table
declare @REVENUESPLITTABLE table
(
REVENUESPLITID uniqueidentifier
)
declare @REVENUESOLICITORSTABLE table
(
[ID] uniqueidentifier,
[CONSTITUENTID] uniqueidentifier,
[AMOUNT] money,
[SEQUENCE] int,
[BASECURRENCYID] uniqueidentifier,
[ORGANIZATIONAMOUNT] money,
[ORGANIZATIONEXCHANGERATEID] uniqueidentifier
)
--If @SOURCEREVENUEID is null, means this SP is called for the new commitment payment and @ID is commitment's APPLICATIONID.
--So Pull Solicitors from commitments
if @SOURCEREVENUEID is null
begin
insert into @REVENUESPLITTABLE(REVENUESPLITID)
select ID
from dbo.REVENUESPLIT
where REVENUEID = @ID
end
else
begin
insert into @REVENUESPLITTABLE(REVENUESPLITID)
select ID
from dbo.REVENUESPLIT
where REVENUEID = @SOURCEREVENUEID
and DESIGNATIONID = (select DESIGNATIONID from dbo.REVENUESPLIT where ID = @ID)
end
;with REVENUESOLICITOR_CTE As
(
select
REVENUESOLICITOR.ID,
REVENUESOLICITOR.CONSTITUENTID,
SUM(REVENUESOLICITOR.AMOUNT) OVER (PARTITION BY REVENUESOLICITOR.CONSTITUENTID ) As AMOUNT,
REVENUESOLICITOR.SEQUENCE,
REVENUESOLICITOR.BASECURRENCYID,
SUM(REVENUESOLICITOR.ORGANIZATIONAMOUNT) OVER (PARTITION BY REVENUESOLICITOR.CONSTITUENTID ) As ORGANIZATIONAMOUNT,
REVENUESOLICITOR.ORGANIZATIONEXCHANGERATEID,
ROW_NUMBER() OVER (PARTITION BY REVENUESOLICITOR.CONSTITUENTID ORDER BY REVENUESOLICITOR.ID) As RS_ROWNUMBER
from @REVENUESPLITTABLE RS
inner join REVENUESOLICITOR on REVENUESOLICITOR.REVENUESPLITID = RS.REVENUESPLITID
)
insert into @REVENUESOLICITORSTABLE
(
[ID],
[CONSTITUENTID],
[AMOUNT],
[SEQUENCE],
[BASECURRENCYID],
[ORGANIZATIONAMOUNT],
[ORGANIZATIONEXCHANGERATEID]
)
select
REVENUESOLICITOR_CTE.ID,
REVENUESOLICITOR_CTE.CONSTITUENTID,
REVENUESOLICITOR_CTE.AMOUNT,
REVENUESOLICITOR_CTE.SEQUENCE,
REVENUESOLICITOR_CTE.BASECURRENCYID,
REVENUESOLICITOR_CTE.ORGANIZATIONAMOUNT,
REVENUESOLICITOR_CTE.ORGANIZATIONEXCHANGERATEID
from REVENUESOLICITOR_CTE
where RS_ROWNUMBER = 1;
select @DATALOADED = 1,
@TYPE = REVENUE.TRANSACTIONTYPE,
@AMOUNT = sum(REVENUESPLIT.AMOUNT),
@SOLICITORS = (
select ID,
CONSTITUENTID,
AMOUNT,
SEQUENCE,
BASECURRENCYID,
ORGANIZATIONAMOUNT,
ORGANIZATIONEXCHANGERATEID
from @REVENUESOLICITORSTABLE for xml raw('ITEM'),type,elements,root('SOLICITORS'),BINARY BASE64),
@BASECURRENCYID = REVENUESPLIT.BASECURRENCYID
from dbo.REVENUESPLIT
inner join dbo.REVENUE on REVENUESPLIT.REVENUEID = REVENUE.ID
inner join @REVENUESPLITTABLE REVENUESPLITTABLE on REVENUESPLITTABLE.REVENUESPLITID = REVENUESPLIT.ID
group by REVENUE.TRANSACTIONTYPE, REVENUESPLIT.BASECURRENCYID
return 0;