USP_DATAFORMTEMPLATE_ADD_BATCHEVENTBATCHCOMMIT
The save procedure used by the add dataform template "Event Batch Row Commit Add Form".
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | INOUT | The output parameter indicating the ID of the record added. |
@VALIDATEONLY | bit | IN | Validate only |
@CHANGEAGENTID | uniqueidentifier | IN | Input parameter indicating the ID of the change agent invoking the procedure. |
@CURRENTAPPUSERID | uniqueidentifier | IN | Input parameter indicating the ID of the current user. |
@NAME | nvarchar(100) | IN | Name |
@DESCRIPTION | nvarchar(255) | IN | Description |
@STARTDATE | date | IN | Start date |
@STARTTIME | UDT_HOURMINUTE | IN | Start time |
@ENDDATE | date | IN | End date |
@ENDTIME | UDT_HOURMINUTE | IN | End time |
@CAPACITY | int | IN | Capacity |
@EVENTLOCATIONID | uniqueidentifier | IN | Location |
@EVENTLOCATIONCONTACTID | uniqueidentifier | IN | Contact |
@APPEALID | uniqueidentifier | IN | Appeal |
@EVENTCATEGORYCODEID | uniqueidentifier | IN | Category |
@PRICES | xml | IN | Registration options |
@TASKS | xml | IN | Tasks |
@EXPENSES | xml | IN | Expenses |
@COORDINATORS | xml | IN | Coordinators |
@SITES | xml | IN | Sites |
@EVENTLOCATIONROOMID | uniqueidentifier | IN | Room/Unit |
@BATCHROWID | uniqueidentifier | IN | |
@CUSTOMIDENTIFIER | nvarchar(100) | IN | Lookup ID |
@HIDEFROMCALENDAR | bit | IN | Do not show event on calendar |
@BASECURRENCYID | uniqueidentifier | IN | Base currency |
@DESIGNATIONSONFEES | bit | IN | Event allows designations on fees |
@DESIGNATIONS | xml | IN | Designations |
Definition
Copy
CREATE procedure dbo.USP_DATAFORMTEMPLATE_ADD_BATCHEVENTBATCHCOMMIT
(
@ID uniqueidentifier = null output,
@VALIDATEONLY bit = 0,
@CHANGEAGENTID uniqueidentifier,
@CURRENTAPPUSERID uniqueidentifier,
@NAME nvarchar(100) = '',
@DESCRIPTION nvarchar(255) = '',
@STARTDATE date = null,
@STARTTIME dbo.UDT_HOURMINUTE = null,
@ENDDATE date = null,
@ENDTIME dbo.UDT_HOURMINUTE = null,
@CAPACITY int = 0,
@EVENTLOCATIONID uniqueidentifier = null,
@EVENTLOCATIONCONTACTID uniqueidentifier = null,
@APPEALID uniqueidentifier = null,
@EVENTCATEGORYCODEID uniqueidentifier = null,
@PRICES xml = null,
@TASKS xml = null,
@EXPENSES xml = null,
@COORDINATORS xml = null,
@SITES xml = null,
@EVENTLOCATIONROOMID uniqueidentifier = null,
@BATCHROWID uniqueidentifier = null,
@CUSTOMIDENTIFIER nvarchar(100) = '',
@HIDEFROMCALENDAR bit = 0,
@BASECURRENCYID uniqueidentifier = null,
@DESIGNATIONSONFEES bit = 0,
@DESIGNATIONS xml = null
) as
set nocount on;
declare @CURRENTDATE datetime;
if @ID is null
set @ID = newid();
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;
set @CURRENTDATE = getdate();
if @BASECURRENCYID is null
select @BASECURRENCYID = dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY()
declare @CURRENCYEXCHANGERATE uniqueidentifier = null
if @BASECURRENCYID <> dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY()
begin
select @CURRENCYEXCHANGERATE = dbo.UFN_CURRENCYEXCHANGERATE_GETLATEST(@BASECURRENCYID, dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY(), getdate(), 1, null)
end
begin try
if @SITES is null
begin
if dbo.UFN_SITEREQUIREDFORUSER(@CURRENTAPPUSERID) = 1
begin
raiserror('ERR_EVENTSITE_SITEID', 13, 1);
return;
end
end
exec dbo.USP_EVENTSITE_VALIDATESITES @SITES;
if @VALIDATEONLY = 1
begin
-- Main event checks
if (@STARTDATE is not null) and (@ENDDATE is not null)
if @STARTDATE > @ENDDATE
raiserror('CK_EVENT_VALIDDATERANGE', 13, 1);
if (@STARTDATE is not null) and (@ENDDATE is not null) and (@STARTTIME is not null) and (@ENDTIME is not null)
if dbo.UFN_EVENT_VALIDDATESANDTIMES(@STARTDATE, @ENDDATE, @STARTTIME, @ENDTIME) <> 1
raiserror('CK_EVENT_VALIDTIMERANGE', 13, 1);
declare @INVALIDCOUNT int;
-- Event price checks
select
@INVALIDCOUNT = count(*)
from
@PRICES.nodes('/PRICES/ITEM') T(c)
where
T.c.value('(AMOUNT)[1]','money') < 0;
if @INVALIDCOUNT > 0
raiserror('CK_EVENTPRICE_VALIDAMOUNT', 13, 1);
select
@INVALIDCOUNT = count(*)
from
@PRICES.nodes('/PRICES/ITEM') T(c)
where
T.c.value('(COST)[1]','money') < 0;
if @INVALIDCOUNT > 0
raiserror('CK_EVENTPRICE_VALIDCOST', 13, 1);
select
@INVALIDCOUNT = count(*)
from
@PRICES.nodes('/PRICES/ITEM') T(c)
where
T.c.value('(REGISTRATIONCOUNT)[1]','int') < 0;
if @INVALIDCOUNT > 0
raiserror('CK_EVENTPRICE_VALIDREGISTRATIONCOUNT', 13, 1);
-- Expense checks
select
@INVALIDCOUNT = count(*)
from
@EXPENSES.nodes('/EXPENSES/ITEM') T(c)
where
T.c.value('(BUDGETEDAMOUNT)[1]','money') < 0;
if @INVALIDCOUNT > 0
raiserror('CK_EVENTEXPENSE_VALIDBUDGETEDAMOUNT', 13, 1);
select
@INVALIDCOUNT = count(*)
from
@EXPENSES.nodes('/EXPENSES/ITEM') T(c)
where
T.c.value('(ACTUALAMOUNT)[1]','money') < 0;
if @INVALIDCOUNT > 0
raiserror('CK_EVENTEXPENSE_VALIDACTUALAMOUNT', 13, 1);
select
@INVALIDCOUNT = count(*)
from
@EXPENSES.nodes('/EXPENSES/ITEM') T(c)
where
T.c.value('(AMOUNTPAID)[1]','money') < 0;
if @INVALIDCOUNT > 0
raiserror('CK_EVENTEXPENSE_VALIDAMOUNTPAID', 13, 1);
declare @BATCHID uniqueidentifier
select @BATCHID = BATCHID
from dbo.BATCHEVENT
where ID = @BATCHROWID
select @BATCHID, @BATCHROWID, @CUSTOMIDENTIFIER
if exists
(select 1
from dbo.EVENT
where @CUSTOMIDENTIFIER <> '' and EVENT.CUSTOMIDENTIFIER = @CUSTOMIDENTIFIER
) begin
raiserror('UC_EVENT_LOOKUPID : Lookup ID must be unique.', 13, 1);
return 1;
end
else if
(select count(BATCHEVENT.ID)
from dbo.BATCHEVENT
where
BATCHID = @BATCHID and
coalesce(@CUSTOMIDENTIFIER, '') <> '' and
BATCHEVENT.CUSTOMID = @CUSTOMIDENTIFIER
) > 1 begin
raiserror('BBERR_EVENT_LOOKUPID_MULTIPLE : The Lookup ID has multiple occurrences in this batch.', 13, 1);
return 1;
end
-- Designation validation
if @DESIGNATIONSONFEES = 1
begin
select
@INVALIDCOUNT = count(*)
from
@DESIGNATIONS.nodes('/DESIGNATIONS/ITEM') T(c)
where
T.c.value('(DEFAULT)[1]','bit') = 1;
if @INVALIDCOUNT = 0
raiserror('EVENTDESIGNATION_DEFAULTREQUIRED', 13, 1);
if @INVALIDCOUNT > 1
raiserror('EVENTDESIGNATIONS_ONLYONEDEFAULT', 13, 1);
end
end
else
begin
set @STARTTIME = coalesce(@STARTTIME, '');
set @ENDTIME = coalesce(@ENDTIME, '');
--Bug 72688 - AdamBu 1/5/10 - Use the event add SP to create any sites, to avoid issues when they are required.
-- Also, don't call the SP defined on the Event Add dataform. I've created a new SP to call instead.
--exec dbo.USP_DATAFORMTEMPLATE_ADD_EVENT @ID = @ID, @CURRENTAPPUSERID = @CURRENTAPPUSERID, @CHANGEAGENTID = @CHANGEAGENTID, @NAME = @NAME, @DESCRIPTION = @DESCRIPTION, @STARTDATE = @STARTDATE, @STARTTIME = @STARTTIME, @ENDDATE = @ENDDATE, @ENDTIME = @ENDTIME, @CAPACITY = @CAPACITY, @EVENTLOCATIONID = @EVENTLOCATIONID, @EVENTLOCATIONCONTACTID = @EVENTLOCATIONCONTACTID, @APPEALID = @APPEALID, @EVENTCATEGORYCODEID = @EVENTCATEGORYCODEID;
--exec dbo.USP_EVENT_GETSITES_ADDFROMXML @ID, @SITES, @CHANGEAGENTID, @CURRENTDATE;
exec dbo.USP_EVENT_ADD @ID = @ID,
@CURRENTAPPUSERID = @CURRENTAPPUSERID,
@CHANGEAGENTID = @CHANGEAGENTID,
@NAME = @NAME,
@DESCRIPTION = @DESCRIPTION,
@STARTDATE = @STARTDATE,
@STARTTIME = @STARTTIME,
@ENDDATE = @ENDDATE,
@ENDTIME = @ENDTIME,
@CAPACITY = @CAPACITY,
@EVENTLOCATIONID = @EVENTLOCATIONID,
@EVENTLOCATIONCONTACTID = @EVENTLOCATIONCONTACTID,
@MAINEVENTID = null,
@COPYFROMEVENTID = null,
@COPYTASKS = null,
@COPYEXPENSES = null,
@COPYPRICES = null,
@COPYINVITATIONS = null,
@COPYINVITEES = null,
@COPYATTRIBUTES = null,
@ATTRIBUTEDEFINED = null,
@SITES = @SITES,
@COPYPREFERENCES = null,
@EVENTCATEGORYCODEID = @EVENTCATEGORYCODEID,
@COPYTEAMSTRUCTURE = null,
@COPYTEAMFUNDRAISERS = null,
@APPEALID = @APPEALID,
@ADDQUICKCOMPARE = null,
@COPYLODGINGOPTIONS = null,
@EVENTLOCATIONROOMID = @EVENTLOCATIONROOMID,
@COPYJOBOCCURRENCES = 0,
@ISAUCTION = 0,
@HIDEFROMCALENDAR = @HIDEFROMCALENDAR,
@BASECURRENCYID = @BASECURRENCYID,
@DESIGNATIONSONFEES=@DESIGNATIONSONFEES,
@COPYDESIGNATIONS = 0;
insert into dbo.EVENTPRICE (
ID,
EVENTID,
EVENTREGISTRATIONTYPEID,
NAME,
REGISTRATIONCOUNT,
AMOUNT,
COST,
RECEIPTAMOUNT,
ADDEDBYID,
CHANGEDBYID,
DATEADDED,
DATECHANGED,
ORGANIZATIONAMOUNT,
ORGANIZATIONCOST,
ORGANIZATIONEXCHANGERATEID
)
select
newid(),
@ID,
T.c.value('(EVENTREGISTRATIONTYPEID)[1]','uniqueidentifier'),
T.c.value('(NAME)[1]','nvarchar(100)'),
T.c.value('(REGISTRATIONCOUNT)[1]','int'),
T.c.value('(AMOUNT)[1]','money'),
T.c.value('(COST)[1]','money'),
T.c.value('(AMOUNT)[1]','money') - T.c.value('(COST)[1]','money'),
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE,
case @CURRENCYEXCHANGERATE when null then T.c.value('(AMOUNT)[1]','money') else dbo.UFN_CURRENCY_CONVERT(T.c.value('(AMOUNT)[1]','money'), @CURRENCYEXCHANGERATE) end,
case @CURRENCYEXCHANGERATE when null then T.c.value('(COST)[1]','money') else dbo.UFN_CURRENCY_CONVERT(T.c.value('(COST)[1]','money'), @CURRENCYEXCHANGERATE) end,
@CURRENCYEXCHANGERATE
from
@PRICES.nodes('/PRICES/ITEM') T(c)
insert into dbo.EVENTTASK (
ID,
EVENTID,
NAME,
OWNERID,
COMPLETEBYDATE,
COMMENT,
ADDEDBYID,
CHANGEDBYID,
DATEADDED,
DATECHANGED
)
select
newid(),
@ID,
T.c.value('(NAME)[1]','nvarchar(100)'),
T.c.value('(OWNERID)[1]','uniqueidentifier'),
T.c.value('(COMPLETEBYDATE)[1]','datetime'),
T.c.value('(COMMENT)[1]','nvarchar(250)'),
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
from
@TASKS.nodes('/TASKS/ITEM') T(c)
insert into dbo.EVENTEXPENSE (
ID,
EVENTID,
EVENTEXPENSETYPECODEID,
VENDORID,
BUDGETEDAMOUNT,
ACTUALAMOUNT,
DATEDUE,
AMOUNTPAID,
DATEPAID,
COMMENT,
ADDEDBYID,
CHANGEDBYID,
DATEADDED,
DATECHANGED,
BASECURRENCYID,
ORGANIZATIONEXCHANGERATEID,
ORGANIZATIONBUDGETEDAMOUNT,
ORGANIZATIONACTUALAMOUNT,
ORGANIZATIONAMOUNTPAID
)
select
newid(),
@ID,
T.c.value('(EVENTEXPENSETYPECODEID)[1]','uniqueidentifier'),
T.c.value('(VENDORID)[1]','uniqueidentifier'),
T.c.value('(BUDGETEDAMOUNT)[1]','money'),
T.c.value('(ACTUALAMOUNT)[1]','money'),
T.c.value('(DATEDUE)[1]','datetime'),
T.c.value('(AMOUNTPAID)[1]','money'),
T.c.value('(DATEPAID)[1]','datetime'),
T.c.value('(COMMENT)[1]','nvarchar(250)'),
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE,
@BASECURRENCYID,
@CURRENCYEXCHANGERATE,
case @CURRENCYEXCHANGERATE when null then T.c.value('(BUDGETEDAMOUNT)[1]','money') else dbo.UFN_CURRENCY_CONVERT(T.c.value('(BUDGETEDAMOUNT)[1]','money'), @CURRENCYEXCHANGERATE) end,
case @CURRENCYEXCHANGERATE when null then T.c.value('(ACTUALAMOUNT)[1]','money') else dbo.UFN_CURRENCY_CONVERT(T.c.value('(ACTUALAMOUNT)[1]','money'), @CURRENCYEXCHANGERATE) end,
case @CURRENCYEXCHANGERATE when null then T.c.value('(AMOUNTPAID)[1]','money') else dbo.UFN_CURRENCY_CONVERT(T.c.value('(AMOUNTPAID)[1]','money'), @CURRENCYEXCHANGERATE) end
from
@EXPENSES.nodes('/EXPENSES/ITEM') T(c)
insert into dbo.EVENTCOORDINATOR (
ID,
EVENTID,
CONSTITUENTID,
ADDEDBYID,
CHANGEDBYID,
DATEADDED,
DATECHANGED
)
select
newid(),
@ID,
T.c.value('(CONSTITUENTID)[1]','uniqueidentifier'),
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
from
@COORDINATORS.nodes('/COORDINATORS/ITEM') T(c)
if @DESIGNATIONSONFEES = 1
begin
declare @DUPLICATECOUNT int;
select
@DUPLICATECOUNT = count(T.c.value('(DESIGNATIONID)[1]','uniqueidentifier'))
from @DESIGNATIONS.nodes('/DESIGNATIONS/ITEM') T(c)
where T.c.value('(DEFAULT)[1]','bit') = 1
if @DUPLICATECOUNT = 0
raiserror('EVENTDESIGNATION_DEFAULTREQUIRED : At least one default designation is required.',13,1);
if @DUPLICATECOUNT > 1
raiserror('EVENTDESIGNATIONS_ONLYONEDEFAULT : Events can have only one default designation.',13,1);
insert into dbo.EVENTDESIGNATION (
ID,
EVENTID,
DESIGNATIONID,
[DEFAULT],
ADDEDBYID,
CHANGEDBYID,
DATEADDED,
DATECHANGED
)
select
newid(),
@ID,
T.c.value('(DESIGNATIONID)[1]','uniqueidentifier'),
T.c.value('(DEFAULT)[1]','bit'),
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
from
@DESIGNATIONS.nodes('/DESIGNATIONS/ITEM') T(c)
end
if @CUSTOMIDENTIFIER <> ''
begin
update dbo.EVENT
set CUSTOMIDENTIFIER = @CUSTOMIDENTIFIER
where ID = @ID;
end
end
end try
begin catch
exec.dbo.USP_RAISE_ERROR;
return 1;
end catch
return 0;