USP_DATAFORMTEMPLATE_EDIT_REVENUESPLITDETAILS_2
The save procedure used by the edit dataform template "Revenue Split Details 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. |
@DESIGNATIONID | uniqueidentifier | IN | Designation |
@CATEGORYCODEID | uniqueidentifier | IN | Revenue category |
@OTHERTYPECODEID | uniqueidentifier | IN | Other type |
@OPPORTUNITYID | uniqueidentifier | IN | Opportunity |
@DECLINESGIFTAID | bit | IN | Constituent declines Gift Aid for this application |
@ISGIFTAIDSPONSORSHIP | bit | IN | Gift Aid sponsorship |
Definition
Copy
CREATE procedure dbo.USP_DATAFORMTEMPLATE_EDIT_REVENUESPLITDETAILS_2
(
@ID uniqueidentifier,
@CHANGEAGENTID uniqueidentifier,
@DESIGNATIONID uniqueidentifier,
@CATEGORYCODEID uniqueidentifier,
@OTHERTYPECODEID uniqueidentifier,
@OPPORTUNITYID uniqueidentifier,
@DECLINESGIFTAID bit,
@ISGIFTAIDSPONSORSHIP bit
)
as
set nocount on
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output
declare @CURRENTDATE datetime
set @CURRENTDATE = getdate()
-- Validate that the all the values passed in apply for the application code
declare @REVENUEID uniqueidentifier, @APPLICATIONCODE tinyint
select
@REVENUEID = REVENUEID,
@APPLICATIONCODE = APPLICATIONCODE
from dbo.REVENUESPLIT
where ID = @ID
if @DESIGNATIONID is null and
(@APPLICATIONCODE = 0 or -- Donation
@APPLICATIONCODE = 4) -- Other
begin
raiserror('DESIGNATIONREQUIRED', 13, 1)
return 1
end
if @OTHERTYPECODEID is not null and @APPLICATIONCODE <> 4
begin
raiserror('OTHERTYPECODENOTVALID', 13, 1)
return 1
end
if @OTHERTYPECODEID is null and @APPLICATIONCODE = 4
begin
raiserror('OTHERTYPECODEREQUIRED', 13, 1)
return 1
end
if @OPPORTUNITYID is not null and @APPLICATIONCODE not in (0,2,6,8)
begin
raiserror('OPPORTUNITYCODENOTVALID', 13, 1)
return 1
end
-- Verify the transaction hasn't already been posted
if exists (select 1 from dbo.REVENUEPOSTED where ID = @REVENUEID)
begin
raiserror('TRANSACTIONCANNOTBEPOSTED', 13, 1)
return 1
end
-- Verify the designation is unique for this revenue
if (@APPLICATIONCODE = 0 or @APPLICATIONCODE = 4) and exists (
select 1
from dbo.REVENUESPLIT
where REVENUEID = @REVENUEID
and DESIGNATIONID = @DESIGNATIONID
and APPLICATIONCODE = @APPLICATIONCODE
and ID <> @ID
)
begin
raiserror('REVENUESPLITDESIGNATIONNOTUNIQUE', 13, 1)
return 1
end
--check to see if designation changed, if so re-receipt, re-acknowledge and adjust (if posted)
declare @CURRENTDESIGNATIONID uniqueidentifier, @CURRENTCATEGORYID uniqueidentifier
select @CURRENTDESIGNATIONID = DESIGNATIONID from dbo.REVENUESPLIT where ID = @ID
select @CURRENTCATEGORYID = GLREVENUECATEGORYMAPPINGID from dbo.REVENUECATEGORY where ID = @ID
declare @DESIGNATIONCHANGED as bit, @CATEGORYCHANGED as bit
if (@CURRENTDESIGNATIONID is null and @DESIGNATIONID is null) or @CURRENTDESIGNATIONID = @DESIGNATIONID
set @DESIGNATIONCHANGED = 0
else
set @DESIGNATIONCHANGED = 1
if (@CURRENTCATEGORYID is null and @CATEGORYCODEID is null) or @CURRENTCATEGORYID = @CATEGORYCODEID
set @CATEGORYCHANGED = 0
else
set @CATEGORYCHANGED = 1
begin try
declare @OLDGIFTAIDQUALIFICATIONSTATUS nvarchar(30);
set @OLDGIFTAIDQUALIFICATIONSTATUS = dbo.UFN_GIFTAIDREVENUESPLIT_GETQUALIFICATIONSTATUS(@ID);
if @DESIGNATIONCHANGED = 1
begin
exec dbo.USP_REVENUE_UPDATERERECEIPTS @REVENUEID, @CHANGEAGENTID, @CURRENTDATE
exec dbo.USP_REVENUELETTER_SETREACKNOWLEDGEMENTS @REVENUEID, @CHANGEAGENTID, @CURRENTDATE;
update dbo.REVENUESPLIT set
DESIGNATIONID = @DESIGNATIONID,
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = @CURRENTDATE
where
ID = @ID
if (@APPLICATIONCODE = 0)
begin
declare @SALESORDERITEMID uniqueidentifier = (select ID from dbo.SALESORDERITEMDONATION where REVENUESPLITID = @ID)
declare @DESIGNATIONNAME nvarchar(512) = (select NAME from dbo.DESIGNATION where ID = @DESIGNATIONID)
update dbo.SALESORDERITEMDONATION set
DESIGNATIONID = @DESIGNATIONID,
DESIGNATIONNAME = @DESIGNATIONNAME,
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = @CURRENTDATE
where ID = @SALESORDERITEMID
update dbo.SALESORDERITEM set
[DESCRIPTION] = @DESIGNATIONNAME,
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = @CURRENTDATE
where ID = @SALESORDERITEMID
-- update campaigns
exec dbo.USP_PLEDGE_CLEARANDADDCAMPAIGNS @REVENUEID = @REVENUEID, @OPPORTUNITYID = @OPPORTUNITYID, @CHANGEAGENTID = @CHANGEAGENTID, @CHANGEDATE = @CURRENTDATE
-- Bug 320593
-- update designation for payment associated with the order
update dbo.REVENUESPLIT_EXT set
DESIGNATIONID = @DESIGNATIONID,
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = @CURRENTDATE
from dbo.FINANCIALTRANSACTIONLINEITEM
inner join dbo.REVENUESPLIT_EXT
on FINANCIALTRANSACTIONLINEITEM.ID = REVENUESPLIT_EXT.ID
where FINANCIALTRANSACTIONLINEITEM.SOURCELINEITEMID = @ID
and REVENUESPLIT_EXT.APPLICATIONCODE = 10; -- Order
end
else if @APPLICATIONCODE = 4 -- Other
exec dbo.USP_REVENUE_CLEARANDADDCAMPAIGNS @REVENUEID = @REVENUEID, @CHANGEAGENTID = @CHANGEAGENTID, @CHANGEDATE = @CURRENTDATE
end
/* CMC
update dbo.REVENUESPLIT_EXT set
DESIGNATIONID = @DESIGNATIONID
where
ID = @ID
*/
if @CATEGORYCODEID is null
exec dbo.USP_REVENUECATEGORY_DELETEBYID_WITHCHANGEAGENTID @ID, @CHANGEAGENTID
else
begin
update dbo.REVENUECATEGORY set
GLREVENUECATEGORYMAPPINGID = @CATEGORYCODEID,
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = @CURRENTDATE
where
ID = @ID
if @@ROWCOUNT = 0
insert into dbo.REVENUECATEGORY (ID, GLREVENUECATEGORYMAPPINGID, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
values (@ID, @CATEGORYCODEID, @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE)
end
if @OTHERTYPECODEID is null
exec dbo.USP_REVENUESPLITOTHER_DELETEBYID_WITHCHANGEAGENTID @ID, @CHANGEAGENTID
else
begin
update dbo.REVENUESPLITOTHER set
OTHERTYPECODEID = @OTHERTYPECODEID,
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = @CURRENTDATE
where
ID = @ID
if @@ROWCOUNT = 0
insert into dbo.REVENUESPLITOTHER (ID, OTHERTYPECODEID, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
values (@ID, @OTHERTYPECODEID, @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE)
end
if @OPPORTUNITYID is null
exec dbo.USP_REVENUEOPPORTUNITY_DELETEBYID_WITHCHANGEAGENTID @ID, @CHANGEAGENTID
else
begin
exec dbo.USP_REVENUESPLIT_PULLSOLICITORSFROMOPPORTUNITY @ID, @OPPORTUNITYID, @CHANGEAGENTID, @CURRENTDATE
update dbo.REVENUEOPPORTUNITY set
OPPORTUNITYID = @OPPORTUNITYID,
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = @CURRENTDATE
where
ID = @ID
if @@ROWCOUNT = 0
insert into dbo.REVENUEOPPORTUNITY (ID, OPPORTUNITYID, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
values (@ID, @OPPORTUNITYID, @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE)
declare @REVENUEDATE datetime
select @REVENUEDATE = DATE from dbo.REVENUE where ID = @REVENUEID
exec dbo.USP_OPPORTUNITY_UPDATEACCEPTEDSTATUS @OPPORTUNITYID, @REVENUEDATE, @CHANGEAGENTID, @CURRENTDATE
end
exec dbo.USP_REVENUESPLIT_UPDATEDECLINESGIFTAID @REVENUEID = @REVENUEID,
@APPLICATIONCODE = @APPLICATIONCODE,
@REVENUESPLITID = @ID,
@DESIGNATIONID = @DESIGNATIONID,
@DECLINESGIFTAID = @DECLINESGIFTAID,
@CHANGEAGENTID = @CHANGEAGENTID,
@CURRENTDATE = @CURRENTDATE,
@ISGIFTAIDSPONSORSHIP = @ISGIFTAIDSPONSORSHIP
-- Clear the user-defined gl distributions if the designation or revenue category has changed
-- Do this regardless of whether gift is posted or not
if @DESIGNATIONCHANGED = 1 or @CATEGORYCHANGED = 1
begin
declare @contextCache varbinary(128);
--cache current context information
set @contextCache = CONTEXT_INFO();
-- Clear GL - Deleting from table instead of views
--REVENUEGLDISTRIBUTION
delete JE from dbo.JOURNALENTRY JE
inner join dbo.FINANCIALTRANSACTIONLINEITEM FTLI on JE.FINANCIALTRANSACTIONLINEITEMID = FTLI.ID
inner join dbo.JOURNALENTRY_EXT JEX on JE.ID = JEX.ID
where FTLI.POSTSTATUSCODE != 2 and JEX.OUTDATED = 0
and JEX.TABLENAMECODE = 1 and FTLI.FINANCIALTRANSACTIONID = @REVENUEID;
--AUCTIONPURCHASEGLDISTRIBUTION
delete JE from dbo.JOURNALENTRY JE
inner join dbo.FINANCIALTRANSACTIONLINEITEM FTLI on JE.FINANCIALTRANSACTIONLINEITEMID = FTLI.ID
inner join dbo.JOURNALENTRY_EXT JEX on JE.ID = JEX.ID
where FTLI.POSTSTATUSCODE != 2 and JEX.OUTDATED = 0
and JEX.TABLENAMECODE = 2 and JEX.REVENUEPURCHASEID = @REVENUEID;
--GIFTFEEGLDISTRIBUTION and STOCKSALEGLDISTRIBUTION
delete JE from dbo.JOURNALENTRY JE
inner join dbo.FINANCIALTRANSACTIONLINEITEM FTLI on JE.FINANCIALTRANSACTIONLINEITEMID = FTLI.ID
inner join dbo.JOURNALENTRY_EXT JEX on JE.ID = JEX.ID
where FTLI.POSTSTATUSCODE != 2 and JEX.OUTDATED = 0
and JEX.TABLENAMECODE in (8,11) and JEX.LOGICALREVENUEID = @REVENUEID;
--Stock posted (Logic from STOCKSALEGLDISTRIBUTION delete trigger)
if exists(select 1 from dbo.JOURNALENTRY JE
inner join dbo.FINANCIALTRANSACTIONLINEITEM FTLI on JE.FINANCIALTRANSACTIONLINEITEMID = FTLI.ID
inner join dbo.JOURNALENTRY_EXT JEX on JE.ID = JEX.ID
where FTLI.POSTSTATUSCODE = 2 and JEX.TABLENAMECODE = 11 and JEX.LOGICALREVENUEID = @REVENUEID)
update JOURNALENTRY_EXT set STOCKSALEID = null from dbo.JOURNALENTRY
inner join dbo.FINANCIALTRANSACTIONLINEITEM FTLI on JOURNALENTRY.FINANCIALTRANSACTIONLINEITEMID = FTLI.ID
inner join dbo.JOURNALENTRY_EXT on JOURNALENTRY.ID = JOURNALENTRY_EXT.ID
where FTLI.POSTSTATUSCODE = 2 and JOURNALENTRY_EXT.TABLENAMECODE = 11 and JOURNALENTRY_EXT.LOGICALREVENUEID = @REVENUEID;
--PROPERTYDETAILGLDISTRIBUTION
delete JE from dbo.JOURNALENTRY JE
inner join dbo.FINANCIALTRANSACTIONLINEITEM FTLI on JE.FINANCIALTRANSACTIONLINEITEMID = FTLI.ID
inner join dbo.JOURNALENTRY_EXT JEX on JE.ID = JEX.ID
inner join dbo.FINANCIALTRANSACTION FT on FT.ID = FTLI.FINANCIALTRANSACTIONID
where FTLI.POSTSTATUSCODE != 2 and JEX.TABLENAMECODE = 10 and FTLI.TYPECODE != 1 and JEX.OUTDATED = 0
and (JEX.LOGICALREVENUEID = @REVENUEID or (JEX.LOGICALREVENUEID is null and FT.PARENTID = @REVENUEID));
set CONTEXT_INFO @CHANGEAGENTID;
--reset CONTEXT_INFO to previous value
if not @contextCache is null
set CONTEXT_INFO @contextCache;
-- Add new GL distributions
declare @DONOTPOST bit
select @DONOTPOST = DONOTPOST from dbo.REVENUE where ID = @REVENUEID
if @DONOTPOST = 0
begin
-- Add new GL distributions
exec dbo.USP_SAVE_REVENUEGLDISTRIBUTION @REVENUEID, @CHANGEAGENTID, @CURRENTDATE;
-- Add new stock detail GL distributions
exec dbo.USP_SAVE_STOCKDETAILGLDISTRIBUTION @REVENUEID, @CHANGEAGENTID, @CURRENTDATE;
-- Add new property detail GL distributions
exec dbo.USP_SAVE_PROPERTYDETAILGLDISTRIBUTION @REVENUEID, @CHANGEAGENTID, @CURRENTDATE;
-- Add new gift fee GL distributions
exec dbo.USP_SAVE_GIFTFEEGLDISTRIBUTION @REVENUEID, @CHANGEAGENTID, @CURRENTDATE;
-- Add new auction purchase GL distributions
if exists(select 1 from dbo.FINANCIALTRANSACTIONLINEITEM inner join dbo.REVENUESPLIT_EXT on FINANCIALTRANSACTIONLINEITEM.ID = REVENUESPLIT_EXT.ID where FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID = @REVENUEID and REVENUESPLIT_EXT.TYPECODE = 12 and FINANCIALTRANSACTIONLINEITEM.DELETEDON is null and FINANCIALTRANSACTIONLINEITEM.TYPECODE <> 1)
exec dbo.USP_SAVE_AUCTIONPURCHASEGLDISTRIBUTION @REVENUEID = @REVENUEID, @CHANGEAGENTID = @CHANGEAGENTID, @CHANGEDATE = @CURRENTDATE
declare @DEPOSITID uniqueidentifier;
select
@DEPOSITID = BADP.DEPOSITID
from dbo.BANKACCOUNTDEPOSITPAYMENT BADP
where BADP.ID = @REVENUEID;
if @DEPOSITID is not null
exec dbo.USP_BANKACCOUNTDEPOSIT_OVERWRITEPAYMENTDEBITACCOUNTS @REVENUEID, @DEPOSITID, @CHANGEAGENTID, @CURRENTDATE;
end
--Replace gift aid GL distributions
if (@OLDGIFTAIDQUALIFICATIONSTATUS = dbo.UFN_GIFTAIDREVENUESPLIT_GETQUALIFICATIONSTATUS(@ID))
and (exists(select 1 from dbo.GIFTAIDGLDISTRIBUTION where REVENUESPLITGIFTAIDID = @ID))
begin
exec dbo.USP_REVENUESPLITGIFTAID_UPDATEGLDISTRIBUTIONS @ID, @CHANGEAGENTID, @CURRENTDATE, @DONOTPOST;
end
end
end try
begin catch
exec dbo.USP_RAISE_ERROR;
return 1;
end catch
return 0;