USP_AMPROIMPORT_COMMITPURCHASEDETAIL

Creates or updates a purchase detail with data from AuctionMaestro Pro.

Parameters

Parameter Parameter Type Mode Description
@REVENUEID uniqueidentifier IN
@BIDDERNUMBER nvarchar(10) IN
@AMOUNT money IN
@TYPECODE tinyint IN
@EVENTAUCTIONID uniqueidentifier IN
@AUCTIONITEMID uniqueidentifier IN
@DONATIONDESIGNATIONID uniqueidentifier IN
@REGISTRANTID uniqueidentifier IN
@CHANGEAGENTID uniqueidentifier IN
@CHANGEDATE datetime IN

Definition

Copy


            CREATE procedure dbo.USP_AMPROIMPORT_COMMITPURCHASEDETAIL
            (
                @REVENUEID uniqueidentifier,
                @BIDDERNUMBER nvarchar(10),

                @AMOUNT money,
                @TYPECODE tinyint,    /* 1=Donation, 2=AuctionPurchase, 3=EventRegistration */

                @EVENTAUCTIONID uniqueidentifier,
                @AUCTIONITEMID uniqueidentifier,

                @DONATIONDESIGNATIONID uniqueidentifier,
                @REGISTRANTID uniqueidentifier,

                @CHANGEAGENTID uniqueidentifier,
                @CHANGEDATE datetime
            )
            as
            begin
                declare @REVENUESPLITID uniqueidentifier = newid();

                declare @PDACCOUNTSYSTEMID uniqueidentifier;

                declare @ORGANIZATIONCURRENCYID uniqueidentifier;
                set @ORGANIZATIONCURRENCYID = dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY();
                declare @ORGANIZATIONCURRENCYDECIMALDIGITS integer;
                select @ORGANIZATIONCURRENCYDECIMALDIGITS = CURRENCY.DECIMALDIGITS from dbo.CURRENCY where ID = @ORGANIZATIONCURRENCYID;

                select top 1 
                    @PDACCOUNTSYSTEMID = PDACCOUNTSYSTEMID
                from dbo.AMPROIMPORTCONFIG 
                where ID = @EVENTAUCTIONID;

                if @TYPECODE = 2
                begin
                    declare @ITEMDESIGNATIONID uniqueidentifier;
                    declare @AUCTIONITEMTYPECODE tinyint;
                    declare @AUCTIONITEMPDACCOUNTSYSTEMID uniqueidentifier;

                    --Get multi-currency values from revenue 

                    declare @BASECURRENCYID uniqueidentifier;
                    declare @TRANSACTIONCURRENCYID uniqueidentifier;
                    declare @TRANSACTIONAMOUNT money;
                    declare @BASEEXCHANGERATEID uniqueidentifier;
                    declare @ORGANIZATIONEXCHANGERATEID uniqueidentifier;
                    declare @REVENUEDATE datetime;
                    declare @BASECURRENCYDECIMALDIGITS integer;
                    declare @TRANSACTIONCURRENCYDECIMALDIGITS integer;
                    declare @TOTALREVENUETRANSACTIONAMOUNT money;
                    declare @TOTALREVENUEBASEAMOUNT money;
                    declare @TOTALREVENUEORGANIZATIONAMOUNT money;

                    if not exists(select 1 from dbo.AUCTIONITEM where AUCTIONITEM.ID = @AUCTIONITEMID)
                    begin
                        raiserror('BBERR_AUCTIONITEM_DOESNOTEXIST', 13, 1);
                    end

                    select
                        @BASECURRENCYID = REVENUE.BASECURRENCYID,
                        @TRANSACTIONCURRENCYID = REVENUE.TRANSACTIONCURRENCYID,
                        @BASEEXCHANGERATEID = REVENUE.BASEEXCHANGERATEID,
                        @ORGANIZATIONEXCHANGERATEID = REVENUE.ORGANIZATIONEXCHANGERATEID,
                        @REVENUEDATE = REVENUE.DATE,
                        @BASECURRENCYDECIMALDIGITS = BASE_CURRENCY.DECIMALDIGITS,
                        @TRANSACTIONCURRENCYDECIMALDIGITS = TRANSACTION_CURRENCY.DECIMALDIGITS,
                        @TOTALREVENUETRANSACTIONAMOUNT = REVENUE.TRANSACTIONAMOUNT,
                        @TOTALREVENUEBASEAMOUNT = REVENUE.AMOUNT,
                        @TOTALREVENUEORGANIZATIONAMOUNT = REVENUE.ORGANIZATIONAMOUNT
                    from 
                        dbo.REVENUE
                        left join dbo.CURRENCY BASE_CURRENCY on REVENUE.BASECURRENCYID = BASE_CURRENCY.ID
                        left join dbo.CURRENCY TRANSACTION_CURRENCY on REVENUE.TRANSACTIONCURRENCYID = TRANSACTION_CURRENCY.ID
                    where 
                        REVENUE.ID = @REVENUEID;

                    -- Convert the applied amount into base and organization amounts.

                    declare @BASEAMOUNT money;
                    declare @ORGANIZATIONAMOUNT money;

                    exec dbo.USP_CURRENCY_GETCURRENCYVALUESBYPROPORTION
                        @AMOUNT = @AMOUNT,
                        @TOTALAMOUNT = @TOTALREVENUETRANSACTIONAMOUNT,
                        @BASECURRENCYID = @BASECURRENCYID,
                        @TOTALBASEAMOUNT = @TOTALREVENUEBASEAMOUNT,
                        @BASECURRENCYDECIMALDIGITS = @BASECURRENCYDECIMALDIGITS,
                        @TRANSACTIONCURRENCYID = @TRANSACTIONCURRENCYID,
                        @BASEAMOUNT = @BASEAMOUNT output,
                        @ORGANIZATIONCURRENCYID = @ORGANIZATIONCURRENCYID,
                        @TOTALORGANIZATIONAMOUNT = @TOTALREVENUEORGANIZATIONAMOUNT,
                        @ORGANIZATIONCURRENCYDECIMALDIGITS = @ORGANIZATIONCURRENCYDECIMALDIGITS,
                        @ORGANIZATIONAMOUNT = @ORGANIZATIONAMOUNT output

                    select
                        @AUCTIONITEMTYPECODE = AUCTIONITEM.TYPECODE,
                        @ITEMDESIGNATIONID = REVENUESPLIT.DESIGNATIONID,
                        @AUCTIONITEMPDACCOUNTSYSTEMID = PDACCOUNTSYSTEMFORREVENUE.PDACCOUNTSYSTEMID
                    from dbo.AUCTIONITEM
                    left join dbo.REVENUESPLIT on REVENUESPLIT.REVENUEID = AUCTIONITEM.REVENUEAUCTIONDONATIONID
                    left join dbo.PDACCOUNTSYSTEMFORREVENUE on PDACCOUNTSYSTEMFORREVENUE.ID = AUCTIONITEM.REVENUEAUCTIONDONATIONID
                    where AUCTIONITEM.ID = @AUCTIONITEMID;

                    if @AUCTIONITEMTYPECODE = 0
                    begin
                        --Item


                        if (@AUCTIONITEMPDACCOUNTSYSTEMID is not null) and (@AUCTIONITEMPDACCOUNTSYSTEMID <> @PDACCOUNTSYSTEMID)
                            raiserror('BBERR_AUCTIONITEM_PAYMENT_ACCOUNTSYSTEMINVALID', 13, 1);

                        insert into dbo.REVENUESPLIT(ID, REVENUEID, DESIGNATIONID, AMOUNT, TYPECODE, APPLICATIONCODE, TRANSACTIONAMOUNT, TRANSACTIONCURRENCYID,    ORGANIZATIONAMOUNT, BASECURRENCYID, BASEEXCHANGERATEID, ORGANIZATIONEXCHANGERATEID, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
                            values(@REVENUESPLITID, @REVENUEID, @ITEMDESIGNATIONID,    @BASEAMOUNT, 12, 12, @AMOUNT, @TRANSACTIONCURRENCYID, @ORGANIZATIONAMOUNT, @BASECURRENCYID, @BASEEXCHANGERATEID, @ORGANIZATIONEXCHANGERATEID, @CHANGEAGENTID, @CHANGEAGENTID, @CHANGEDATE, @CHANGEDATE);

                        insert into dbo.AUCTIONITEMPURCHASE(ID, AUCTIONITEMID, PURCHASEID, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
                            values(newid(), @AUCTIONITEMID, @REVENUESPLITID, @CHANGEAGENTID, @CHANGEAGENTID, @CHANGEDATE, @CHANGEDATE);

                        insert into dbo.AUCTIONITEMREVENUEPURCHASE(ID, AUCTIONITEMID, REVENUEPURCHASEID, BIDDERNUMBER, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
                            values(newid(), @AUCTIONITEMID, @REVENUEID, @BIDDERNUMBER, @CHANGEAGENTID, @CHANGEAGENTID, @CHANGEDATE, @CHANGEDATE);

                        exec dbo.USP_REVENUEDETAIL_CREATERECOGNITIONS @REVENUESPLITID, @CHANGEAGENTID, @CHANGEDATE;
                    end
                    else if @AUCTIONITEMTYPECODE = 1
                    begin

                        --Check to see if the PDACCOUNTSYSTEM for the payment is the same as the item

                        if exists(select 1
                                    from dbo.PDACCOUNTSYSTEMFORREVENUE
                                    inner join dbo.AUCTIONITEM on AUCTIONITEM.REVENUEAUCTIONDONATIONID = PDACCOUNTSYSTEMFORREVENUE.ID
                                    where 
                                        AUCTIONITEM.PACKAGEID = @AUCTIONITEMID 
                                        and 
                                        PDACCOUNTSYSTEMFORREVENUE.PDACCOUNTSYSTEMID <> @PDACCOUNTSYSTEMID
                                  )
                        begin
                            raiserror('BBERR_AUCTIONITEM_PAYMENT_ACCOUNTSYSTEMINVALID_PACKAGE',13,1);
                        end

                        --Package

                        exec dbo.USP_AUCTIONPURCHASE_ADDPAYMENTTOPACKAGE
                            @REVENUEID = @REVENUEID,
                            @AMOUNT = @AMOUNT,
                            @PACKAGEID = @AUCTIONITEMID,
                            @CHANGEAGENTID = @CHANGEAGENTID,
                            @CHANGEDATE = @CHANGEDATE;

                        insert into dbo.AUCTIONITEMREVENUEPURCHASE(ID,AUCTIONITEMID,REVENUEPURCHASEID,ADDEDBYID,CHANGEDBYID,DATEADDED,DATECHANGED)
                            values(newid(),@AUCTIONITEMID,@REVENUEID,@CHANGEAGENTID,@CHANGEAGENTID,@CHANGEDATE,@CHANGEDATE)
                    end
                end
                else if @TYPECODE = 3
                begin
                    --Event Registration

                    set @REVENUESPLITID = null; --The SP doesn't give it back to us, so let's not pretend.


                    exec dbo.USP_EVENT_ADDPAYMENT
                        @REVENUEID = @REVENUEID,
                        @APPLICATIONID = @REGISTRANTID,
                        @APPLIEDAMOUNT = @AMOUNT,
                        @CREATIONDATE = @CHANGEDATE,
                        @CHANGEAGENTID = @CHANGEAGENTID
                end
                else
                begin
                    --Donation

                    exec dbo.USP_GIFT_ADDPAYMENT
                        @REVENUEID = @REVENUEID,
                        @AMOUNT = @AMOUNT,
                        @DESIGNATIONID = @DONATIONDESIGNATIONID,
                        @OPPORTUNITYID = null,
                        @CAMPAIGNS = null,
                        @SOLICITORS = null,
                        @RECOGNITIONCREDITS = null,
                        @CATEGORYCODEID = null,
                        @CREATIONDATE = @CHANGEDATE,
                        @CHANGEAGENTID = @CHANGEAGENTID,
                        @ID = @REVENUESPLITID output,
                        @REVENUETYPECODE = 0;

                    exec dbo.USP_REVENUEDETAIL_CREATERECOGNITIONS
                        @REVENUESPLITID = @REVENUESPLITID,
                        @CHANGEAGENTID = @CHANGEAGENTID,
                        @CHANGEDATE = @CHANGEDATE;
                end
            end