USP_DATAFORMTEMPLATE_EDIT_GIFTAIDGLDISTRIBUTIONADJUST_2
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | IN | |
@GLDISTRIBUTION | xml | IN | |
@ADJUSTMENTDATE | datetime | IN | |
@ADJUSTMENTPOSTDATE | datetime | IN | |
@ADJUSTMENTREASON | nvarchar(300) | IN | |
@ADJUSTMENTREASONCODEID | uniqueidentifier | IN | |
@CHANGEAGENTID | uniqueidentifier | IN |
Definition
Copy
CREATE procedure dbo.USP_DATAFORMTEMPLATE_EDIT_GIFTAIDGLDISTRIBUTIONADJUST_2
(
@ID uniqueidentifier,
@GLDISTRIBUTION xml,
@ADJUSTMENTDATE datetime,
@ADJUSTMENTPOSTDATE datetime,
@ADJUSTMENTREASON nvarchar(300),
@ADJUSTMENTREASONCODEID uniqueidentifier,
@CHANGEAGENTID uniqueidentifier = null
)
as
set nocount on;
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;
declare @CURRENTDATE datetime;
set @CURRENTDATE = getdate();
begin try
declare @ADJUST bit;
declare @ADJUSTMENTEXISTS bit
set @ADJUST = 0;
set @ADJUSTMENTEXISTS = 0;
if (dbo.UFN_GLDISTRIBUTION_DEBITSEQUALCREDITS(@GLDISTRIBUTION) = 0)
raiserror('The sum of the debit accounts must equal the sum of the credit accounts.', 13, 1)
declare @REVID uniqueidentifier
select @REVID = REVENUEID from REVENUESPLIT where ID = @ID
if (dbo.UFN_GLDISTRIBUTION_ACCOUNTEXISTS_2(@GLDISTRIBUTION,@REVID) = 0)
raiserror('One or more of the edited accounts do not exist.', 13, 1)
/* Already adjusted */
if dbo.UFN_REVENUESPLITGIFTAID_HASPENDINGADJUSTMENT(@ID) = 1
begin
set @ADJUST = 1;
set @ADJUSTMENTEXISTS = 1;
end
/* distributions Changed */
if @ADJUST = 0
set @ADJUST = dbo.UFN_REVENUESPLITGIFTAID_DISTRIBUTIONCHANGED(@ID, @GLDISTRIBUTION)
/* Create the reversals if no previous adjustment exists. */
if @ADJUST = 1
begin
exec dbo.USP_SAVE_GIFTAID_ADJUSTMENT @ID, 1, @ADJUSTMENTPOSTDATE, @ADJUSTMENTREASONCODEID, null, @CHANGEAGENTID, @CURRENTDATE;
end
if @ADJUST = 1
begin
declare @TRANSACTIONCURRENCYID uniqueidentifier;
declare @BASECURRENCYID uniqueidentifier;
declare @BASEEXCHANGERATEID uniqueidentifier;
declare @ORGANIZATIONEXCHANGERATEID uniqueidentifier;
select
@TRANSACTIONCURRENCYID = TRANSACTIONCURRENCYID,
@BASECURRENCYID = BASECURRENCYID,
@BASEEXCHANGERATEID = BASEEXCHANGERATEID,
@ORGANIZATIONEXCHANGERATEID = ORGANIZATIONEXCHANGERATEID
from
dbo.REVENUESPLITGIFTAID
where
ID = @ID;
--Set the currency values in the GLDISTRIBUTION collection.
select @GLDISTRIBUTION = dbo.UFN_GLDISTRIBUTION_CONVERTAMOUNTSINXML
(
@GLDISTRIBUTION,
@BASECURRENCYID,
@ORGANIZATIONEXCHANGERATEID,
@TRANSACTIONCURRENCYID,
@BASEEXCHANGERATEID,
@ORGANIZATIONEXCHANGERATEID,
@BASEEXCHANGERATEID
)
-- If an unposted adjustment already exists, update the gift aid GL distribution rows.
-- Otherwise, insert new gift aid gl distribution rows using @GLDISTRIBUTION.
if @ADJUSTMENTEXISTS = 1
begin
exec dbo.USP_REVENUESPLITGIFTAID_GETGLDISTRIBUTION_CUSTOMUPDATEFROMXML_2 @ID, @GLDISTRIBUTION, @CURRENTDATE, @CHANGEAGENTID, @CURRENTDATE;
end
else
begin
declare @JOURNAL nvarchar(50);
set @JOURNAL = 'Blackbaud Enterprise';
declare @REVENUEID uniqueidentifier;
select @REVENUEID = REVENUEID from dbo.REVENUESPLIT where ID = @ID;
set @CURRENTDATE = getdate();
declare @DISTRIBUTIONS table(
GLTRANSACTIONID uniqueidentifier,
ACCOUNT nvarchar(100),
AMOUNT money,
PROJECT nvarchar(100),
REFERENCE nvarchar(255),
TRANSACTIONTYPECODE tinyint,
GLPAYMENTMETHODREVENUETYPEMAPPINGID uniqueidentifier,
BASECURRENCYID uniqueidentifier,
TRANSACTIONAMOUNT money,
TRANSACTIONCURRENCYID uniqueidentifier,
BASEEXCHANGERATEID uniqueidentifier,
ORGANIZATIONAMOUNT money,
ORGANIZATIONEXCHANGERATEID uniqueidentifier
);
-- Get the user-defined GL distributions for the gift aid record.
insert into @DISTRIBUTIONS(GLTRANSACTIONID, ACCOUNT, AMOUNT, PROJECT, REFERENCE, TRANSACTIONTYPECODE, GLPAYMENTMETHODREVENUETYPEMAPPINGID,
BASECURRENCYID, TRANSACTIONAMOUNT, TRANSACTIONCURRENCYID, BASEEXCHANGERATEID, ORGANIZATIONAMOUNT, ORGANIZATIONEXCHANGERATEID)
select
newid(),
GIFTAIDDISTRIBUTIONS.ACCOUNT,
GIFTAIDDISTRIBUTIONS.AMOUNT,
GIFTAIDDISTRIBUTIONS.PROJECT,
GIFTAIDDISTRIBUTIONS.REFERENCE,
GIFTAIDDISTRIBUTIONS.TRANSACTIONTYPECODE,
GIFTAIDDISTRIBUTIONS.GLPAYMENTMETHODREVENUETYPEMAPPINGID,
GIFTAIDDISTRIBUTIONS.BASECURRENCYID,
GIFTAIDDISTRIBUTIONS.TRANSACTIONAMOUNT,
GIFTAIDDISTRIBUTIONS.TRANSACTIONCURRENCYID,
GIFTAIDDISTRIBUTIONS.BASEEXCHANGERATEID,
GIFTAIDDISTRIBUTIONS.ORGANIZATIONAMOUNT,
GIFTAIDDISTRIBUTIONS.ORGANIZATIONEXCHANGERATEID
from
dbo.UFN_REVENUESPLITGIFTAID_GETGLDISTRIBUTION_FROMITEMLISTXML(@GLDISTRIBUTION) GIFTAIDDISTRIBUTIONS
-- Insert rows in GLTRANSACTION table
insert into dbo.GLTRANSACTION(ID, TRANSACTIONTYPECODE, ACCOUNT, AMOUNT, PROJECT, REFERENCE, POSTDATE, JOURNAL, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED, GLACCOUNTID,
BASECURRENCYID, TRANSACTIONAMOUNT, TRANSACTIONCURRENCYID, BASEEXCHANGERATEID, ORGANIZATIONAMOUNT, ORGANIZATIONEXCHANGERATEID)
select
GLTRANSACTIONID,
TRANSACTIONTYPECODE,
ACCOUNT,
AMOUNT,
PROJECT,
REFERENCE,
@ADJUSTMENTPOSTDATE,
@JOURNAL,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE,
dbo.UFN_GLACCOUNT_GETIDFROMACCOUNTANDREVENUE(ACCOUNT, @REVENUEID),
BASECURRENCYID,
TRANSACTIONAMOUNT,
TRANSACTIONCURRENCYID,
BASEEXCHANGERATEID,
ORGANIZATIONAMOUNT,
ORGANIZATIONEXCHANGERATEID
from
@DISTRIBUTIONS;
insert into dbo.GIFTAIDGLDISTRIBUTION
(ID,REVENUESPLITGIFTAIDID,REVENUEID,GLTRANSACTIONID,GLPAYMENTMETHODREVENUETYPEMAPPINGID,PROJECT,REFERENCE,AMOUNT,ACCOUNT,TRANSACTIONTYPECODE,ADDEDBYID,CHANGEDBYID,DATEADDED,DATECHANGED,
BASECURRENCYID, TRANSACTIONAMOUNT, TRANSACTIONCURRENCYID, BASEEXCHANGERATEID, ORGANIZATIONAMOUNT, ORGANIZATIONEXCHANGERATEID)
select
newid(),
@ID,
@REVENUEID,
GLTRANSACTIONID,
GLPAYMENTMETHODREVENUETYPEMAPPINGID,
PROJECT,
REFERENCE,
AMOUNT,
ACCOUNT,
TRANSACTIONTYPECODE,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE,
BASECURRENCYID,
TRANSACTIONAMOUNT,
TRANSACTIONCURRENCYID,
BASEEXCHANGERATEID,
ORGANIZATIONAMOUNT,
ORGANIZATIONEXCHANGERATEID
from
@DISTRIBUTIONS;
end
end
end try
begin catch
exec dbo.USP_RAISE_ERROR
return 1
end catch
return 0;