USP_EVENTPRICE_COPY
Copies prices from one event to another event.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@SOURCEEVENTID | uniqueidentifier | IN | |
@DESTINATIONEVENTID | uniqueidentifier | IN | |
@CHANGEAGENTID | uniqueidentifier | IN |
Definition
Copy
CREATE procedure dbo.USP_EVENTPRICE_COPY
(
@SOURCEEVENTID uniqueidentifier,
@DESTINATIONEVENTID uniqueidentifier,
@CHANGEAGENTID uniqueidentifier = null
)
with execute as caller
as
set nocount on;
-- Cannot copy if the source event does not exist
if not exists (select ID from dbo.EVENT where ID = @SOURCEEVENTID)
raiserror('The source event specified does not exist.',13,1);
declare @CURRENTDATE datetime;
set @CURRENTDATE = getdate();
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;
declare @EVENTPRICEMAPPINGTABLE table
(
SOURCEEVENTPRICEID uniqueidentifier,
DESTINATIONEVENTPRICEID uniqueidentifier default newid()
);
insert into @EVENTPRICEMAPPINGTABLE
(
SOURCEEVENTPRICEID
)
select
EVENTPRICE.ID
from
dbo.EVENTPRICE
left join dbo.EVENTPRICE DESTINATIONEVENTPRICE on
@DESTINATIONEVENTID = DESTINATIONEVENTPRICE.EVENTID
and EVENTPRICE.NAME = DESTINATIONEVENTPRICE.NAME
where
EVENTPRICE.EVENTID = @SOURCEEVENTID
and DESTINATIONEVENTPRICE.ID is null;
declare @BASECURRENCYID uniqueidentifier;
declare @ORGANIZATIONCURRENCYID uniqueidentifier;
declare @ORGANIZATIONEXCHANGERATEID uniqueidentifier;
select @BASECURRENCYID = BASECURRENCYID from dbo.EVENT where ID = @DESTINATIONEVENTID;
select @ORGANIZATIONCURRENCYID = dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY();
set @ORGANIZATIONEXCHANGERATEID = dbo.UFN_CURRENCYEXCHANGERATE_GETLATEST(@BASECURRENCYID, @ORGANIZATIONCURRENCYID, @CURRENTDATE, 0, null)
insert into dbo.EVENTPRICE
(
ID,
EVENTID,
EVENTREGISTRATIONTYPEID,
AMOUNT,
COST,
NAME,
REGISTRATIONCOUNT,
ADDEDBYID,
CHANGEDBYID,
DATEADDED,
DATECHANGED,
ORGANIZATIONAMOUNT,
ORGANIZATIONCOST,
ORGANIZATIONEXCHANGERATEID
)
select
EVENTPRICEMAPPING.DESTINATIONEVENTPRICEID,
@DESTINATIONEVENTID,
EVENTPRICE.EVENTREGISTRATIONTYPEID,
EVENTPRICE.AMOUNT,
EVENTPRICE.COST,
EVENTPRICE.NAME,
EVENTPRICE.REGISTRATIONCOUNT,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE,
case when @BASECURRENCYID = @ORGANIZATIONCURRENCYID
then EVENTPRICE.AMOUNT
else dbo.UFN_CURRENCY_CONVERT(EVENTPRICE.AMOUNT, @ORGANIZATIONEXCHANGERATEID)
end,
case when @BASECURRENCYID = @ORGANIZATIONCURRENCYID
then EVENTPRICE.COST
else dbo.UFN_CURRENCY_CONVERT(EVENTPRICE.COST, @ORGANIZATIONEXCHANGERATEID)
end,
case when @BASECURRENCYID = @ORGANIZATIONCURRENCYID
then null
else @ORGANIZATIONEXCHANGERATEID
end
from
@EVENTPRICEMAPPINGTABLE EVENTPRICEMAPPING
left join dbo.EVENTPRICE on EVENTPRICEMAPPING.SOURCEEVENTPRICEID = EVENTPRICE.ID;
insert into dbo.EVENTPRICEBENEFIT
(
EVENTPRICEID,
BENEFITID,
UNITVALUE,
QUANTITY,
TOTALVALUE,
DETAILS,
ADDEDBYID,
CHANGEDBYID,
DATEADDED,
DATECHANGED,
BASECURRENCYID,
EVENTBASECURRENCYTOTALVALUE,
BASEEXCHANGERATEID,
ORGANIZATIONTOTALVALUE,
ORGANIZATIONEXCHANGERATEID
)
select
EVENTPRICEMAPPING.DESTINATIONEVENTPRICEID,
EVENTPRICEBENEFIT.BENEFITID,
EVENTPRICEBENEFIT.UNITVALUE,
EVENTPRICEBENEFIT.QUANTITY,
EVENTPRICEBENEFIT.TOTALVALUE,
EVENTPRICEBENEFIT.DETAILS,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE,
EVENTPRICEBENEFIT.BASECURRENCYID,
case when EVENTPRICEBENEFIT.BASECURRENCYID = @BASECURRENCYID
then EVENTPRICEBENEFIT.TOTALVALUE
else dbo.UFN_CURRENCY_CONVERT(EVENTPRICEBENEFIT.TOTALVALUE, dbo.UFN_CURRENCYEXCHANGERATE_GETLATEST(EVENTPRICEBENEFIT.BASECURRENCYID, @BASECURRENCYID, @CURRENTDATE, 1, null))
end,
case when EVENTPRICEBENEFIT.BASECURRENCYID = @BASECURRENCYID
then null
else dbo.UFN_CURRENCYEXCHANGERATE_GETLATEST(EVENTPRICEBENEFIT.BASECURRENCYID, @BASECURRENCYID, @CURRENTDATE, 1, null)
end,
case when EVENTPRICEBENEFIT.BASECURRENCYID = @ORGANIZATIONCURRENCYID
then EVENTPRICEBENEFIT.TOTALVALUE
else dbo.UFN_CURRENCY_CONVERT(EVENTPRICEBENEFIT.TOTALVALUE, dbo.UFN_CURRENCYEXCHANGERATE_GETLATEST(EVENTPRICEBENEFIT.BASECURRENCYID, @ORGANIZATIONCURRENCYID, @CURRENTDATE, 0, null))
end,
case when EVENTPRICEBENEFIT.BASECURRENCYID = @ORGANIZATIONCURRENCYID
then null
else dbo.UFN_CURRENCYEXCHANGERATE_GETLATEST(EVENTPRICEBENEFIT.BASECURRENCYID, @ORGANIZATIONCURRENCYID, @CURRENTDATE, 0, null)
end
from
@EVENTPRICEMAPPINGTABLE EVENTPRICEMAPPING
inner join dbo.EVENTPRICEBENEFIT on EVENTPRICEMAPPING.SOURCEEVENTPRICEID = EVENTPRICEBENEFIT.EVENTPRICEID;
--The receipt amount needs to take into account the newly created benefits in the currency of the event.
update dbo.EVENTPRICE
set
RECEIPTAMOUNT = case
when (EVENTPRICE.AMOUNT - (EVENTPRICE.COST + (select coalesce(sum(EVENTPRICEBENEFIT.EVENTBASECURRENCYTOTALVALUE),0) from dbo.EVENTPRICEBENEFIT where EVENTPRICEID = EVENTPRICE.ID))) < 0 then 0
else (EVENTPRICE.AMOUNT - (EVENTPRICE.COST + (select coalesce(sum(EVENTPRICEBENEFIT.EVENTBASECURRENCYTOTALVALUE),0) from dbo.EVENTPRICEBENEFIT where EVENTPRICEID = EVENTPRICE.ID)))
end,
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = @CURRENTDATE
from
dbo.EVENTPRICE
where
EVENTPRICE.EVENTID = @DESTINATIONEVENTID;
--insert into dbo.EVENTPRICEDESIGNATION
--(
-- EVENTPRICEID,
-- DESIGNATIONID,
-- AMOUNT,
-- ADDEDBYID,
-- CHANGEDBYID,
-- DATEADDED,
-- DATECHANGED
--)
--select
-- EVENTPRICEMAPPING.DESTINATIONEVENTPRICEID,
-- EVENTPRICEDESIGNATION.DESIGNATIONID,
-- EVENTPRICEDESIGNATION.AMOUNT,
-- @CHANGEAGENTID,
-- @CHANGEAGENTID,
-- @CURRENTDATE,
-- @CURRENTDATE
--from
-- @EVENTPRICEMAPPINGTABLE EVENTPRICEMAPPING
-- inner join dbo.EVENTPRICEDESIGNATION on EVENTPRICEMAPPING.SOURCEEVENTPRICEID = EVENTPRICEDESIGNATION.EVENTPRICEID;
return 0;