USP_UNAPPLIEDMG_UPDATEPAYMENT
Updates unapplied matching gift payments.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | IN | |
@REVENUEID | uniqueidentifier | IN | |
@AMOUNT | money | IN | |
@DESIGNATIONID | 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 |
Definition
Copy
CREATE procedure dbo.USP_UNAPPLIEDMG_UPDATEPAYMENT
(
@ID uniqueidentifier,
@REVENUEID uniqueidentifier,
@AMOUNT money,
@DESIGNATIONID uniqueidentifier,
@CAMPAIGNS xml,
@RECOGNITIONCREDITS xml,
@SOLICITORS xml,
@CATEGORYCODEID uniqueidentifier,
@CHANGEDATE datetime = null,
@CHANGEAGENTID uniqueidentifier = null,
@BASEAMOUNT money = null,
@ORGANIZATIONAMOUNT money = null
)
as
set nocount on;
--SlyyMu 8/19/10. Updated the function to account for both T->B->O and T->O
declare @TRANSACTIONCURRENCYID uniqueidentifier;
declare @BASECURRENCYID uniqueidentifier;
declare @BASEEXCHANGERATEID uniqueidentifier;
declare @ORGANIZATIONEXCHANGERATEID uniqueidentifier;
declare @BASETOORGANIZATIONEXCHANGERATEID uniqueidentifier;
declare @REVENUEDATE datetime;
select
@REVENUEDATE = cast(REVENUE.DATE as datetime),
@BASECURRENCYID = CS.BASECURRENCYID,
@TRANSACTIONCURRENCYID = REVENUE.TRANSACTIONCURRENCYID,
@BASEEXCHANGERATEID = REVENUE.BASEEXCHANGERATEID,
@ORGANIZATIONEXCHANGERATEID = REVENUE.ORGEXCHANGERATEID
from dbo.FINANCIALTRANSACTIONLINEITEM REVENUESPLIT
inner join dbo.REVENUESPLIT_EXT on REVENUESPLIT_EXT.ID = REVENUESPLIT.ID
inner join dbo.FINANCIALTRANSACTION REVENUE on REVENUE.ID = REVENUESPLIT.FINANCIALTRANSACTIONID
inner join dbo.PDACCOUNTSYSTEM PD on PD.ID = REVENUE.PDACCOUNTSYSTEMID
inner join dbo.CURRENCYSET CS on CS.ID = PD.CURRENCYSETID
where REVENUESPLIT.ID = @ID;
-- Convert the applied amount into base and organization amounts.
if @BASEAMOUNT is null or @ORGANIZATIONAMOUNT is null
exec dbo.USP_CURRENCY_GETCURRENCYVALUES @AMOUNT, @REVENUEDATE, @BASECURRENCYID, @BASEEXCHANGERATEID, @TRANSACTIONCURRENCYID, @BASEAMOUNT output, null, @ORGANIZATIONAMOUNT output, @ORGANIZATIONEXCHANGERATEID, 0, @BASETOORGANIZATIONEXCHANGERATEID output;
else
set @BASETOORGANIZATIONEXCHANGERATEID = dbo.UFN_CURRENCYEXCHANGERATE_GETLATESTBASETOORGANIZATIONRATE(@BASECURRENCYID, @REVENUEDATE, null, @ORGANIZATIONEXCHANGERATEID);
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);
-- adding applicationcode and typecode in the update since the Revenue Update batch can change the application type code without
-- deleting the split record, so the applicationcode and typecode doesn't get set correctly if say, a donation is changed into
-- a UMG.
update dbo.REVENUESPLIT_EXT set
DESIGNATIONID = @DESIGNATIONID
,APPLICATIONCODE = 7
,TYPECODE = 0
,CHANGEDBYID = @CHANGEAGENTID
,DATECHANGED = @CHANGEDATE
where ID = @ID
and (
DESIGNATIONID != @DESIGNATIONID or
TYPECODE != 0 or
APPLICATIONCODE != 7);
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
exec dbo.USP_REVENUE_GETSOLICITORS_UPDATEFROMXML @ID, @SOLICITORS, @CHANGEAGENTID;
exec dbo.USP_REVENUECATEGORY_ADDEDIT @ID, @CATEGORYCODEID, @CHANGEAGENTID;