USP_DATAFORMTEMPLATE_EDIT_REVENUEGLDISTRIBUTIONADJUST
The save procedure used by the edit dataform template "Posted Revenue GL Distribution Edit 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 | Revenue GL distribution |
@ADJUSTMENTDATE | datetime | IN | Adjusted Date |
@ADJUSTMENTPOSTDATE | datetime | IN | Adjusted Post Date |
@ADJUSTMENTREASON | nvarchar(300) | IN | Adjustment reason |
@CHANGEAGENTID | uniqueidentifier | IN | Input parameter indicating the ID of the change agent invoking the procedure. |
Definition
Copy
CREATE procedure dbo.USP_DATAFORMTEMPLATE_EDIT_REVENUEGLDISTRIBUTIONADJUST
(
@ID uniqueidentifier,
@GLDISTRIBUTION xml,
@ADJUSTMENTDATE datetime,
@ADJUSTMENTPOSTDATE datetime,
@ADJUSTMENTREASON nvarchar(300),
@CHANGEAGENTID uniqueidentifier = null
)
as
begin try
set nocount on;
declare @ADJUSTMENTID uniqueidentifier;
declare @PAYMENTMETHODCODE tinyint;
declare @ADJUST bit;
declare @ADJUSTMENTEXISTS bit;
set @ADJUST = 0
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;
if (dbo.UFN_GLDISTRIBUTION_DEBITSEQUALCREDITS(@GLDISTRIBUTION) = 0)
raiserror('The sum of the debit accounts must equal the sum of the credit accounts.', 13, 1)
--if (dbo.UFN_GLDISTRIBUTION_ACCOUNTEXISTS(@GLDISTRIBUTION) = 0)
-- raiserror('One or more of the edited accounts do not exist.', 13, 1)
if (dbo.UFN_GLDISTRIBUTION_ACCOUNTEXISTS_2(@GLDISTRIBUTION,@ID) = 0)
raiserror('One or more of the edited accounts do not exist.', 13, 1)
declare @CHANGEDATE datetime;
set @CHANGEDATE = getdate();
select top 1
@PAYMENTMETHODCODE = PAYMENTMETHODCODE
from dbo.REVENUEPAYMENTMETHOD where REVENUEID = @ID;
/* Already adjusted */
if (select COUNT(ADJUSTMENT.ID)
from dbo.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_CHECKDETAIL_DISTRIBUTIONCHANGED(@ID, @GLDISTRIBUTION)
/* If there was a change to GL related data log an adjustment for each revenue in the transaction */
if @ADJUST = 1
begin
-- update the payment information for each revenue record in the transaction
set @ADJUSTMENTID = null;
exec dbo.USP_SAVE_ADJUSTMENT @ID, @ADJUSTMENTID output, @CHANGEAGENTID, @CHANGEDATE, @ADJUSTMENTDATE, @ADJUSTMENTPOSTDATE, @ADJUSTMENTREASON;
end
-- If an unposted adjustment already exists, update the revenue GL distribution rows.
-- Otherwise, insert new revenue gl distribution rows using @GLDISTRIBUTION.
if @ADJUSTMENTEXISTS = 1
begin
exec dbo.USP_REVENUE_GETGLDISTRIBUTION_CUSTOMUPDATEFROMXML @ID, @GLDISTRIBUTION, @ADJUSTMENTPOSTDATE, @CHANGEAGENTID, @CHANGEDATE;
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
);
-- Get the user-defined GL distributions for the revenue record.
insert into @DISTRIBUTIONS(GLTRANSACTIONID, ACCOUNT, AMOUNT, PROJECT, REFERENCE, TRANSACTIONTYPECODE, GLPAYMENTMETHODREVENUETYPEMAPPINGID)
select
newid(),
REVDISTRIBUTIONS.ACCOUNT,
REVDISTRIBUTIONS.AMOUNT,
REVDISTRIBUTIONS.PROJECT,
REVDISTRIBUTIONS.REFERENCE,
REVDISTRIBUTIONS.TRANSACTIONTYPECODE,
REVDISTRIBUTIONS.GLPAYMENTMETHODREVENUETYPEMAPPINGID
from
dbo.UFN_REVENUE_GETGLDISTRIBUTION_FROMITEMLISTXML(@GLDISTRIBUTION) REVDISTRIBUTIONS
-- Insert rows in GLTRANSACTION table
insert into dbo.GLTRANSACTION(ID, TRANSACTIONTYPECODE, ACCOUNT, AMOUNT, PROJECT, REFERENCE, POSTDATE, JOURNAL, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
select
GLTRANSACTIONID,
TRANSACTIONTYPECODE,
ACCOUNT,
AMOUNT,
PROJECT,
REFERENCE,
@ADJUSTMENTPOSTDATE,
@JOURNAL,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CHANGEDATE,
@CHANGEDATE
from
@DISTRIBUTIONS;
insert into dbo.REVENUEGLDISTRIBUTION
(ID,REVENUEID,GLTRANSACTIONID,GLPAYMENTMETHODREVENUETYPEMAPPINGID,PROJECT,REFERENCE,AMOUNT,ACCOUNT,TRANSACTIONTYPECODE,ADDEDBYID,CHANGEDBYID,DATEADDED,DATECHANGED)
select
newid(),
@ID,
GLTRANSACTIONID,
GLPAYMENTMETHODREVENUETYPEMAPPINGID,
PROJECT,
REFERENCE,
AMOUNT,
ACCOUNT,
TRANSACTIONTYPECODE,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CHANGEDATE,
@CHANGEDATE
from
@DISTRIBUTIONS;
end
if @ADJUST = 1
exec dbo.USP_ADJUSTMENTHISTORY_REVENUE_SAVEHISTORY @ID, @CHANGEAGENTID, null, @ADJUSTMENTID;
end try
begin catch
exec dbo.USP_RAISE_ERROR;
return 1;
end catch
return 0;