USP_DATAFORMTEMPLATE_ADD_DESIGNATIONHYBRID
The save procedure used by the add dataform template "Designation Hybrid Add Data Form".
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | INOUT | The output parameter indicating the ID of the record added. |
@PARENTDESIGNATIONID | uniqueidentifier | IN | Input parameter indicating the context ID for the record being added. |
@DESIGNATIONLEVELTYPEID | uniqueidentifier | IN | Type |
@NAME | nvarchar(100) | IN | Name |
@VANITYNAME | nvarchar(512) | IN | Public name |
@DESCRIPTION | nvarchar(255) | IN | Description |
@DESIGNATIONLEVELCATEGORYCODEID | uniqueidentifier | IN | Category |
@LOOKUPID | nvarchar(100) | IN | Lookup ID |
@DESIGNATIONREPORTCODE1ID | uniqueidentifier | IN | Report code 1 |
@DESIGNATIONREPORTCODE2ID | uniqueidentifier | IN | Report code 2 |
@STARTDATE | datetime | IN | Start date |
@ENDDATE | datetime | IN | End date |
@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. |
@SITEID | uniqueidentifier | IN | Site |
Definition
Copy
CREATE procedure dbo.USP_DATAFORMTEMPLATE_ADD_DESIGNATIONHYBRID
(
@ID uniqueidentifier = null output,
@PARENTDESIGNATIONID uniqueidentifier,
@DESIGNATIONLEVELTYPEID uniqueidentifier = null,
@NAME nvarchar(100) = null,
@VANITYNAME nvarchar(512) = null,
@DESCRIPTION nvarchar(255) = null,
@DESIGNATIONLEVELCATEGORYCODEID uniqueidentifier = null,
@LOOKUPID nvarchar(100) = null,
@DESIGNATIONREPORTCODE1ID uniqueidentifier = null,
@DESIGNATIONREPORTCODE2ID uniqueidentifier = null,
@STARTDATE datetime = null,
@ENDDATE datetime = null,
@CHANGEAGENTID uniqueidentifier = null,
@CURRENTAPPUSERID uniqueidentifier = null,
@SITEID uniqueidentifier = null
)
as
set nocount on;
if @ID is null
set @ID = newid()
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output
declare @CURRENTDATE datetime
set @CURRENTDATE = getdate()
begin try
if (@SITEID is not null)
begin
if dbo.UFN_SITEALLOWEDFORUSER(@CURRENTAPPUSERID, @SITEID) = 0 begin
raiserror ('ERR_SITE_NOACCESS',13,1);
return 1;
end
end
-- the id returned will be that of the designation row, not the designation level row
declare @DESIGNATIONLEVELID uniqueidentifier = newid();
-- the levels of the parent designation
declare @DESIGNATIONLEVEL1ID uniqueidentifier;
declare @DESIGNATIONLEVEL2ID uniqueidentifier;
declare @DESIGNATIONLEVEL3ID uniqueidentifier;
declare @DESIGNATIONLEVEL4ID uniqueidentifier;
declare @DESIGNATIONLEVEL5ID uniqueidentifier;
declare @PARENTHIERARCHYITEMID uniqueidentifier;
declare @PARENTLOOKUPID nvarchar(512);
-- the designation lookup id will be created using a combination of the parent designation's lookup id and the one specified for the designation level
declare @DESIGNATIONLOOKUPID nvarchar(512);
select
@DESIGNATIONLEVEL1ID = DESIGNATIONLEVEL1ID,
@DESIGNATIONLEVEL2ID = DESIGNATIONLEVEL2ID,
@DESIGNATIONLEVEL3ID = DESIGNATIONLEVEL3ID,
@DESIGNATIONLEVEL4ID = DESIGNATIONLEVEL4ID,
@DESIGNATIONLEVEL5ID = DESIGNATIONLEVEL5ID,
@PARENTLOOKUPID = USERID,
@PARENTHIERARCHYITEMID = DESIGNATIONLEVELTYPEHIERARCHYITEMID
from
dbo.DESIGNATION
where
DESIGNATION.ID = @PARENTDESIGNATIONID;
-- set the path of the current designation using the parent levels and the designation level generated below
if @DESIGNATIONLEVEL1ID is null
set @DESIGNATIONLEVEL1ID = @DESIGNATIONLEVELID
else
if @DESIGNATIONLEVEL2ID is null
set @DESIGNATIONLEVEL2ID = @DESIGNATIONLEVELID
else
if @DESIGNATIONLEVEL3ID is null
set @DESIGNATIONLEVEL3ID = @DESIGNATIONLEVELID
else
if @DESIGNATIONLEVEL4ID is null
set @DESIGNATIONLEVEL4ID = @DESIGNATIONLEVELID
else
set @DESIGNATIONLEVEL5ID = @DESIGNATIONLEVELID
-- build the designation lookup id by combining the parent designation's lookup ID with the fundraising purpose's lookup ID
if @PARENTLOOKUPID is null
set @DESIGNATIONLOOKUPID = @LOOKUPID
else
set @DESIGNATIONLOOKUPID = @PARENTLOOKUPID + '-' + @LOOKUPID;
-- create the hierarchy instance from the hierarchy template if root node
if @PARENTHIERARCHYITEMID is null and @PARENTDESIGNATIONID = '0D47D951-8E96-4FBA-A7AA-2339B3D7B0BC'
begin
declare @DESIGNATIONLEVELTYPEHIERARCHYID uniqueidentifier;
set @DESIGNATIONLEVELTYPEHIERARCHYID = newId();
insert into dbo.DESIGNATIONLEVELTYPEHIERARCHY
(
ID,
NAME,
DESIGNATIONLEVELTYPEHIERARCHYTEMPLATEID,
ADDEDBYID,
CHANGEDBYID,
DATEADDED,
DATECHANGED
)
(
select
@DESIGNATIONLEVELTYPEHIERARCHYID,
DESIGNATIONLEVELTYPEHIERARCHYTEMPLATE.NAME,
DESIGNATIONLEVELTYPEHIERARCHYTEMPLATE.ID,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
from
dbo.DESIGNATIONLEVELTYPEHIERARCHYTEMPLATEITEM
inner join
dbo.DESIGNATIONLEVELTYPEHIERARCHYTEMPLATE on DESIGNATIONLEVELTYPEHIERARCHYTEMPLATE.ID = DESIGNATIONLEVELTYPEHIERARCHYTEMPLATEITEM.DESIGNATIONLEVELTYPEHIERARCHYTEMPLATEID
where
DESIGNATIONLEVELTYPEHIERARCHYTEMPLATEITEM.PARENTID is null
);
declare @ITEMS table (ID uniqueidentifier, PARENTID uniqueidentifier, OLDID uniqueidentifier, OLDPARENTID uniqueidentifier, DESIGNATIONLEVELTYPEID uniqueidentifier);
with ITEMS_CTE(ID, OLDID, OLDPARENTID, DESIGNATIONLEVELTYPEID) as (
select newId(), ID, PARENTID, DESIGNATIONLEVELTYPEID
from dbo.DESIGNATIONLEVELTYPEHIERARCHYTEMPLATEITEM
where PARENTID is null
union all
select newId(), TEMPLATEITEM.ID, TEMPLATEITEM.PARENTID, TEMPLATEITEM.DESIGNATIONLEVELTYPEID
from dbo.DESIGNATIONLEVELTYPEHIERARCHYTEMPLATEITEM as TEMPLATEITEM
inner join ITEMS_CTE on ITEMS_CTE.OLDID = TEMPLATEITEM.PARENTID
)
insert into @ITEMS
select ID, null, OLDID, OLDPARENTID, DESIGNATIONLEVELTYPEID from ITEMS_CTE;
insert into dbo.DESIGNATIONLEVELTYPEHIERARCHYITEM
(
ID,
PARENTID,
DESIGNATIONLEVELTYPEHIERARCHYID,
DESIGNATIONLEVELTYPEID,
ADDEDBYID,
CHANGEDBYID,
DATEADDED,
DATECHANGED
)
(
select
ITEMS.ID,
ITEMSPARENT.ID,
@DESIGNATIONLEVELTYPEHIERARCHYID,
ITEMS.DESIGNATIONLEVELTYPEID,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
from @ITEMS as ITEMS
left join
@ITEMS as ITEMSPARENT on ITEMSPARENT.OLDID = ITEMS.OLDPARENTID
);
end
declare @HIERARCHYITEMID uniqueidentifier;
select
@HIERARCHYITEMID = ID
from
dbo.DESIGNATIONLEVELTYPEHIERARCHYITEM
where
(
(PARENTID = @PARENTHIERARCHYITEMID)
or
(PARENTID is null and @PARENTHIERARCHYITEMID is null and @PARENTDESIGNATIONID = '0D47D951-8E96-4FBA-A7AA-2339B3D7B0BC')
-- well known guid passed to indicate we're adding a root level designation
)
and
DESIGNATIONLEVELTYPEID = @DESIGNATIONLEVELTYPEID;
-- validate that the designation level type is supported at this level in the hierarchy template
if (@PARENTHIERARCHYITEMID is not null) and (@HIERARCHYITEMID is null)
raiserror('The specified fundraising purpose type cannot be added to this level of the hierarchy.', 13, 1);
declare @BASECURRENCYID uniqueidentifier;
declare @ORGANIZATIONEXCHANGERATEID uniqueidentifier;
declare @ORGANIZATIONCURRENCYID uniqueidentifier;
set @ORGANIZATIONCURRENCYID = dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY();
select @BASECURRENCYID =
(select CURRENCYSET.BASECURRENCYID from dbo.CURRENCYSET where ID = dbo.UFN_CURRENCYSET_GETAPPUSERCURRENCYSET(@CURRENTAPPUSERID))
if (@ORGANIZATIONCURRENCYID <> @BASECURRENCYID)
set @ORGANIZATIONEXCHANGERATEID = dbo.UFN_CURRENCYEXCHANGERATE_GETLATEST(@BASECURRENCYID, @ORGANIZATIONCURRENCYID, @CURRENTDATE, 0, null);
insert into dbo.DESIGNATIONLEVEL
(
ID,
NAME,
DESCRIPTION,
DESIGNATIONLEVELCATEGORYCODEID,
DESIGNATIONLEVELTYPEID,
USERID,
DESIGNATIONREPORT1CODEID,
DESIGNATIONREPORT2CODEID,
ORGANIZATIONEXCHANGERATEID,
BASECURRENCYID,
ADDEDBYID,
CHANGEDBYID,
DATEADDED,
DATECHANGED,
SITEID
)
values
(
@DESIGNATIONLEVELID,
@NAME,
@DESCRIPTION,
@DESIGNATIONLEVELCATEGORYCODEID,
@DESIGNATIONLEVELTYPEID,
@LOOKUPID,
@DESIGNATIONREPORTCODE1ID,
@DESIGNATIONREPORTCODE2ID,
@ORGANIZATIONEXCHANGERATEID,
@BASECURRENCYID,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE,
@SITEID
);
insert into dbo.DESIGNATION
(
ID,
DESIGNATIONLEVEL1ID,
DESIGNATIONLEVEL2ID,
DESIGNATIONLEVEL3ID,
DESIGNATIONLEVEL4ID,
DESIGNATIONLEVEL5ID,
USERID,
VANITYNAME,
DESIGNATIONREPORT1CODEID,
DESIGNATIONREPORT2CODEID,
STARTDATE,
ENDDATE,
DESIGNATIONLEVELTYPEHIERARCHYITEMID,
BASECURRENCYID,
ADDEDBYID,
CHANGEDBYID,
DATEADDED,
DATECHANGED
)
values
(
@ID,
@DESIGNATIONLEVEL1ID,
@DESIGNATIONLEVEL2ID,
@DESIGNATIONLEVEL3ID,
@DESIGNATIONLEVEL4ID,
@DESIGNATIONLEVEL5ID,
@DESIGNATIONLOOKUPID,
@VANITYNAME,
@DESIGNATIONREPORTCODE1ID,
@DESIGNATIONREPORTCODE2ID,
@STARTDATE,
@ENDDATE,
@HIERARCHYITEMID,
@BASECURRENCYID,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
);
end try
begin catch
exec dbo.USP_RAISE_ERROR
return 1
end catch
return 0