USP_DATAFORMTEMPLATE_EDIT_WRITEOFFGLDISTRIBUTIONADJUST
The save procedure used by the edit dataform template "Posted Write-off 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 | Write-off 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_WRITEOFFGLDISTRIBUTIONADJUST
(
@ID uniqueidentifier,
@GLDISTRIBUTION xml,
@ADJUSTMENTDATE datetime,
@ADJUSTMENTPOSTDATE datetime,
@ADJUSTMENTREASON nvarchar(300),
@CHANGEAGENTID uniqueidentifier = null
)
as
begin try
set nocount on;
declare @WRITEOFFADJUSTMENTID uniqueidentifier;
declare @ADJUST bit
set @ADJUST = 0
declare @ADJUSTMENTEXISTS bit;
set @ADJUSTMENTEXISTS = 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)
/* Already adjusted */
if (select COUNT(ADJUSTMENT.ID)
from dbo.WRITEOFFADJUSTMENT as ADJUSTMENT
where WRITEOFFID = @ID and POSTSTATUSCODE = 1) > 0
begin
set @ADJUST = 1;
set @ADJUSTMENTEXISTS = 1;
end
/* Distribution Changed */
if @ADJUST = 0
set @ADJUST = dbo.UFN_WRITEOFF_DISTRIBUTIONCHANGED(@ID, @GLDISTRIBUTION)
declare @CURRENTDATE datetime;
set @CURRENTDATE = getdate();
/* If there was a change to GL related data log an adjustment */
if @ADJUST = 1
exec dbo.USP_SAVE_WRITEOFFADJUSTMENT @ID, @WRITEOFFADJUSTMENTID output, @CHANGEAGENTID, @CURRENTDATE, @ADJUSTMENTDATE, @ADJUSTMENTPOSTDATE, @ADJUSTMENTREASON;
-- If an unposted adjustment already exists, update the write-off GL distribution rows.
-- Otherwise, insert new write-off gl distribution rows using @GLDISTRIBUTION.
if @ADJUSTMENTEXISTS = 1
begin
exec dbo.USP_REVENUE_GETWRITEOFFGLDISTRIBUTION_CUSTOMUPDATEFROMXML @ID, @GLDISTRIBUTION, @ADJUSTMENTPOSTDATE, @CHANGEAGENTID;
end
else
begin
declare @JOURNAL nvarchar(50);
set @JOURNAL = 'Blackbaud Enterprise';
declare @REVENUEID uniqueidentifier;
select @REVENUEID = REVENUEID from dbo.WRITEOFF where ID = @ID;
declare @DISTRIBUTIONS table(
GLTRANSACTIONID uniqueidentifier,
ACCOUNT nvarchar(100),
AMOUNT money,
PROJECT nvarchar(100),
REFERENCE nvarchar(255),
TRANSACTIONTYPECODE tinyint,
POSTDATE datetime,
GLPAYMENTMETHODREVENUETYPEMAPPINGID uniqueidentifier
);
-- Get the user-defined GL distributions for the write-off record.
insert into @DISTRIBUTIONS(GLTRANSACTIONID, ACCOUNT, AMOUNT, PROJECT, REFERENCE, TRANSACTIONTYPECODE, GLPAYMENTMETHODREVENUETYPEMAPPINGID)
select
newid(),
WRITEOFFDISTRIBUTION.ACCOUNT,
WRITEOFFDISTRIBUTION.AMOUNT,
WRITEOFFDISTRIBUTION.PROJECT,
WRITEOFFDISTRIBUTION.REFERENCE,
WRITEOFFDISTRIBUTION.TRANSACTIONTYPECODE,
WRITEOFFDISTRIBUTION.GLPAYMENTMETHODREVENUETYPEMAPPINGID
from
dbo.UFN_REVENUE_GETWRITEOFFGLDISTRIBUTION_FROMITEMLISTXML(@GLDISTRIBUTION) WRITEOFFDISTRIBUTION
-- 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,
@CURRENTDATE,
@CURRENTDATE
from
@DISTRIBUTIONS;
insert into dbo.WRITEOFFGLDISTRIBUTION
(ID,GLTRANSACTIONID,WRITEOFFID,REVENUEID,GLPAYMENTMETHODREVENUETYPEMAPPINGID,PROJECT,REFERENCE,AMOUNT,ACCOUNT,TRANSACTIONTYPECODE,ADDEDBYID,CHANGEDBYID,DATEADDED,DATECHANGED)
select
newid(),
GLTRANSACTIONID,
@ID,
@REVENUEID,
GLPAYMENTMETHODREVENUETYPEMAPPINGID,
PROJECT,
REFERENCE,
AMOUNT,
ACCOUNT,
TRANSACTIONTYPECODE,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
from
@DISTRIBUTIONS;
end
if @ADJUST = 1
exec dbo.USP_ADJUSTMENTHISTORY_WRITEOFF_SAVEHISTORY @ID, @CHANGEAGENTID, null, @WRITEOFFADJUSTMENTID;
end try
begin catch
exec dbo.USP_RAISE_ERROR;
return 1;
end catch
return 0;