USP_AMPROIMPORT_COMMITAUCTIONITEM
Commits an auction item from an AuctionMaestro Pro import batch.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@LINKID | uniqueidentifier | INOUT | |
@EVENTAUCTIONID | uniqueidentifier | IN | |
@BATCHNUMBER | nvarchar(100) | IN | |
@BATCHROWID | uniqueidentifier | IN | |
@NAME | nvarchar(100) | IN | |
@DESCRIPTION | nvarchar(255) | IN | |
@DONATIONDATE | datetime | IN | |
@EXPIRATIONDATE | datetime | IN | |
@CATEGORYID | uniqueidentifier | IN | |
@SUBCATEGORYID | uniqueidentifier | IN | |
@VALUE | money | IN | |
@MINIMUMBID | money | IN | |
@DONORID | uniqueidentifier | IN | |
@ADJUSTMENTDATE | datetime | IN | |
@ADJUSTMENTPOSTDATE | datetime | IN | |
@ADJUSTMENTREASON | nvarchar(300) | IN | |
@ADJUSTMENTREASONCODEID | uniqueidentifier | IN | |
@CHANGEAGENTID | uniqueidentifier | IN | |
@CHANGEDATE | datetime | IN |
Definition
Copy
CREATE procedure dbo.USP_AMPROIMPORT_COMMITAUCTIONITEM
(
@LINKID uniqueidentifier = null output,
@EVENTAUCTIONID uniqueidentifier = null,
@BATCHNUMBER nvarchar(100) = null,
@BATCHROWID uniqueidentifier = null,
@NAME nvarchar(100) = '',
@DESCRIPTION nvarchar(255) = '',
@DONATIONDATE datetime = null,
@EXPIRATIONDATE datetime = null,
@CATEGORYID uniqueidentifier = null,
@SUBCATEGORYID uniqueidentifier = null,
@VALUE money = 0,
@MINIMUMBID money = null,
@DONORID uniqueidentifier = null,
@ADJUSTMENTDATE datetime = null,
@ADJUSTMENTPOSTDATE datetime = null,
@ADJUSTMENTREASON nvarchar(300) = null,
@ADJUSTMENTREASONCODEID uniqueidentifier = null,
@CHANGEAGENTID uniqueidentifier = null,
@CHANGEDATE datetime = null
)
as
set nocount on;
begin try
declare @EMPTYGUID uniqueidentifier = '00000000-0000-0000-0000-000000000000'
select top 1 @LINKID = ID from dbo.AUCTIONITEM where ID = @LINKID;
if @EVENTAUCTIONID = @EMPTYGUID
set @EVENTAUCTIONID = null;
if @BATCHROWID = @EMPTYGUID
set @BATCHROWID = null;
if @CATEGORYID = @EMPTYGUID
set @CATEGORYID = null;
if @SUBCATEGORYID = @EMPTYGUID
set @SUBCATEGORYID = null;
if @DONORID = @EMPTYGUID
set @DONORID = null;
if @ADJUSTMENTREASONCODEID = @EMPTYGUID
set @ADJUSTMENTREASONCODEID = null;
declare @TODAY datetime = getdate();
if @NAME is null
set @NAME = '';
if @DESCRIPTION is null
set @DESCRIPTION = '';
if @VALUE is null
set @VALUE = 0;
if @MINIMUMBID is null
set @MINIMUMBID = 0;
if @ADJUSTMENTREASON is null
set @ADJUSTMENTREASON = '';
declare @DESIGNATIONID uniqueidentifier;
declare @PDACCOUNTSYSTEMID uniqueidentifier;
select top 1
@DESIGNATIONID = NEWITEMDESIGNATIONID,
@PDACCOUNTSYSTEMID = PDACCOUNTSYSTEMID
from
dbo.AMPROIMPORTCONFIG
where
AMPROIMPORTCONFIG.ID = @EVENTAUCTIONID;
declare @BASECURRENCYID uniqueidentifier;
declare @TRANSACTIONCURRENCYID uniqueidentifier;
declare @BASEEXCHANGERATEID uniqueidentifier;
select
@BASECURRENCYID = CURRENCYSET.BASECURRENCYID
from
dbo.PDACCOUNTSYSTEM
inner join dbo.CURRENCYSET on CURRENCYSET.ID = PDACCOUNTSYSTEM.CURRENCYSETID
where
PDACCOUNTSYSTEM.ID = @PDACCOUNTSYSTEMID;
select
@TRANSACTIONCURRENCYID = EVENT.BASECURRENCYID
from
dbo.EVENT
where
EVENT.ID = @EVENTAUCTIONID;
if @LINKID is null
begin
set @LINKID = newid();
--TODO This should probably be a configuration option
select @BASEEXCHANGERATEID = dbo.UFN_CURRENCYEXCHANGERATE_GETLATEST(@TRANSACTIONCURRENCYID, @BASECURRENCYID, @DONATIONDATE, 1, null);
exec dbo.USP_AUCTIONITEM_ADD
@ID = @LINKID,
@CHANGEAGENTID = @CHANGEAGENTID,
@NAME = @NAME,
@AUCTIONITEMCATEGORYID = @CATEGORYID,
@AUCTIONITEMSUBCATEGORYID = @SUBCATEGORYID,
@DESCRIPTION = @DESCRIPTION,
@VALUE = @VALUE,
@MINIMUMBID = @MINIMUMBID,
@DONATIONDATE = @DONATIONDATE,
@EXPIRATIONDATE = @EXPIRATIONDATE,
@DONORID = @DONORID,
@EVENTAUCTIONID = @EVENTAUCTIONID,
@PACKAGEID = null,
@TYPECODE = 0,
@COPIEDFROMID = null,
@DESIGNATIONID = @DESIGNATIONID,
@ISANONYMOUS = 0,
@PDACCOUNTSYSTEMID = @PDACCOUNTSYSTEMID,
@BATCHNUMBER = @BATCHNUMBER,
@POSTDATE = @TODAY,
@POSTSTATUSCODE = 1,
@BASECURRENCYID = @BASECURRENCYID,
@TRANSACTIONCURRENCYID = @TRANSACTIONCURRENCYID,
@BASEEXCHANGERATEID = @BASEEXCHANGERATEID,
@EXCHANGERATE = null,
@CHANGEDATE = @CHANGEDATE;
update dbo.BATCHAMPROIMPORTPURCHASEDETAIL
set
PURCHASEDETAIL_ITEMID = @LINKID,
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = @CHANGEDATE
where
PURCHASEDETAIL_ITEMID = @BATCHROWID;
end
else
begin
declare @ADJUSTMENTID uniqueidentifier = null;
declare @ADJUST bit = 0;
declare @REVENUEAUCTIONDONATIONID uniqueidentifier = null;
declare @DONOTPOST bit = 0;
declare @PREVIOUSDONORID uniqueidentifier = null;
declare @ISANONYMOUS bit = 0;
declare @BASEVALUE money;
declare @BASEMINIMUMBID money;
declare @ORGANIZATIONVALUE money;
declare @ORGANIZATIONMINIMUMBID money;
declare @ORGANIZATIONCURRENCYID uniqueidentifier;
declare @ORGANIZATIONEXCHANGERATEID uniqueidentifier;
select @REVENUEAUCTIONDONATIONID = REVENUE.ID, @DONOTPOST = REVENUE.DONOTPOST, @PREVIOUSDONORID = REVENUE.CONSTITUENTID,
@ISANONYMOUS = REVENUE.GIVENANONYMOUSLY,
@BASEEXCHANGERATEID = @BASEEXCHANGERATEID
from dbo.AUCTIONITEM
inner join dbo.REVENUE on REVENUE.ID = AUCTIONITEM.REVENUEAUCTIONDONATIONID
where AUCTIONITEM.ID = @LINKID;
exec dbo.USP_CURRENCY_GETCURRENCYVALUES
@VALUE,
@DONATIONDATE,
@BASECURRENCYID,
@BASEEXCHANGERATEID,
@TRANSACTIONCURRENCYID output,
@BASEVALUE output,
@ORGANIZATIONCURRENCYID output,
@ORGANIZATIONVALUE output,
@ORGANIZATIONEXCHANGERATEID output,
1;
exec dbo.USP_CURRENCY_GETCURRENCYVALUES
@MINIMUMBID,
@DONATIONDATE,
@BASECURRENCYID,
@BASEEXCHANGERATEID,
@TRANSACTIONCURRENCYID output,
@BASEMINIMUMBID output,
@ORGANIZATIONCURRENCYID output,
@ORGANIZATIONMINIMUMBID output,
@ORGANIZATIONEXCHANGERATEID output,
1;
declare @ISPOSTED bit = 0;
if exists(select ID from dbo.REVENUEPOSTED where REVENUEPOSTED.ID = @REVENUEAUCTIONDONATIONID)
set @ISPOSTED = 1;
declare @CLEARGLDISTRIBUTION bit = 0;
if @DONOTPOST = 0 and
not exists ( select REVENUE.ID
from dbo.REVENUE
inner join dbo.REVENUESPLIT on REVENUE.ID = REVENUESPLIT.REVENUEID
where REVENUE.ID = @REVENUEAUCTIONDONATIONID
and REVENUE.TRANSACTIONAMOUNT = @VALUE
and REVENUE.AMOUNT = @BASEVALUE
and REVENUE.ORGANIZATIONEXCHANGERATEID = @ORGANIZATIONEXCHANGERATEID
and REVENUE.CONSTITUENTID = @DONORID
and REVENUE.DATE = @DONATIONDATE
)
begin
set @CLEARGLDISTRIBUTION = 1;
end
select
@ADJUST = 1
from
dbo.REVENUE
where
REVENUE.ID = @REVENUEAUCTIONDONATIONID
and @ISPOSTED = 1
and
(
REVENUE.AMOUNT <> @BASEVALUE
or REVENUE.TRANSACTIONAMOUNT <> @VALUE
or REVENUE.ORGANIZATIONEXCHANGERATEID <> @ORGANIZATIONEXCHANGERATEID
or REVENUE.DATE <> @DONATIONDATE
or REVENUE.CONSTITUENTID <> @DONORID
);
if @ADJUST = 1
begin
if @ADJUSTMENTDATE is null or @ADJUSTMENTPOSTDATE is null or @ADJUSTMENTREASONCODEID is null
begin
raiserror('BBERR_AUCTIONITEM_REQUIREDADJUSTMENTFIELDS', 13, 1);
end
exec dbo.USP_SAVE_ADJUSTMENT @REVENUEAUCTIONDONATIONID, @ADJUSTMENTID output, @CHANGEAGENTID, @CHANGEDATE, @ADJUSTMENTDATE,
@ADJUSTMENTPOSTDATE, @ADJUSTMENTREASON, default, @ADJUSTMENTREASONCODEID;
end
update dbo.FINANCIALTRANSACTION
set
FINANCIALTRANSACTION.CONSTITUENTID = @DONORID,
FINANCIALTRANSACTION.DATE = @DONATIONDATE,
FINANCIALTRANSACTION.TRANSACTIONAMOUNT = @VALUE,
FINANCIALTRANSACTION.ORGEXCHANGERATEID = @ORGANIZATIONEXCHANGERATEID,
FINANCIALTRANSACTION.ORGAMOUNT = @ORGANIZATIONVALUE,
FINANCIALTRANSACTION.BASEAMOUNT = @BASEVALUE,
FINANCIALTRANSACTION.BASEEXCHANGERATEID = @BASEEXCHANGERATEID,
FINANCIALTRANSACTION.CHANGEDBYID = @CHANGEAGENTID,
FINANCIALTRANSACTION.DATECHANGED = @CHANGEDATE
from
dbo.FINANCIALTRANSACTION
join dbo.REVENUE_EXT on FINANCIALTRANSACTION.ID = REVENUE_EXT.ID
where
FINANCIALTRANSACTION.ID = @REVENUEAUCTIONDONATIONID
and
(
FINANCIALTRANSACTION.CONSTITUENTID <> @DONORID
or FINANCIALTRANSACTION.DATE <> @DONATIONDATE
or FINANCIALTRANSACTION.TRANSACTIONAMOUNT <> @VALUE
or REVENUE_EXT.RECEIPTAMOUNT <> @VALUE
)
update dbo.REVENUE_EXT
set
REVENUE_EXT.RECEIPTAMOUNT = @VALUE
from
dbo.FINANCIALTRANSACTION
join dbo.REVENUE_EXT on FINANCIALTRANSACTION.ID = REVENUE_EXT.ID
where
REVENUE_EXT.ID = @REVENUEAUCTIONDONATIONID
and
(
FINANCIALTRANSACTION.CONSTITUENTID <> @DONORID
or FINANCIALTRANSACTION.DATE <> @DONATIONDATE
or REVENUE_EXT.RECEIPTAMOUNT <> @VALUE
)
update dbo.FINANCIALTRANSACTIONLINEITEM
set
FINANCIALTRANSACTIONLINEITEM.BASEAMOUNT = @BASEVALUE,
FINANCIALTRANSACTIONLINEITEM.TRANSACTIONAMOUNT = @VALUE,
FINANCIALTRANSACTIONLINEITEM.ORGAMOUNT = @ORGANIZATIONVALUE,
FINANCIALTRANSACTIONLINEITEM.CHANGEDBYID = @CHANGEAGENTID,
FINANCIALTRANSACTIONLINEITEM.DATECHANGED = @CHANGEDATE
where
FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID = @REVENUEAUCTIONDONATIONID
and FINANCIALTRANSACTIONLINEITEM.TRANSACTIONAMOUNT <> @VALUE;
update dbo.REVENUEPAYMENTMETHOD set
REVENUEPAYMENTMETHOD.AMOUNT = @BASEVALUE,
REVENUEPAYMENTMETHOD.CHANGEDBYID = @CHANGEAGENTID,
REVENUEPAYMENTMETHOD.DATECHANGED = @CHANGEDATE
where
REVENUEPAYMENTMETHOD.REVENUEID = @REVENUEAUCTIONDONATIONID
and REVENUEPAYMENTMETHOD.AMOUNT <> @BASEVALUE;
update dbo.AUCTIONITEM
set AUCTIONITEM.NAME = @NAME,
AUCTIONITEM.AUCTIONITEMCATEGORYID = @CATEGORYID,
AUCTIONITEM.AUCTIONITEMSUBCATEGORYID = @SUBCATEGORYID,
AUCTIONITEM.DESCRIPTION = @DESCRIPTION,
AUCTIONITEM.VALUE = @BASEVALUE,
AUCTIONITEM.MINIMUMBID = @BASEMINIMUMBID,
AUCTIONITEM.EXPIRATIONDATE = @EXPIRATIONDATE,
AUCTIONITEM.CHANGEDBYID = @CHANGEAGENTID,
AUCTIONITEM.DATECHANGED = @CHANGEDATE,
AUCTIONITEM.TRANSACTIONVALUE = @VALUE,
AUCTIONITEM.ORGANIZATIONVALUE = @ORGANIZATIONVALUE,
AUCTIONITEM.TRANSACTIONMINIMUMBID = @MINIMUMBID,
AUCTIONITEM.ORGANIZATIONMINIMUMBID = @ORGANIZATIONMINIMUMBID,
AUCTIONITEM.BASECURRENCYID = @BASECURRENCYID,
AUCTIONITEM.BASEEXCHANGERATEID = @BASEEXCHANGERATEID,
AUCTIONITEM.ORIGINTOORGANIZATIONEXCHANGERATEID = @ORGANIZATIONEXCHANGERATEID,
AUCTIONITEM.TRANSACTIONCURRENCYID = @TRANSACTIONCURRENCYID
where
AUCTIONITEM.ID = @LINKID
and
(
AUCTIONITEM.NAME <> @NAME
or AUCTIONITEM.AUCTIONITEMCATEGORYID <> @CATEGORYID
or AUCTIONITEM.AUCTIONITEMSUBCATEGORYID <> @SUBCATEGORYID
or AUCTIONITEM.DESCRIPTION <> @DESCRIPTION
or AUCTIONITEM.TRANSACTIONVALUE <> @VALUE
or AUCTIONITEM.TRANSACTIONMINIMUMBID <> @MINIMUMBID
or AUCTIONITEM.EXPIRATIONDATE <> @EXPIRATIONDATE
)
if @CLEARGLDISTRIBUTION = 1
begin
delete from dbo.REVENUEGLDISTRIBUTION where REVENUEID = @REVENUEAUCTIONDONATIONID and OUTDATED = 0;
if @DONOTPOST = 0
exec dbo.USP_SAVE_REVENUEGLDISTRIBUTION @REVENUEAUCTIONDONATIONID, @CHANGEAGENTID, @CHANGEDATE;
end
if @ADJUST = 1
exec dbo.USP_ADJUSTMENTHISTORY_REVENUE_SAVEHISTORY @REVENUEAUCTIONDONATIONID, @CHANGEAGENTID, @CHANGEDATE, @ADJUSTMENTID
if @PREVIOUSDONORID <> @DONORID
begin
-- Remove previous recognition credits
delete from dbo.REVENUERECOGNITION where REVENUESPLITID in (select ID from dbo.REVENUESPLIT where REVENUEID = @REVENUEAUCTIONDONATIONID)
-- Create the new default recognition credits
insert into dbo.REVENUERECOGNITION
(
REVENUESPLITID,
CONSTITUENTID,
AMOUNT,
EFFECTIVEDATE,
REVENUERECOGNITIONTYPECODEID,
ADDEDBYID,
CHANGEDBYID,
DATEADDED,
DATECHANGED,
BASECURRENCYID,
ORGANIZATIONAMOUNT,
ORGANIZATIONEXCHANGERATEID
)
select
REVENUESPLIT.ID,
RECOGNITIONS.CONSTITUENTID,
RECOGNITIONS.AMOUNT,
REVENUE.DATE,
RECOGNITIONS.REVENUERECOGNITIONTYPECODEID,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CHANGEDATE,
@CHANGEDATE,
@BASECURRENCYID,
case
when @BASECURRENCYID = @ORGANIZATIONCURRENCYID then
RECOGNITIONS.AMOUNT
else
dbo.UFN_AUCTIONPACKAGE_CONVERT_UNROUNDED(RECOGNITIONS.AMOUNT, @ORGANIZATIONEXCHANGERATEID)
end,
@ORGANIZATIONEXCHANGERATEID
from
dbo.REVENUE
inner join dbo.REVENUESPLIT on REVENUE.ID = REVENUESPLIT.REVENUEID
cross apply dbo.UFN_REVENUEDETAIL_GETDEFAULTRECOGNITIONS(@ISANONYMOUS, @DONORID, REVENUESPLIT.AMOUNT, REVENUE.DATE, null) as RECOGNITIONS
where
REVENUE.ID = @REVENUEAUCTIONDONATIONID
end
end
end try
begin catch
exec dbo.USP_RAISE_ERROR;
return 1;
end catch
return 0;