USP_DATAFORMTEMPLATE_EDITSAVE_SPONSORSHIPSTARTDATE
The save procedure used by the edit dataform template "Sponsorship Start Date Edit Form".
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. |
@STARTDATE | date | IN | Start date |
Definition
Copy
CREATE procedure dbo.USP_DATAFORMTEMPLATE_EDITSAVE_SPONSORSHIPSTARTDATE (
@ID uniqueidentifier,
@CHANGEAGENTID uniqueidentifier = null,
@STARTDATE date
)
as
set nocount on;
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output
declare @CURRENTDATE datetime
set @CURRENTDATE = getdate()
declare @REVENUEID uniqueidentifier;
declare @REVENUESTARTDATE datetime;
declare @SPONSORID uniqueidentifier;
declare @GIFTFINANCIALSPONSORID uniqueidentifier;
declare @ORIGINALSTARTDATE date;
select
@REVENUEID = REVENUESPLIT.REVENUEID,
@REVENUESTARTDATE = REVENUESCHEDULE.STARTDATE,
@SPONSORID = SPONSORSHIP.CONSTITUENTID,
@GIFTFINANCIALSPONSORID = ADDTRANSACTION.GIFTFINANCIALSPONSORID,
@ORIGINALSTARTDATE = SPONSORSHIP.STARTDATE
from dbo.SPONSORSHIP
inner join dbo.SPONSORSHIPTRANSACTION ADDTRANSACTION on ADDTRANSACTION.SPONSORSHIPCOMMITMENTID = SPONSORSHIP.SPONSORSHIPCOMMITMENTID and ADDTRANSACTION.TRANSACTIONSEQUENCE = 1
left join dbo.REVENUESPLIT on REVENUESPLIT.ID = SPONSORSHIP.REVENUESPLITID
left join dbo.REVENUESCHEDULE on REVENUESCHEDULE.ID = REVENUESPLIT.REVENUEID
where SPONSORSHIP.ID = @ID;
if @STARTDATE <> @ORIGINALSTARTDATE
begin
if @STARTDATE <= @REVENUESTARTDATE or @REVENUEID is null
begin
update dbo.SPONSORSHIP set
STARTDATE = @STARTDATE,
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = @CURRENTDATE
where ID = @ID
update dbo.SPONSORSHIPTRANSACTION
set TRANSACTIONDATE = @STARTDATE
where TARGETSPONSORSHIPID = @ID
and ACTIONCODE = 0;
if @REVENUEID is not null
begin
begin try
update dbo.REVENUE set
DATE = @STARTDATE,
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = @CURRENTDATE
where
ID = @REVENUEID
end try
begin catch
exec dbo.USP_RAISE_ERROR
return 1
end catch
end
-- update constituencies relevant to the start of the commitment
if @GIFTFINANCIALSPONSORID is null
exec dbo.USP_SPONSOR_REBUILDSPONSORSHIPCONSTITUENCIES @SPONSORID, 0, @CHANGEAGENTID
else
begin
exec dbo.USP_SPONSOR_REBUILDSPONSORSHIPCONSTITUENCIES @SPONSORID, 1, @CHANGEAGENTID
exec dbo.USP_SPONSOR_REBUILDSPONSORSHIPCONSTITUENCIES @GIFTFINANCIALSPONSORID, 2, @CHANGEAGENTID
end
end
else
begin
raiserror('BBERR_DATETOLATE',13,1);
return 1;
end
end
return 0;