USP_RECORDOPERATION_GIFTINKINDSELLUNDO
Executes the "Sell Gift-in-Kind: Undo" record operation.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | IN | Input parameter indicating the ID of the record being updated. |
@CHANGEAGENTID | uniqueidentifier | IN | Input parameter indicating the ID of the change agent invoking the update. |
Definition
Copy
CREATE procedure dbo.USP_RECORDOPERATION_GIFTINKINDSELLUNDO
(
@ID uniqueidentifier,
@CHANGEAGENTID uniqueidentifier
)
as begin
declare @ADJUSTMENTHISTORYGIFTINKINDID uniqueidentifier;
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;
declare @CURRENTDATE datetime;
set @CURRENTDATE = getdate();
begin try
-- Remove the most recent gift-in-kind sale
declare @GIFTINKINDSALETODELETE uniqueidentifier
select top 1 @GIFTINKINDSALETODELETE = ID
from dbo.GIFTINKINDSALE where GIFTINKINDPAYMENTMETHODDETAILID = @ID
order by SALEDATE desc, DATEADDED desc
if (select SALEPOSTSTATUSCODE from dbo.GIFTINKINDSALE where ID = @GIFTINKINDSALETODELETE) = 0
exec dbo.USP_ADJUSTMENTHISTORY_GIFTINKIND_FIXFORDELETE @ID, 1, @CHANGEAGENTID, @CURRENTDATE, @ADJUSTMENTHISTORYGIFTINKINDID output, @GIFTINKINDSALETODELETE;
/* If gift-in-kind details have been posted but not already adjusted */
if exists (select 1 from dbo.GIFTINKINDSALE where GIFTINKINDSALE.ID = @GIFTINKINDSALETODELETE and GIFTINKINDSALE.SALEPOSTSTATUSCODE = 0)
and not exists (select 1 from dbo.GIFTINKINDSALEADJUSTMENT where GIFTINKINDSALEID = @GIFTINKINDSALETODELETE and POSTSTATUSCODE = 1)
begin
declare @POSTDATE datetime;
declare @ERRORMESSAGE nvarchar(255);
select top 1 @POSTDATE = POSTDATE from dbo.GIFTINKINDSALEADJUSTMENT where GIFTINKINDSALEID = @GIFTINKINDSALETODELETE and POSTSTATUSCODE = 0 order by DATEADDED desc;
if @POSTDATE is null
select @POSTDATE = SALEPOSTDATE from dbo.GIFTINKINDSALE where ID = @GIFTINKINDSALETODELETE;
set @ERRORMESSAGE = dbo.UFN_GLDISTRIBUTION_VALIDPOSTDATE(@POSTDATE);
if @ERRORMESSAGE <> ''
raiserror(@ERRORMESSAGE, 13, 1);
--Log reversals in the GLTRANSACTION table
exec dbo.USP_GLTRANSACTION_ADDGIFTINKINDSALEREVERSALS @GIFTINKINDSALETODELETE, @CHANGEAGENTID, @CURRENTDATE, @POSTDATE;
end
else --Update the post date of the existing gift-in-kind detail reversal rows to today's date
begin
update dbo.GLTRANSACTION
set
POSTDATE = dbo.UFN_DATE_GETEARLIESTTIME(@CURRENTDATE),
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = @CURRENTDATE
where ID in (
select
REVERSAL.ID
from
dbo.GIFTINKINDSALEGLDISTRIBUTION
inner join
dbo.GLTRANSACTION on GIFTINKINDSALEGLDISTRIBUTION.GLTRANSACTIONID = GLTRANSACTION.ID
inner join
dbo.GLTRANSACTION REVERSAL on GLTRANSACTION.ID = REVERSAL.REVERSEDGLTRANSACTIONID
where
GIFTINKINDSALEGLDISTRIBUTION.GIFTINKINDSALEID = @GIFTINKINDSALETODELETE
and
REVERSAL.POSTSTATUSCODE = 1);
end
--Update the new ADJUSTMENTHISTORYGIFTINKIND record with one of the newly created GLTRANSACTION reversal IDs
update dbo.ADJUSTMENTHISTORYGIFTINKIND
set GLTRANSACTIONID = (
select top 1 REVERSAL.ID
from dbo.GIFTINKINDSALEGLDISTRIBUTION
inner join dbo.GLTRANSACTION on GIFTINKINDSALEGLDISTRIBUTION.GLTRANSACTIONID = GLTRANSACTION.ID
inner join dbo.GLTRANSACTION REVERSAL on GLTRANSACTION.ID = REVERSAL.REVERSEDGLTRANSACTIONID
where GIFTINKINDSALEGLDISTRIBUTION.GIFTINKINDSALEID = @GIFTINKINDSALETODELETE
order by REVERSAL.DATEADDED desc)
where ID = @ADJUSTMENTHISTORYGIFTINKINDID;
--Cache CONTEXT INFO
declare @contextCache varbinary(128);
set @contextCache = CONTEXT_INFO();
if not @CHANGEAGENTID is null
set CONTEXT_INFO @CHANGEAGENTID;
delete from dbo.GIFTINKINDSALEGLDISTRIBUTION where GIFTINKINDSALEID = @GIFTINKINDSALETODELETE and OUTDATED = 0;
--reset CONTEXT_INFO to previous value
if not @contextCache is null
set CONTEXT_INFO @contextCache;
if @GIFTINKINDSALETODELETE is not null
begin
update FT
set DELETEDON = @CURRENTDATE
from
dbo.FINANCIALTRANSACTION FT
where FT.ID = @GIFTINKINDSALETODELETE
update LI
set DELETEDON = null
from
dbo.FINANCIALTRANSACTION FT
inner join dbo.FINANCIALTRANSACTIONLINEITEM LI on LI.FINANCIALTRANSACTIONID = FT.ID
where FT.ID = @GIFTINKINDSALETODELETE
and LI.TYPECODE = 1
delete from dbo.FINANCIALTRANSACTION
where POSTSTATUSCODE = 1 and ID = @GIFTINKINDSALETODELETE
end
end try
begin catch
exec dbo.USP_RAISE_ERROR;
return 1;
end catch
return 0;
end