USP_REVENUEBATCH_ENHANCEDMATCHINGGIFTSWITHCHILDREN_UPDATEFROMXML
Add enhanced revenue batch matching gifts with splits.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@BATCHREVENUEID | uniqueidentifier | IN | |
@MATCHINGGIFTS | xml | IN | |
@CHANGEAGENTID | uniqueidentifier | IN | |
@CHANGEDATE | datetime | IN |
Definition
Copy
CREATE procedure dbo.USP_REVENUEBATCH_ENHANCEDMATCHINGGIFTSWITHCHILDREN_UPDATEFROMXML
(
@BATCHREVENUEID uniqueidentifier,
@MATCHINGGIFTS xml,
@CHANGEAGENTID uniqueidentifier = null,
@CHANGEDATE datetime = null
)
as
set nocount on;
if @CHANGEAGENTID is null
exec USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output
if @CHANGEDATE is null
set @CHANGEDATE = getdate()
set @MATCHINGGIFTS = (
select
case when ID = '00000000-0000-0000-0000-000000000000' then newid() else coalesce(ID, newid()) end ID,
MATCHINGCONSTITUENTID,
ORGANIZATIONID,
RELATIONSHIPID,
MATCHINGGIFTCONDITIONID,
coalesce(AMOUNT, 0) AMOUNT,
DATE,
COULDNOTDEFAULTMATCHINGGIFT,
SINGLEDESIGNATIONID,
case when SPLITS is null then null else SPLITS.query('(SPLITS/ITEM)') end as SPLITS,
REVENUEMATCHINGGIFTID,
coalesce(TRANSACTIONCURRENCYID, dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY()) TRANSACTIONCURRENCYID,
BASEEXCHANGERATEID,
coalesce(EXCHANGERATE, 0) EXCHANGERATE,
coalesce(APPLYBYPERCENT,0) APPLYBYPERCENT,
OPPORTUNITYID,
coalesce(RESETSOLICITORCREDITS, 0) RESETSOLICITORCREDITS
from
dbo.UFN_REVENUEBATCH_ENHANCEDMATCHINGGIFTSWITHCHILDREN_FROMITEMLISTXML(@MATCHINGGIFTS)
for xml raw('ITEM'),type,elements,root('MATCHINGGIFTS'),binary base64
)
exec dbo.USP_REVENUEBATCH_GETENHANCEDMATCHINGGIFTS_2_UPDATEFROMXML @BATCHREVENUEID, @MATCHINGGIFTS, @CHANGEAGENTID, @CHANGEDATE;
-- Add splits
declare @BATCHREVENUEENHANCEDMATCHINGGIFTID uniqueidentifier, @SINGLEDESIGNATIONID uniqueidentifier, @SPLITS xml, @AMOUNT money;
declare SPLITCURSOR cursor local fast_forward for
select
ID,
AMOUNT,
SINGLEDESIGNATIONID,
SPLITS
--REVENUEMATCHINGGIFTID
from dbo.UFN_REVENUEBATCH_ENHANCEDMATCHINGGIFTSWITHCHILDREN_FROMITEMLISTXML(@MATCHINGGIFTS);
open SPLITCURSOR;
fetch next from SPLITCURSOR into @BATCHREVENUEENHANCEDMATCHINGGIFTID, @AMOUNT, @SINGLEDESIGNATIONID, @SPLITS;
while @@FETCH_STATUS = 0
begin
if @SPLITS is null and @SINGLEDESIGNATIONID is not null
set @SPLITS = (
select
null as ID,
@SINGLEDESIGNATIONID as DESIGNATIONID,
@AMOUNT as AMOUNT,
1 as SEQUENCE
for xml raw('ITEM'),type,elements,root('SPLITS'),binary base64
)
if @SPLITS is not null
exec dbo.USP_REVENUEBATCH_GETENHANCEDMATCHINGGIFTSPLITS_UPDATEFROMXML @BATCHREVENUEENHANCEDMATCHINGGIFTID, @SPLITS, @CHANGEAGENTID, @CHANGEDATE;
else
delete from dbo.BATCHREVENUEENHANCEDMATCHINGGIFTSPLIT where BATCHREVENUEENHANCEDMATCHINGGIFTID = @BATCHREVENUEENHANCEDMATCHINGGIFTID;
fetch next from SPLITCURSOR into @BATCHREVENUEENHANCEDMATCHINGGIFTID, @AMOUNT, @SINGLEDESIGNATIONID, @SPLITS;
end
close SPLITCURSOR;
deallocate SPLITCURSOR;