USP_DATAFORMTEMPLATE_EDIT_WRITEOFFGLDISTRIBUTIONADJUST_2
The save procedure used by the edit dataform template "Posted Write-off GL Distribution Edit Form 2".
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 | 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_WRITEOFFGLDISTRIBUTIONADJUST_2
(
@ID uniqueidentifier,
@GLDISTRIBUTION xml,
@ADJUSTMENTDATE datetime,
@ADJUSTMENTPOSTDATE datetime,
@ADJUSTMENTREASON nvarchar(300),
@CHANGEAGENTID uniqueidentifier = null,
@ADJUSTMENTREASONCODEID uniqueidentifier
)
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)
--if (dbo.UFN_GLDISTRIBUTION_ACCOUNTEXISTS(@GLDISTRIBUTION) = 0)
-- raiserror('One or more of the edited accounts do not exist.', 13, 1)
declare @REVID uniqueidentifier
select @REVID = REVENUEID from dbo.WRITEOFF 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 (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
begin
if @ADJUSTMENTREASONCODEID is null
raiserror('BBERR_ADJUSTMENTREASONCODEIDREQUIRED', 13, 1)
set @WRITEOFFADJUSTMENTID = null;
exec dbo.USP_SAVE_WRITEOFFADJUSTMENT @ID, @WRITEOFFADJUSTMENTID output, @CHANGEAGENTID, @CURRENTDATE,
@ADJUSTMENTDATE, @ADJUSTMENTPOSTDATE, @ADJUSTMENTREASON, @ADJUSTMENTREASONCODEID;
declare @TRANSACTIONCURRENCYID uniqueidentifier;
declare @BASECURRENCYID uniqueidentifier;
declare @BASEEXCHANGERATEID uniqueidentifier;
declare @ORGANIZATIONEXCHANGERATEID uniqueidentifier;
select top 1
@TRANSACTIONCURRENCYID = WRITEOFFSPLIT.TRANSACTIONCURRENCYID,
@BASECURRENCYID = WRITEOFFSPLIT.BASECURRENCYID,
@BASEEXCHANGERATEID = WRITEOFFSPLIT.BASEEXCHANGERATEID,
@ORGANIZATIONEXCHANGERATEID = WRITEOFFSPLIT.ORGANIZATIONEXCHANGERATEID
from dbo.WRITEOFFSPLIT
where WRITEOFFSPLIT.WRITEOFFID = @ID;
set @GLDISTRIBUTION = dbo.UFN_GLDISTRIBUTION_CONVERTAMOUNTSINXML(@GLDISTRIBUTION, @BASECURRENCYID, @ORGANIZATIONEXCHANGERATEID, @TRANSACTIONCURRENCYID, @BASEEXCHANGERATEID, @ORGANIZATIONEXCHANGERATEID, @BASEEXCHANGERATEID);
-- 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_2 @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,
ORGANIZATIONAMOUNT money,
BASECURRENCYID uniqueidentifier,
TRANSACTIONAMOUNT money,
TRANSACTIONCURRENCYID uniqueidentifier,
BASEEXCHANGERATEID uniqueidentifier,
ORGANIZATIONEXCHANGERATEID uniqueidentifier
,ID uniqueidentifier
,FINANCIALTRANSACTIONLINEITEMID uniqueidentifier
);
-- Get the user-defined GL distributions for the write-off record.
insert into @DISTRIBUTIONS(GLTRANSACTIONID, ACCOUNT, AMOUNT, PROJECT, REFERENCE, TRANSACTIONTYPECODE, POSTDATE, GLPAYMENTMETHODREVENUETYPEMAPPINGID, ORGANIZATIONAMOUNT, BASECURRENCYID, TRANSACTIONAMOUNT, TRANSACTIONCURRENCYID, BASEEXCHANGERATEID, ORGANIZATIONEXCHANGERATEID,ID,FINANCIALTRANSACTIONLINEITEMID)
select
newid(),
WRITEOFFDISTRIBUTION.ACCOUNT,
WRITEOFFDISTRIBUTION.AMOUNT,
WRITEOFFDISTRIBUTION.PROJECT,
WRITEOFFDISTRIBUTION.REFERENCE,
WRITEOFFDISTRIBUTION.TRANSACTIONTYPECODE,
@ADJUSTMENTPOSTDATE,
WRITEOFFDISTRIBUTION.GLPAYMENTMETHODREVENUETYPEMAPPINGID,
WRITEOFFDISTRIBUTION.ORGANIZATIONAMOUNT,
WRITEOFFDISTRIBUTION.BASECURRENCYID,
WRITEOFFDISTRIBUTION.TRANSACTIONAMOUNT,
WRITEOFFDISTRIBUTION.TRANSACTIONCURRENCYID,
WRITEOFFDISTRIBUTION.BASEEXCHANGERATEID,
WRITEOFFDISTRIBUTION.ORGANIZATIONEXCHANGERATEID
,WRITEOFFDISTRIBUTION.ID
,WRITEOFFDISTRIBUTION.FINANCIALTRANSACTIONLINEITEMID
from
dbo.UFN_REVENUE_GETWRITEOFFGLDISTRIBUTION_FROMITEMLISTXML(@GLDISTRIBUTION) WRITEOFFDISTRIBUTION
insert into dbo.JOURNALENTRY
(ID,
FINANCIALTRANSACTIONLINEITEMID,
TRANSACTIONTYPECODE,SUBLEDGERTYPECODE, TRANSACTIONAMOUNT, BASEAMOUNT,ORGAMOUNT,COMMENT,POSTDATE,GLACCOUNTID,SEQUENCE ,TYPECODE,TRANSACTIONCURRENCYID,ADDEDBYID,CHANGEDBYID,DATEADDED,DATECHANGED)
select
T1.GLTRANSACTIONID
,T1.FINANCIALTRANSACTIONLINEITEMID
,T1.TRANSACTIONTYPECODE
,T1.TRANSACTIONTYPECODE
,T1.TRANSACTIONAMOUNT
,T1.AMOUNT
,T1.ORGANIZATIONAMOUNT
,T1.REFERENCE
,T1.POSTDATE
,dbo.UFN_GLACCOUNT_GETIDFROMACCOUNTANDREVENUE([ACCOUNT],@REVID )
,case T1.TRANSACTIONTYPECODE when 0 then 1 else 2 end
,case when T1.TRANSACTIONCURRENCYID is null then 1 else 0 end
,T1.TRANSACTIONCURRENCYID
,@CHANGEAGENTID, @CHANGEAGENTID, getdate(), getdate()
from @DISTRIBUTIONS T1
insert into dbo.JOURNALENTRY_EXT
(ID,PROJECT,ACCOUNT,JOURNAL,TABLENAMECODE,
PRECALCORGANIZATIONEXCHANGERATEID,PRECALCBASEEXCHANGERATEID,ADDEDBYID,CHANGEDBYID,DATEADDED,DATECHANGED
,OUTDATED
,GLPAYMENTMETHODREVENUETYPEMAPPINGID
,DISTRIBUTIONTABLEID
,WRITEOFFID
,LOGICALREVENUEID)
select
GLTRANSACTIONID
,PROJECT
,ACCOUNT
,@JOURNAL
,12
,ORGANIZATIONEXCHANGERATEID
,BASEEXCHANGERATEID
,@CHANGEAGENTID, @CHANGEAGENTID, getdate(), getdate()
,0
,GLPAYMENTMETHODREVENUETYPEMAPPINGID
,ID
,@ID
,@REVENUEID
from @DISTRIBUTIONS
end
exec dbo.USP_ADJUSTMENTHISTORY_WRITEOFF_SAVEHISTORY @ID, @CHANGEAGENTID, null, @WRITEOFFADJUSTMENTID;
end
end try
begin catch
exec dbo.USP_RAISE_ERROR;
return 1;
end catch
return 0;