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