USP_DATAFORMTEMPLATE_PRELOAD_OPPORTUNITYREVENUE
The load procedure used by the edit dataform template "Opportunity Associate Revenue Add Form"
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@OPPORTUNITYID | uniqueidentifier | IN | Input parameter indicating the context ID for the record being added. |
@REVENUE | xml | INOUT |
Definition
Copy
CREATE procedure dbo.USP_DATAFORMTEMPLATE_PRELOAD_OPPORTUNITYREVENUE
(
@OPPORTUNITYID uniqueidentifier,
@REVENUE xml = null output
)
as
begin
declare @CONSTITUENTID uniqueidentifier;
select
@CONSTITUENTID = PROSPECTPLAN.PROSPECTID
from
dbo.OPPORTUNITY
inner join
dbo.PROSPECTPLAN on PROSPECTPLAN.ID = OPPORTUNITY.PROSPECTPLANID
where
OPPORTUNITY.ID = @OPPORTUNITYID;
-- In order to use aggregators, unions, and [for xml] at the same time, the select list feeding the for must be wrapped in a CTE or sub-select.
-- Sorry for the ugliness.
with REVENUE_CTE as
(
select
REVENUE.ID [RECORDID],
REVENUE.DATE [DATE],
REVENUE.TRANSACTIONTYPE [APPLICATION],
sum(REVENUESPLIT.AMOUNT) [AMOUNT],
dbo.UDA_BUILDLIST(dbo.UFN_DESIGNATION_BUILDNAME(REVENUESPLIT.DESIGNATIONID)) [DESIGNATIONS]
from
dbo.REVENUE
inner join
dbo.REVENUESPLIT on REVENUESPLIT.REVENUEID = REVENUE.ID
where
REVENUE.CONSTITUENTID = @CONSTITUENTID
and
REVENUE.TRANSACTIONTYPECODE = 1
and
not exists(select top(1) 1 from dbo.REVENUEOPPORTUNITY where REVENUEOPPORTUNITY.ID = REVENUESPLIT.ID)
group by
REVENUE.ID, REVENUE.DATE, REVENUE.TRANSACTIONTYPE
union all
select
REVENUESPLIT.ID,
REVENUE.DATE,
REVENUESPLIT.TYPE,
REVENUESPLIT.AMOUNT,
dbo.UFN_DESIGNATION_BUILDNAME(REVENUESPLIT.DESIGNATIONID)
from
dbo.REVENUE
inner join
dbo.REVENUESPLIT on REVENUESPLIT.REVENUEID = REVENUE.ID
where
REVENUE.CONSTITUENTID = @CONSTITUENTID
and
(REVENUE.TRANSACTIONTYPECODE = 0 and REVENUESPLIT.APPLICATIONCODE = 0)
and
not exists(select top(1) 1 from dbo.REVENUEOPPORTUNITY where REVENUEOPPORTUNITY.ID = REVENUESPLIT.ID)
)
select
@REVENUE = (
select
RECORDID,
DATE,
APPLICATION,
AMOUNT,
DESIGNATIONS
from
REVENUE_CTE
order by
DATE desc
for xml raw('ITEM'), type, elements, root('REVENUE'), binary base64
);
return 0;
end