USP_SAVE_AUCTIONPURCHASEADJUSTMENT
Stored procedure to log adjustments to auction purchases.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@REVENUEID | uniqueidentifier | IN | |
@ADJUSTMENTID | uniqueidentifier | INOUT | |
@CHANGEAGENTID | uniqueidentifier | IN | |
@CHANGEDATE | datetime | IN | |
@DATE | datetime | IN | |
@POSTDATE | datetime | IN | |
@ADJUSTMENTREASON | nvarchar(300) | IN | |
@ADJUSTMENTREASONCODEID | uniqueidentifier | IN | |
@POSTSTATUSCODE | tinyint | IN | |
@ADJUSTMENTCODE | tinyint | IN |
Definition
Copy
CREATE procedure dbo.USP_SAVE_AUCTIONPURCHASEADJUSTMENT
(
@REVENUEID uniqueidentifier = null,
@ADJUSTMENTID uniqueidentifier = null output,
@CHANGEAGENTID uniqueidentifier = null,
@CHANGEDATE datetime = null,
@DATE datetime = null,
@POSTDATE datetime = null,
@ADJUSTMENTREASON nvarchar(300) = '',
@ADJUSTMENTREASONCODEID uniqueidentifier = null,
@POSTSTATUSCODE tinyint = 1,
@ADJUSTMENTCODE tinyint = 0
)
with execute as owner
as
set nocount on;
declare @REVENUEPOSTDATE datetime;
declare @CONSTITUENTID uniqueidentifier;
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;
if @CHANGEDATE is null
set @CHANGEDATE = getdate();
select @ADJUSTMENTID = ID
from dbo.AUCTIONPURCHASEADJUSTMENT
where REVENUEID = @REVENUEID and POSTSTATUSCODE <> 0;
if @ADJUSTMENTID is null
set @ADJUSTMENTID = newid();
--JamesWill WI197067 2012-03-08 Ensure that the date used does not have a timestamp
if not @DATE is null
set @DATE = dbo.UFN_DATE_GETEARLIESTTIME(@DATE);
--Is the revenue posted?
if (select count(REVENUE.ID) from dbo.REVENUE
inner join dbo.REVENUEPOSTED on REVENUEPOSTED.ID = REVENUE.ID
where REVENUE.ID = @REVENUEID) = 0
raiserror('You cannot adjust an unposted auction purchase.', 13, 1)
--kwb Create FINANCIALTRANSACTIONLINEITEMADJUSTMENT records for original write-offs that will be adjusted
exec dbo.USP_CREATEINITIALADJUSTMENTHISTORY @REVENUEID, @CHANGEAGENTID
select @CONSTITUENTID = CONSTITUENTID from dbo.FINANCIALTRANSACTION where ID = @REVENUEID
--Update unposted adjustment if existing
if @ADJUSTMENTID is not null and exists(select 1 from dbo.FINANCIALTRANSACTIONLINEITEMADJUSTMENT where ID = @ADJUSTMENTID)
update dbo.FINANCIALTRANSACTIONLINEITEMADJUSTMENT set
ADJUSTMENTREASONCODEID = @ADJUSTMENTREASONCODEID
,REASON = @ADJUSTMENTREASON
,CONSTITUENTID = @CONSTITUENTID
,DATE = @DATE
,CHANGEDBYID = @CHANGEAGENTID
,DATECHANGED = @CHANGEDATE
where ID = @ADJUSTMENTID;
else if @ADJUSTMENTID is not null
insert into dbo.FINANCIALTRANSACTIONLINEITEMADJUSTMENT (
ID
,ADJUSTMENTREASONCODEID
,REASON
,CONSTITUENTID
,DATE
,ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
values (@ADJUSTMENTID
,@ADJUSTMENTREASONCODEID
,@ADJUSTMENTREASON
,@CONSTITUENTID
,@DATE
,@CHANGEAGENTID, @CHANGEAGENTID, @CHANGEDATE, @CHANGEDATE);
update dbo.AUCTIONPURCHASEADJUSTMENT
set DATE = @DATE,
POSTDATE = @POSTDATE,
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = @CHANGEDATE,
POSTSTATUSCODE = @POSTSTATUSCODE
where ID = @ADJUSTMENTID
if @@ROWCOUNT = 0
begin
--Log Adjustment if new
insert into dbo.AUCTIONPURCHASEADJUSTMENT(
ID,
REVENUEID,
PREVIOUSAMOUNT,
DATE,
POSTDATE,
POSTSTATUSCODE,
REASON,
REASONCODEID,
ADDEDBYID,
CHANGEDBYID,
DATEADDED,
DATECHANGED,
TRANSACTIONPREVIOUSAMOUNT,
ORGANIZATIONPREVIOUSAMOUNT,
TRANSACTIONCURRENCYID,
BASECURRENCYID,
BASEEXCHANGERATEID,
ORGANIZATIONEXCHANGERATEID)
select
@ADJUSTMENTID,
REVENUE.ID,
AMOUNT,
@DATE,
@POSTDATE,
@POSTSTATUSCODE,
@ADJUSTMENTREASON,
@ADJUSTMENTREASONCODEID,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CHANGEDATE,
@CHANGEDATE,
TRANSACTIONAMOUNT,
ORGANIZATIONAMOUNT,
TRANSACTIONCURRENCYID,
BASECURRENCYID,
BASEEXCHANGERATEID,
ORGANIZATIONEXCHANGERATEID
from dbo.REVENUE
where REVENUE.ID = @REVENUEID;
--Log reversals in the GLTRANSACTION table
exec dbo.USP_GLTRANSACTION_ADDAUCTIONPURCHASEREVERSALS @REVENUEID, @CHANGEAGENTID, @CHANGEDATE, @POSTDATE
end
else /*make sure @ADJUSTMENTID gets set to the correct value*/
begin
-- Update the post date on the GL transaction records
update dbo.JOURNALENTRY set
JOURNALENTRY.POSTDATE = @POSTDATE
,JOURNALENTRY.DATECHANGED = @CHANGEDATE
,JOURNALENTRY.CHANGEDBYID = @CHANGEAGENTID
from dbo.JOURNALENTRY as JE
inner join dbo.JOURNALENTRY_EXT as JEX on JE.ID = JEX.ID
inner join dbo.FINANCIALTRANSACTIONLINEITEM as FTLI on JE.FINANCIALTRANSACTIONLINEITEMID = FTLI.ID
where JEX.REVENUEPURCHASEID = @REVENUEID and JEX.OUTDATED = 0 and JEX.TABLENAMECODE = 2;
-- post date for unposted reversals should match the adjustment post date
update dbo.JOURNALENTRY set
JOURNALENTRY.POSTDATE = @POSTDATE
,JOURNALENTRY.DATECHANGED = @CHANGEDATE
,JOURNALENTRY.CHANGEDBYID = @CHANGEAGENTID
from dbo.JOURNALENTRY
inner join dbo.JOURNALENTRY_EXT as JEX on JOURNALENTRY.ID = JEX.ID
inner join dbo.JOURNALENTRY as JE_REV on JEX.REVERSEDGLTRANSACTIONID = JE_REV.ID
inner join dbo.FINANCIALTRANSACTIONLINEITEM as FTLI_REV on JE_REV.FINANCIALTRANSACTIONLINEITEMID = FTLI_REV.ID
inner join dbo.FINANCIALTRANSACTIONLINEITEM as FTLI on FTLI.ID = JOURNALENTRY.FINANCIALTRANSACTIONLINEITEMID
where JEX.REVENUEPURCHASEID = @REVENUEID and FTLI.POSTSTATUSCODE = 1 and JEX.TABLENAMECODE = 2;
end
declare @Error nvarchar(255) = ''
if @@ROWCOUNT > 0 and @POSTSTATUSCODE <> 2
set @Error = dbo.UFN_GLDISTRIBUTION_VALIDPOSTDATE(@POSTDATE)
if @Error <> ''
raiserror(@Error, 13, 1)