USP_GIFT_UPDATEPAYMENT
Updates a payment of type gift.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | IN | |
@REVENUEID | uniqueidentifier | IN | |
@AMOUNT | money | IN | |
@DESIGNATIONID | uniqueidentifier | IN | |
@OPPORTUNITYID | uniqueidentifier | IN | |
@CAMPAIGNS | xml | IN | |
@RECOGNITIONCREDITS | xml | IN | |
@SOLICITORS | xml | IN | |
@CATEGORYCODEID | uniqueidentifier | IN | |
@CHANGEDATE | datetime | IN | |
@CHANGEAGENTID | uniqueidentifier | IN | |
@BASEAMOUNT | money | IN | |
@ORGANIZATIONAMOUNT | money | IN | |
@REVENUETYPECODE | tinyint | IN |
Definition
Copy
CREATE procedure dbo.USP_GIFT_UPDATEPAYMENT
(
@ID uniqueidentifier,
@REVENUEID uniqueidentifier,
@AMOUNT money,
@DESIGNATIONID uniqueidentifier,
@OPPORTUNITYID uniqueidentifier,
@CAMPAIGNS xml,
@RECOGNITIONCREDITS xml,
@SOLICITORS xml,
@CATEGORYCODEID uniqueidentifier,
@CHANGEDATE datetime = null,
@CHANGEAGENTID uniqueidentifier = null,
@BASEAMOUNT money = null,
@ORGANIZATIONAMOUNT money = null,
@REVENUETYPECODE tinyint = null
)
as
set nocount on;
-- Get multicurrency values from the revenue.
declare @TRANSACTIONCURRENCYID uniqueidentifier;
declare @BASECURRENCYID uniqueidentifier;
declare @BASEEXCHANGERATEID uniqueidentifier;
declare @ORGANIZATIONEXCHANGERATEID uniqueidentifier;
declare @REVENUEDATE datetime;
declare @BASETOORGANIZATIONEXCHANGERATEID uniqueidentifier;
declare @ORGANIZATIONCURRENCYID uniqueidentifier;
select
@TRANSACTIONCURRENCYID = REVENUE.TRANSACTIONCURRENCYID,
@BASECURRENCYID = CS.BASECURRENCYID,
@BASEEXCHANGERATEID = REVENUE.BASEEXCHANGERATEID,
@ORGANIZATIONEXCHANGERATEID = REVENUE.ORGEXCHANGERATEID,
@REVENUEDATE = cast(REVENUE.DATE as datetime)
from dbo.FINANCIALTRANSACTION REVENUE
inner join dbo.REVENUE_EXT on REVENUE_EXT.ID = REVENUE.ID
inner join dbo.PDACCOUNTSYSTEM PD on PD.ID = REVENUE.PDACCOUNTSYSTEMID
inner join dbo.CURRENCYSET CS on CS.ID = PD.CURRENCYSETID
where REVENUE.ID = @REVENUEID
and REVENUE.TYPECODE in (0,1,2,3,4,5,6,7,8,9,15) and REVENUE.DELETEDON is null;
-- Convert the applied amount into base and organization amounts if it is not provided by the caller
if @BASEAMOUNT is null or @ORGANIZATIONAMOUNT is null
exec dbo.USP_CURRENCY_GETCURRENCYVALUES @AMOUNT, @REVENUEDATE, @BASECURRENCYID, @BASEEXCHANGERATEID output, @TRANSACTIONCURRENCYID output, @BASEAMOUNT output, null, @ORGANIZATIONAMOUNT output, @ORGANIZATIONEXCHANGERATEID output, 0, @BASETOORGANIZATIONEXCHANGERATEID output;
else
set @BASETOORGANIZATIONEXCHANGERATEID = dbo.UFN_CURRENCYEXCHANGERATE_GETLATESTBASETOORGANIZATIONRATE(@BASECURRENCYID, @REVENUEDATE, null, @ORGANIZATIONEXCHANGERATEID);
--Business units - AdiSa 6/12/10 - Store all business unit ratios in a temporary table.
declare @BUSINESSUNITS table(DESIGNATIONID uniqueidentifier, BUSINESSUNITCODEID uniqueidentifier, RATIO float)
insert into @BUSINESSUNITS
select
DESIGNATIONID,
BUSINESSUNITCODEID,
case
when LI.BASEAMOUNT = 0 then 0
else REVENUESPLITBUSINESSUNIT.AMOUNT / LI.BASEAMOUNT
end as RATIO
from dbo.REVENUESPLITBUSINESSUNIT
inner join dbo.FINANCIALTRANSACTIONLINEITEM LI on LI.ID = REVENUESPLITBUSINESSUNIT.REVENUESPLITID
inner join dbo.REVENUESPLIT_EXT on LI.ID = REVENUESPLIT_EXT.ID
where LI.FINANCIALTRANSACTIONID = @REVENUEID and REVENUESPLIT_EXT.OVERRIDEBUSINESSUNITS = 1
and LI.DELETEDON is null and LI.TYPECODE != 1
update dbo.FINANCIALTRANSACTIONLINEITEM set
TRANSACTIONAMOUNT = @AMOUNT
,BASEAMOUNT = @BASEAMOUNT
,ORGAMOUNT = @ORGANIZATIONAMOUNT
,CHANGEDBYID = @CHANGEAGENTID
,DATECHANGED = @CHANGEDATE
where ID = @ID
and (
TRANSACTIONAMOUNT != @AMOUNT or
BASEAMOUNT != @BASEAMOUNT or
ORGAMOUNT != @ORGANIZATIONAMOUNT);
update dbo.REVENUESPLIT_EXT set
DESIGNATIONID = @DESIGNATIONID
,TYPECODE = coalesce(@REVENUETYPECODE,TYPECODE)
,APPLICATIONCODE = 0
,CHANGEDBYID = @CHANGEAGENTID
,DATECHANGED = @CHANGEDATE
where ID = @ID
and (
DESIGNATIONID != @DESIGNATIONID or
TYPECODE != @REVENUETYPECODE or
APPLICATIONCODE != 0);
--Business units - AdiSa 6/12/10 - Re-adjust business unit ratio's with new revenuesplit amount for gift.
update dbo.REVENUESPLITBUSINESSUNIT set
REVENUESPLITBUSINESSUNIT.AMOUNT = LI.BASEAMOUNT * BU.RATIO
from dbo.REVENUESPLITBUSINESSUNIT
inner join dbo.FINANCIALTRANSACTIONLINEITEM LI on LI.ID = REVENUESPLITBUSINESSUNIT.REVENUESPLITID
inner join dbo.REVENUESPLIT_EXT on LI.ID = REVENUESPLIT_EXT.ID
inner join @BUSINESSUNITS BU on BU.DESIGNATIONID = REVENUESPLIT_EXT.DESIGNATIONID
where LI.FINANCIALTRANSACTIONID = @REVENUEID and REVENUESPLITBUSINESSUNIT.BUSINESSUNITCODEID = BU.BUSINESSUNITCODEID
and LI.DELETEDON is null and LI.TYPECODE != 1;
if @OPPORTUNITYID is null or @OPPORTUNITYID = '00000000-0000-0000-0000-000000000000'
exec dbo.USP_REVENUEOPPORTUNITY_DELETEBYID_WITHCHANGEAGENTID @ID, @CHANGEAGENTID;
else
begin
if exists(select ID from dbo.REVENUEOPPORTUNITY where ID = @ID)
update dbo.REVENUEOPPORTUNITY
set OPPORTUNITYID = @OPPORTUNITYID,
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = @CHANGEDATE
where ID = @ID and OPPORTUNITYID <> @OPPORTUNITYID;
else
insert into dbo.REVENUEOPPORTUNITY(ID, OPPORTUNITYID, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
values(@ID, @OPPORTUNITYID, @CHANGEAGENTID, @CHANGEAGENTID, @CHANGEDATE, @CHANGEDATE);
end
exec dbo.USP_OPPORTUNITY_UPDATEACCEPTEDSTATUS @OPPORTUNITYID, @REVENUEDATE, @CHANGEAGENTID, @CHANGEDATE
exec dbo.USP_REVENUESPLIT_GETCAMPAIGNS_UPDATEFROMXML @ID, @CAMPAIGNS, @CHANGEAGENTID;
if dbo.UFN_REVENUESPLIT_MATCHEDBYDONORCHALLENGE(@ID) = 1
begin
--If the new rows do not have RECOGNITIONCREDITFKID or ID they won't be added (e.g. if credits were reset)
set @RECOGNITIONCREDITS = (select [AMOUNT], [BASECURRENCYID], [CONSTITUENT], [CONSTITUENTID], [DESIGNATION], [DESIGNATIONID], [DONOR], [EFFECTIVEDATE], [GROSSAMOUNT],
case when RECOGNITIONCREDITFKID is null and ID is null then newid() else ID end [ID],
[RECOGNITIONTYPE], [REVENUERECOGNITIONTYPECODEID],
case when RECOGNITIONCREDITFKID is null then @ID else RECOGNITIONCREDITFKID end [RECOGNITIONCREDITFKID],
case when RECOGNITIONCREDITFKID is null then 0 else DONORCHALLENGERECOGNITIONTYPECODE end [DONORCHALLENGERECOGNITIONTYPECODE]
from dbo.UFN_RECOGNITIONCREDIT_DONORCHALLENGE_GETRECOGNITIONS_FROMITEMLISTXML(@RECOGNITIONCREDITS)
order by EFFECTIVEDATE asc, CONSTITUENT asc
for xml raw('ITEM'),type,elements,root('RECOGNITIONS'),BINARY BASE64)
set @RECOGNITIONCREDITS = dbo.UFN_RECOGNITIONCREDIT_DONORCHALLENGE_CONVERTAMOUNTSINXML(@RECOGNITIONCREDITS, @BASECURRENCYID, @BASETOORGANIZATIONEXCHANGERATEID);
exec dbo.USP_RECOGNITIONCREDIT_DONORCHALLENGE_GETRECOGNITIONS_CUSTOMUPDATEFROMXML @ID, @RECOGNITIONCREDITS, @CHANGEAGENTID;
end
else
begin
set @RECOGNITIONCREDITS = dbo.UFN_REVENUERECOGNITION_CONVERTAMOUNTSINXML(@RECOGNITIONCREDITS, @BASECURRENCYID, @BASETOORGANIZATIONEXCHANGERATEID);
exec dbo.USP_REVENUE_GETRECOGNITIONS_2_UPDATEFROMXML @ID, @RECOGNITIONCREDITS, @CHANGEAGENTID;
end
set @SOLICITORS = dbo.UFN_REVENUESOLICITOR_CONVERTAMOUNTSINXML(@SOLICITORS, @BASECURRENCYID, @BASETOORGANIZATIONEXCHANGERATEID);
exec dbo.USP_REVENUE_GETSOLICITORS_2_UPDATEFROMXML @ID, @SOLICITORS, @CHANGEAGENTID;
exec dbo.USP_REVENUECATEGORY_ADDEDIT @ID, @CATEGORYCODEID, @CHANGEAGENTID;