USP_DATAFORMTEMPLATE_EDIT_ADJUSTAUCTIONPURCHASEGLDISTRIBUTION
The save procedure used by the edit dataform template "Auction Purchase GL Distribution Adjust Data Form".
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | IN | The input ID parameter indicating the ID of the record being edited. |
@GLDISTRIBUTION | xml | IN | Auction purchase GL distribution |
@ADJUSTMENTDATE | datetime | IN | Adjustment date |
@ADJUSTMENTPOSTDATE | datetime | IN | Adjustment post date |
@ADJUSTMENTREASON | nvarchar(300) | IN | Adjustment details |
@CHANGEAGENTID | uniqueidentifier | IN | Input parameter indicating the ID of the change agent invoking the procedure. |
@ADJUSTMENTREASONCODEID | uniqueidentifier | IN | Adjustment reason |
Definition
Copy
CREATE procedure dbo.USP_DATAFORMTEMPLATE_EDIT_ADJUSTAUCTIONPURCHASEGLDISTRIBUTION
(
@ID uniqueidentifier,
@GLDISTRIBUTION xml,
@ADJUSTMENTDATE datetime,
@ADJUSTMENTPOSTDATE datetime,
@ADJUSTMENTREASON nvarchar(300),
@CHANGEAGENTID uniqueidentifier = null,
@ADJUSTMENTREASONCODEID uniqueidentifier
)
as
set nocount on;
declare @ADJUST bit;
set @ADJUST = 0;
declare @ADJUSTMENTEXISTS bit;
set @ADJUSTMENTEXISTS = 0;
declare @CHANGEDATE datetime;
set @CHANGEDATE = getdate();
declare @AUCTIONPURCHASEADJUSTMENTID uniqueidentifier;
begin try
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;
if (dbo.UFN_GLDISTRIBUTION_DEBITSEQUALCREDITS(@GLDISTRIBUTION) = 0)
begin
if (select sum(case transactiontypecode when 1 then -1 * AMOUNT else AMOUNT end)
from dbo.UFN_REVENUE_GETGLDISTRIBUTION_FROMITEMLISTXML(@GLDISTRIBUTION)) != 0
raiserror('BBERR_SUMOFCREDITSMUSTEQUALSUMOFDEBITS', 13, 1);
end
if (dbo.UFN_GLDISTRIBUTION_ACCOUNTEXISTS_2(@GLDISTRIBUTION,@ID) = 0)
raiserror('BBERR_ACCOUNTDOESNOTEXIST', 13, 1);
/* Already adjusted */
if (select COUNT(ADJUSTMENT.ID)
from dbo.AUCTIONPURCHASEADJUSTMENT as ADJUSTMENT
where REVENUEID = @ID and POSTSTATUSCODE = 1) > 0
begin
set @ADJUST = 1;
set @ADJUSTMENTEXISTS = 1;
end
/* Distributions Changed */
if @ADJUST = 0
set @ADJUST = dbo.UFN_AUCTIONPURCHASE_DISTRIBUTIONSCHANGED(@ID, @GLDISTRIBUTION)
/* If there was a change to GL related data log an adjustment */
if @ADJUST = 1
begin
if @ADJUSTMENTREASONCODEID is null
raiserror('BBERR_ADJUSTMENTREASONCODEIDREQUIRED', 13, 1)
set @AUCTIONPURCHASEADJUSTMENTID = null;
exec dbo.USP_SAVE_AUCTIONPURCHASEADJUSTMENT @ID, @AUCTIONPURCHASEADJUSTMENTID output, @CHANGEAGENTID, @CHANGEDATE,
@ADJUSTMENTDATE, @ADJUSTMENTPOSTDATE, @ADJUSTMENTREASON, @ADJUSTMENTREASONCODEID;
set @GLDISTRIBUTION = dbo.UFN_GLDISTRIBUTION_AUCTIONPURCHASE_CONVERTAMOUNTSINXML(@GLDISTRIBUTION,@ID);
-- If an unposted adjustment already exists, update the auction purchase GL distribution rows.
-- Otherwise, insert new auction purchase GL distribution rows using @GLDISTRIBUTION.
if @ADJUSTMENTEXISTS = 1
begin
exec dbo.USP_REVENUE_GETAUCTIONPURCHASEGLDISTRIBUTION_CUSTOMUPDATEFROMXML_2 @ID, @GLDISTRIBUTION, @ADJUSTMENTPOSTDATE, @CHANGEAGENTID;
end
else
begin
declare @JOURNAL nvarchar(50);
set @JOURNAL = 'Blackbaud Enterprise';
set @CHANGEDATE = getdate();
declare @DISTRIBUTIONS table(
GLTRANSACTIONID uniqueidentifier,
ACCOUNT nvarchar(100),
AMOUNT money,
PROJECT nvarchar(100),
REFERENCE nvarchar(255),
TRANSACTIONTYPECODE tinyint,
GLPAYMENTMETHODREVENUETYPEMAPPINGID uniqueidentifier,
ORGANIZATIONAMOUNT money,
BASECURRENCYID uniqueidentifier,
TRANSACTIONAMOUNT money,
TRANSACTIONCURRENCYID uniqueidentifier,
BASEEXCHANGERATEID uniqueidentifier,
ORGANIZATIONEXCHANGERATEID uniqueidentifier,
REVENUESPLITID uniqueidentifier
);
-- Get the user-defined GL distributions
insert into @DISTRIBUTIONS(GLTRANSACTIONID, ACCOUNT, AMOUNT, PROJECT, REFERENCE, TRANSACTIONTYPECODE, GLPAYMENTMETHODREVENUETYPEMAPPINGID, ORGANIZATIONAMOUNT, BASECURRENCYID, TRANSACTIONAMOUNT, TRANSACTIONCURRENCYID, BASEEXCHANGERATEID, ORGANIZATIONEXCHANGERATEID, REVENUESPLITID)
select
newid(),
AUCTIONPURCHASEDISTRIBUTIONS.ACCOUNT,
AUCTIONPURCHASEDISTRIBUTIONS.AMOUNT,
AUCTIONPURCHASEDISTRIBUTIONS.PROJECT,
AUCTIONPURCHASEDISTRIBUTIONS.REFERENCE,
AUCTIONPURCHASEDISTRIBUTIONS.TRANSACTIONTYPECODE,
AUCTIONPURCHASEDISTRIBUTIONS.GLPAYMENTMETHODREVENUETYPEMAPPINGID,
AUCTIONPURCHASEDISTRIBUTIONS.ORGANIZATIONAMOUNT,
AUCTIONPURCHASEDISTRIBUTIONS.BASECURRENCYID,
AUCTIONPURCHASEDISTRIBUTIONS.TRANSACTIONAMOUNT,
AUCTIONPURCHASEDISTRIBUTIONS.TRANSACTIONCURRENCYID,
AUCTIONPURCHASEDISTRIBUTIONS.BASEEXCHANGERATEID,
AUCTIONPURCHASEDISTRIBUTIONS.ORGANIZATIONEXCHANGERATEID,
isnull(LI.REVERSEDLINEITEMID, LI.ID)
from
dbo.UFN_REVENUE_GETAUCTIONPURCHASEGLDISTRIBUTION_FROMITEMLISTXML(@GLDISTRIBUTION) AUCTIONPURCHASEDISTRIBUTIONS
inner join dbo.JOURNALENTRY JE on JE.ID = AUCTIONPURCHASEDISTRIBUTIONS.ID
inner join dbo.FINANCIALTRANSACTIONLINEITEM LI on LI.ID = JE.FINANCIALTRANSACTIONLINEITEMID
--Change to FTM. First change is just do a single insert into JournalEntry
insert into dbo.JOURNALENTRY (ID, FINANCIALTRANSACTIONLINEITEMID, TRANSACTIONTYPECODE, BASEAMOUNT, COMMENT,
POSTDATE, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED, GLACCOUNTID,
ORGAMOUNT, TRANSACTIONAMOUNT, TRANSACTIONCURRENCYID, TYPECODE, SUBLEDGERTYPECODE)
select GLTRANSACTIONID, REVENUESPLITID, TRANSACTIONTYPECODE, AMOUNT, REFERENCE,
@ADJUSTMENTPOSTDATE, @CHANGEAGENTID, @CHANGEAGENTID, @CHANGEDATE, @CHANGEDATE, dbo.UFN_GLACCOUNT_GETIDFROMACCOUNTANDREVENUE([ACCOUNT],@ID),
ORGANIZATIONAMOUNT, TRANSACTIONAMOUNT, TRANSACTIONCURRENCYID, 0, TRANSACTIONTYPECODE
from @DISTRIBUTIONS
insert into dbo.JOURNALENTRY_EXT (ID, DISTRIBUTIONTABLEID, TABLENAMECODE, PROJECT, JOURNAL, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED, PRECALCPOSTSTATUSCODE, PRECALCORGANIZATIONEXCHANGERATEID,
PRECALCBASEEXCHANGERATEID, ACCOUNT, GLPAYMENTMETHODREVENUETYPEMAPPINGID, REVENUEPURCHASEID)
select GLTRANSACTIONID,GLTRANSACTIONID,2,PROJECT, @JOURNAL, @CHANGEAGENTID, @CHANGEAGENTID, @CHANGEDATE, @CHANGEDATE, 1, ORGANIZATIONEXCHANGERATEID,
BASEEXCHANGERATEID, ACCOUNT, GLPAYMENTMETHODREVENUETYPEMAPPINGID, @ID
from @DISTRIBUTIONS
end
end
update LI set
LI.FINANCIALTRANSACTIONLINEITEMADJUSTMENTID = @AUCTIONPURCHASEADJUSTMENTID
from
dbo.FINANCIALTRANSACTION FT
join dbo.FINANCIALTRANSACTIONLINEITEM LI on LI.FINANCIALTRANSACTIONID = FT.ID
where
FT.ID = @ID
and LI.DELETEDON is null
and LI.POSTSTATUSCODE <> 2
and LI.FINANCIALTRANSACTIONLINEITEMADJUSTMENTID is null
end try
begin catch
exec dbo.USP_RAISE_ERROR;
return 1;
end catch
return 0;