USP_SAVE_GIFTINKINDSALEADJUSTMENT
Stored procedure to log adjustments to sold gift-in-kind.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@GIFTINKINDSALEID | uniqueidentifier | IN | |
@GIFTINKINDSALEADJUSTMENTID | uniqueidentifier | INOUT | |
@CHANGEAGENTID | uniqueidentifier | IN | |
@CHANGEDATE | datetime | IN | |
@DATE | datetime | IN | |
@POSTDATE | datetime | IN | |
@ADJUSTMENTREASON | nvarchar(300) | IN | |
@ADJUSTMENTREASONCODEID | uniqueidentifier | IN | |
@POSTSTATUSCODE | tinyint | IN |
Definition
Copy
CREATE procedure dbo.USP_SAVE_GIFTINKINDSALEADJUSTMENT
(
@GIFTINKINDSALEID uniqueidentifier = null,
@GIFTINKINDSALEADJUSTMENTID uniqueidentifier = null output,
@CHANGEAGENTID uniqueidentifier = null,
@CHANGEDATE datetime = null,
@DATE datetime = null,
@POSTDATE datetime = null,
@ADJUSTMENTREASON nvarchar(300) = null,
@ADJUSTMENTREASONCODEID uniqueidentifier = null,
@POSTSTATUSCODE tinyint = 1
)
with execute as owner
as
/*Call this procedure before making changes to the gift-in-kind detail tables.*/
set nocount on;
declare @GIFTINKINDPAYMENTMETHODDETAILPOSTDATE datetime;
--Is the gift-in-kind detail posted?
if not exists (select ID from dbo.GIFTINKINDSALE where ID = @GIFTINKINDSALEID and SALEPOSTSTATUSCODE = 0)
raiserror('You cannot adjust an unposted sold gift-in-kind', 13, 1)
--kwb Create FINANCIALTRANSACTIONLINEITEMADJUSTMENT records for original write-offs that will be adjusted
exec dbo.USP_CREATEINITIALADJUSTMENTHISTORY @GIFTINKINDSALEID, @CHANGEAGENTID
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;
if @CHANGEDATE is null
set @CHANGEDATE = GetDate();
--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);
--Update unposted adjustment if existing
select @GIFTINKINDSALEADJUSTMENTID = ID
from dbo.GIFTINKINDSALEADJUSTMENT
where GIFTINKINDSALEID = @GIFTINKINDSALEID and POSTSTATUSCODE <> 0;
if @GIFTINKINDSALEADJUSTMENTID is not null and exists(select 1 from dbo.FINANCIALTRANSACTIONLINEITEMADJUSTMENT where ID = @GIFTINKINDSALEADJUSTMENTID)
update dbo.FINANCIALTRANSACTIONLINEITEMADJUSTMENT set
ADJUSTMENTREASONCODEID = @ADJUSTMENTREASONCODEID
,REASON = @ADJUSTMENTREASON
,DATE = @DATE
,CHANGEDBYID = @CHANGEAGENTID
,DATECHANGED = @CHANGEDATE
where ID = @GIFTINKINDSALEADJUSTMENTID;
else if @GIFTINKINDSALEADJUSTMENTID is not null
insert into dbo.FINANCIALTRANSACTIONLINEITEMADJUSTMENT (
ID
,ADJUSTMENTREASONCODEID
,REASON
,DATE
,ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
values(
@GIFTINKINDSALEADJUSTMENTID
,@ADJUSTMENTREASONCODEID
,@ADJUSTMENTREASON
,@DATE
,@CHANGEAGENTID, @CHANGEAGENTID, @CHANGEDATE, @CHANGEDATE);
update dbo.GIFTINKINDSALEADJUSTMENT
set DATE = @DATE,
POSTDATE = @POSTDATE,
REASON = @ADJUSTMENTREASON,
REASONCODEID = @ADJUSTMENTREASONCODEID,
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = @CHANGEDATE,
POSTSTATUSCODE = @POSTSTATUSCODE
where ID = @GIFTINKINDSALEADJUSTMENTID;
if @@ROWCOUNT = 0
begin
set @GIFTINKINDSALEADJUSTMENTID = newid();
--Log Adjustment if new
insert into
dbo.GIFTINKINDSALEADJUSTMENT
(
ID,
GIFTINKINDSALEID,
PREVIOUSAMOUNT,
DATE,
POSTDATE,
POSTSTATUSCODE,
REASON,
REASONCODEID,
TRANSACTIONPREVIOUSAMOUNT,
ORGANIZATIONPREVIOUSAMOUNT,
BASECURRENCYID,
ORGANIZATIONEXCHANGERATEID,
TRANSACTIONCURRENCYID,
BASEEXCHANGERATEID,
ADDEDBYID,
CHANGEDBYID,
DATEADDED,
DATECHANGED
)
select
@GIFTINKINDSALEADJUSTMENTID,
GIFTINKINDSALE.ID,
GIFTINKINDSALE.SALEAMOUNT,
@DATE,
@POSTDATE,
@POSTSTATUSCODE,
@ADJUSTMENTREASON,
@ADJUSTMENTREASONCODEID,
GIFTINKINDSALE.TRANSACTIONSALEAMOUNT,
GIFTINKINDSALE.ORGANIZATIONSALEAMOUNT,
GIFTINKINDSALE.BASECURRENCYID,
GIFTINKINDSALE.ORGANIZATIONEXCHANGERATEID,
GIFTINKINDSALE.TRANSACTIONCURRENCYID,
GIFTINKINDSALE.BASEEXCHANGERATEID,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CHANGEDATE,
@CHANGEDATE
from
dbo.GIFTINKINDSALE
where
GIFTINKINDSALE.ID = @GIFTINKINDSALEID;
insert into dbo.FINANCIALTRANSACTIONLINEITEMADJUSTMENT (
ID
,ADJUSTMENTREASONCODEID
,REASON
,DATE
,ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
values(
@GIFTINKINDSALEADJUSTMENTID
,@ADJUSTMENTREASONCODEID
,@ADJUSTMENTREASON
,@DATE
,@CHANGEAGENTID, @CHANGEAGENTID, @CHANGEDATE, @CHANGEDATE);
--Save the snapshot before deleting the GL information
exec dbo.USP_ADJUSTMENTHISTORY_GIFTINKIND_SAVESNAPSHOT @GIFTINKINDSALEADJUSTMENTID, @CHANGEAGENTID;
--Log reversals in the GLTRANSACTION table
exec dbo.USP_GLTRANSACTION_ADDGIFTINKINDSALEREVERSALS @GIFTINKINDSALEID, @CHANGEAGENTID, @CHANGEDATE, @POSTDATE;
end
else /*make sure @GIFTINKINDSALEADJUSTMENTID gets set to the correct value */
begin
-- Update the post date on the GL transaction records
update
dbo.GLTRANSACTION
set
GLTRANSACTION.POSTDATE = @POSTDATE,
GLTRANSACTION.DATECHANGED = @CHANGEDATE,
GLTRANSACTION.CHANGEDBYID = @CHANGEAGENTID
where GLTRANSACTION.ID in (select GLTRANSACTION.ID
from
dbo.GLTRANSACTION
inner join
dbo.GIFTINKINDSALEGLDISTRIBUTION on GLTRANSACTION.ID = GIFTINKINDSALEGLDISTRIBUTION.GLTRANSACTIONID
where
GIFTINKINDSALEGLDISTRIBUTION.GIFTINKINDSALEID = @GIFTINKINDSALEID and GIFTINKINDSALEGLDISTRIBUTION.OUTDATED = 0);
-- post date for unposted reversal should match the adjustment post date
update
dbo.GLTRANSACTION
set
GLTRANSACTION.POSTDATE = @POSTDATE,
GLTRANSACTION.DATECHANGED = @CHANGEDATE,
GLTRANSACTION.CHANGEDBYID = @CHANGEAGENTID,
GLTRANSACTION.POSTSTATUSCODE = @POSTSTATUSCODE
where GLTRANSACTION.ID in (select GLTRANSACTION.ID
from
dbo.GLTRANSACTION
inner join
dbo.GIFTINKINDSALEGLDISTRIBUTION on GLTRANSACTION.REVERSEDGLTRANSACTIONID = GIFTINKINDSALEGLDISTRIBUTION.GLTRANSACTIONID
where
GIFTINKINDSALEGLDISTRIBUTION.GIFTINKINDSALEID = @GIFTINKINDSALEID and GLTRANSACTION.POSTSTATUSCODE > 0);
--Save the snapshot before deleting the GL information
exec dbo.USP_ADJUSTMENTHISTORY_GIFTINKIND_SAVESNAPSHOT @GIFTINKINDSALEADJUSTMENTID, @CHANGEAGENTID;
end
update dbo.FINANCIALTRANSACTIONLINEITEM set
FINANCIALTRANSACTIONLINEITEMADJUSTMENTID = @GIFTINKINDSALEADJUSTMENTID
,CHANGEDBYID = @CHANGEAGENTID
,DATECHANGED = @CHANGEDATE
where FINANCIALTRANSACTIONID = @GIFTINKINDSALEID and POSTSTATUSCODE = 1;
declare @Error nvarchar(255) = ''
if @@ROWCOUNT > 0 and @POSTSTATUSCODE <> 2
set @Error = dbo.UFN_GLDISTRIBUTION_VALIDPOSTDATE(@POSTDATE)
if @Error <> ''
raiserror(@Error, 13, 1)