USP_DATAFORMTEMPLATE_EDIT_MGPLEDGE_2
The save procedure used by the edit dataform template "Matching Gift Claim Edit Form 2".
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | IN | The input ID parameter indicating the ID of the record being edited. |
@CHANGEAGENTID | uniqueidentifier | IN | Input parameter indicating the ID of the change agent invoking the procedure. |
@ORIGINALGIFTID | uniqueidentifier | IN | Original Gift |
@MATCHINGORGANIZATIONID | uniqueidentifier | IN | Matching organization |
@DATE | datetime | IN | Date |
@AMOUNT | money | IN | Amount |
@SPLITS | xml | IN | Designations |
@MATCHINGGIFTCONDITIONID | uniqueidentifier | IN | Matching gift condition type |
@RELATIONSHIPID | uniqueidentifier | IN | Relationship |
Definition
Copy
CREATE procedure dbo.USP_DATAFORMTEMPLATE_EDIT_MGPLEDGE_2
(
@ID uniqueidentifier,
@CHANGEAGENTID uniqueidentifier,
@ORIGINALGIFTID uniqueidentifier,
@MATCHINGORGANIZATIONID uniqueidentifier,
@DATE datetime,
@AMOUNT money,
@SPLITS xml,
@MATCHINGGIFTCONDITIONID uniqueidentifier,
@RELATIONSHIPID uniqueidentifier
)
as
set nocount on;
declare @CHANGEDATE datetime;
set @CHANGEDATE = getdate();
declare @OLDDATE datetime;
declare @COUNT int;
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;
begin try
exec dbo.USP_REVENUESPLIT_VALIDATESPLITS @SPLITS, @AMOUNT, 3;
select
@COUNT = count(REVENUE.ID)
from dbo.REVENUE
inner join dbo.REVENUEMATCHINGGIFT RMG on REVENUE.ID = RMG.ID
where
REVENUE.CONSTITUENTID = @MATCHINGORGANIZATIONID and
RMG.MGSOURCEREVENUEID = @ORIGINALGIFTID;
if (@COUNT - 1) > 0 --Use (@COUNT - 1) because the gift being edited will be counted in this.
raiserror('An organization cannot match a single gift more than once.', 13, 1);
select
@OLDDATE = DATE
from dbo.REVENUE
where ID = @ID;
/* CMC
update dbo.FINANCIALTRANSACTION
set DATE = @DATE,
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = @CHANGEDATE
where ID = @ID;
*/
update dbo.REVENUE
set DATE = @DATE,
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = @CHANGEDATE
where ID = @ID;
-- make sure we aren't trying to modify revenue in a locked/closed deposit/bank
exec dbo.USP_EDIT_REVENUE_VALIDATE_DEPOSIT_STATUS @ID;
/* CMC
update dbo.FINANCIALTRANSACTION
set AMOUNT = @AMOUNT,
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = @CHANGEDATE
where ID = @ID;
*/
update dbo.REVENUE
set AMOUNT = @AMOUNT,
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = @CHANGEDATE
where ID = @ID;
update dbo.REVENUEMATCHINGGIFT
set MATCHINGGIFTCONDITIONID = @MATCHINGGIFTCONDITIONID,
RELATIONSHIPID = @RELATIONSHIPID,
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = @CHANGEDATE
where ID = @ID;
if @DATE <> @OLDDATE
update dbo.REVENUESCHEDULE
set STARTDATE = @DATE,
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = @CHANGEDATE
where ID = @ID;
update dbo.INSTALLMENT
set AMOUNT = @AMOUNT,
DATE = @DATE,
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = @CHANGEDATE
where REVENUEID = @ID;
exec dbo.USP_REVENUE_GETSPLITS_UPDATEFROMXML @ID, @SPLITS, @CHANGEAGENTID, @CHANGEDATE;
--assume one installment
declare @INSTALLMENTSPLITS xml;
set @INSTALLMENTSPLITS = (select distinct
INSTALLMENTSPLIT.ID, INSTALLMENT.ID INSTALLMENTID, REVENUESPLIT.DESIGNATIONID, REVENUESPLIT.AMOUNT, REVENUESPLIT.ID
from REVENUESPLIT
inner join INSTALLMENT on INSTALLMENT.REVENUEID = REVENUESPLIT.REVENUEID
left outer join INSTALLMENTSPLIT on
REVENUESPLIT.ID = INSTALLMENTSPLIT.REVENUESPLITID
where REVENUESPLIT.REVENUEID = @ID
for xml raw('ITEM'),type,elements,root('INSTALLMENTSPLITS'),BINARY BASE64);
exec dbo.USP_PLEDGE_GETINSTALLMENTSPLITS_UPDATEFROMXML @ID, @INSTALLMENTSPLITS, @CHANGEAGENTID, @CHANGEDATE;
if dbo.UFN_PLEDGE_INSTALLMENTSPLITSBALANCE(@ID) = 0
raiserror('INSTALLMENTSPLITSBALANCE', 13, 10);
if dbo.UFN_PLEDGEPAYMENT_INSTALLMENTSBALANCE(@ID) = 0
raiserror('PLEDGEPAYMENT_INSTALLMENTSBALANCE', 13, 10);
if dbo.UFN_PLEDGEPAYMENT_DESIGNATIONSBALANCE(@ID) = 0
raiserror('PLEDGEPAYMENT_DESIGNATIONSBALANCE', 13, 10);
exec dbo.USP_REVENUE_UPDATESOLICITORS @ID, @CHANGEAGENTID, @CHANGEDATE;
end try
begin catch
exec dbo.USP_RAISE_ERROR;
return 1;
end catch
return 0;
return 0;