USP_REVENUE_COPYSPLITS
Copies prorated REVENUESPLIT records from a source REVENUE record to a destination REVENUERECORD.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@SOURCEID | uniqueidentifier | IN | |
@DESTINATIONID | uniqueidentifier | IN | |
@CHANGEAGENTID | uniqueidentifier | IN | |
@DATEADDED | datetime | IN | |
@DESTINATIONAMOUNT | money | IN | |
@APPLICATIONCODE | tinyint | IN |
Definition
Copy
CREATE procedure dbo.USP_REVENUE_COPYSPLITS
(
@SOURCEID uniqueidentifier,
@DESTINATIONID uniqueidentifier,
@CHANGEAGENTID uniqueidentifier,
@DATEADDED datetime,
@DESTINATIONAMOUNT money = null,
@APPLICATIONCODE tinyint = null
)
as
set nocount on;
begin try
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;
--Delete the original splits for the destination (if any)
declare @contextCache varbinary(128);
set @contextCache = CONTEXT_INFO();
if not @CHANGEAGENTID is null
set CONTEXT_INFO @CHANGEAGENTID;
if not @contextCache is null
set CONTEXT_INFO @contextCache;
declare @REVENUETYPECODE tinyint;
if @DESTINATIONAMOUNT is null
select @DESTINATIONAMOUNT = AMOUNT from dbo.REVENUE where ID = @DESTINATIONID ;
select @REVENUETYPECODE = TRANSACTIONTYPECODE from dbo.REVENUE where ID = @SOURCEID ;
if @REVENUETYPECODE in (1, 3) --pledge payment or mg pledge payment (support pledge installment splits)
begin
insert into dbo.REVENUESPLIT(ID, REVENUEID, APPLICATIONCODE, TYPECODE, DESIGNATIONID, AMOUNT, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
select
newid(),
@DESTINATIONID,
SOURCE.APPLICATIONCODE,
SOURCE.TYPECODE,
a.DESIGNATIONID,
a.AMOUNT,
@CHANGEAGENTID,
@CHANGEAGENTID,
@DATEADDED,
@DATEADDED
from (select INSTALLMENTSPLIT.DESIGNATIONID, sum(INSTALLMENTSPLITPAYMENT.AMOUNT) AMOUNT
from dbo.INSTALLMENTSPLITPAYMENT
inner join dbo.INSTALLMENTSPLIT
on INSTALLMENTSPLITPAYMENT.INSTALLMENTSPLITID = INSTALLMENTSPLIT.ID
where
INSTALLMENTSPLITPAYMENT.PAYMENTID = @DESTINATIONID
and INSTALLMENTSPLITPAYMENT.PLEDGEID = @SOURCEID
group by INSTALLMENTSPLIT.DESIGNATIONID) a
inner join dbo.REVENUESPLIT SOURCE on SOURCE.REVENUEID = @SOURCEID; --ASSUMING 1 per
end
else
begin
insert into dbo.REVENUESPLIT(ID, REVENUEID, APPLICATIONCODE, TYPECODE, DESIGNATIONID, AMOUNT, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
select
newid(),
@DESTINATIONID,
case when @APPLICATIONCODE is null then APPLICATIONCODE else @APPLICATIONCODE end,
TYPECODE,
DESIGNATIONID,
AMOUNT,
@CHANGEAGENTID,
@CHANGEAGENTID,
@DATEADDED,
@DATEADDED
from
dbo.UFN_PLEDGE_GETSPLITSFORPAYMENT(@SOURCEID, @DESTINATIONAMOUNT); --Note: The PLEDGE here is a misnomer at this point since pledges are handled above. However, this function
--works for the other revenue types just as well so there's no need for a new one and renaming it would cause API breakage.
end
end try
begin catch
exec dbo.USP_RAISE_ERROR;
return 1;
end catch
return 0;