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;