USP_DATAFORMTEMPLATE_ADD_MKTSEGMENTGENERATE
The save procedure used by the add dataform template "Segment Generate Add Form".
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | INOUT | The output parameter indicating the ID of the record added. |
@CHANGEAGENTID | uniqueidentifier | IN | Input parameter indicating the ID of the change agent invoking the procedure. |
@QUERYVIEWCATALOGID | uniqueidentifier | IN | Input parameter indicating the context ID for the record being added. |
@RECORDTYPEID | uniqueidentifier | IN | Record type |
@GROUPNAME | nvarchar(50) | IN | Group Name |
@SEGMENTS | xml | IN | Segments |
@CODEVALUEID | uniqueidentifier | IN | Segment |
@GROUPID | uniqueidentifier | IN | Group |
@SEGMENTTYPECODE | tinyint | IN | Segment type code |
@RECORDSOURCEID | uniqueidentifier | IN | Record source ID |
@SITEID | uniqueidentifier | IN | Site |
Definition
Copy
CREATE procedure dbo.[USP_DATAFORMTEMPLATE_ADD_MKTSEGMENTGENERATE]
(
@ID uniqueidentifier = null output,
@CHANGEAGENTID uniqueidentifier = null,
@QUERYVIEWCATALOGID uniqueidentifier,
@RECORDTYPEID uniqueidentifier = null,
@GROUPNAME nvarchar(50) = '',
@SEGMENTS xml = null,
@CODEVALUEID uniqueidentifier = null,
@GROUPID uniqueidentifier = null,
@SEGMENTTYPECODE tinyint,
@RECORDSOURCEID uniqueidentifier,
@SITEID uniqueidentifier = null
)
as
set nocount on;
declare @CURRENTDATE datetime;
declare @PARENTSEGMENTID uniqueidentifier;
declare @RENTALCOSTADJUSTMENT money;
declare @RENTALCOSTBASISCODE tinyint;
declare @EXCHANGECOSTADJUSTMENT money;
declare @EXCHANGECOSTBASISCODE tinyint;
begin try
if @ID is null set @ID = newid();
if @CHANGEAGENTID is null
exec dbo.[USP_CHANGEAGENT_GETORCREATECHANGEAGENT] @CHANGEAGENTID output;
-- grab some extra fields for list segments
if @SEGMENTTYPECODE = 2
select
@PARENTSEGMENTID = [MKTSEGMENT].[ID],
@RENTALCOSTADJUSTMENT = [MKTSEGMENTLIST].[RENTALCOSTADJUSTMENT],
@RENTALCOSTBASISCODE = [MKTSEGMENTLIST].[RENTALCOSTBASISCODE],
@EXCHANGECOSTADJUSTMENT = [MKTSEGMENTLIST].[EXCHANGECOSTADJUSTMENT],
@EXCHANGECOSTBASISCODE = [MKTSEGMENTLIST].[EXCHANGECOSTBASISCODE]
from dbo.[MKTSEGMENTLIST]
inner join dbo.[MKTSEGMENT] on [MKTSEGMENT].[CURRENTSEGMENTLISTID] = [MKTSEGMENTLIST].[ID]
where [MKTSEGMENTLIST].[QUERYVIEWCATALOGID] = @QUERYVIEWCATALOGID;
declare @SEGMENTNAME nvarchar(100);
declare @CODE nvarchar(10);
declare @SELECTIONS xml;
declare @SEQUENCE int;
declare SEGMENTSCURSOR cursor for
select
T.c.value('(../SEGMENTNAME)[1]', 'nvarchar(100)') as [SEGMENTNAME],
T.c.value('(../SEGMENTCODE)[1]', 'nvarchar(10)') as [SEGMENTCODE],
T.c.query('.') as [SELECTIONS]
from @SEGMENTS.nodes('/SEGMENTS/ITEM/SELECTIONS') T(c);
open SEGMENTSCURSOR;
fetch next from SEGMENTSCURSOR into @SEGMENTNAME, @CODE, @SELECTIONS;
select @SEQUENCE = isnull(max([SEQUENCE]) + 1, 0) from dbo.[MKTGROUPSEGMENTS] where [SEGMENTGROUPID] = @GROUPID;
while (@@FETCH_STATUS = 0)
begin
set @ID = newid();
set @SEGMENTNAME = dbo.[UFN_MKTSEGMENT_GETUNIQUENAME](@ID, @SEGMENTNAME, null);
if @SEGMENTTYPECODE = 1 --Constituent
exec dbo.[USP_DATAFORMTEMPLATE_ADD_MKTSEGMENT]
@ID output,
@CHANGEAGENTID,
@RECORDSOURCEID,
@SEGMENTNAME,
'',
@CODE,
@SELECTIONS,
null,
1,
null,
@CODEVALUEID,
@SITEID;
else if @SEGMENTTYPECODE = 2 --List
begin
declare @SELECTIONIDS nvarchar(max);
declare @DATALOADED bit;
declare @NUMROWS int;
-- get the record count of the combined selections so we can pass it in as the rental quantity of the segment
select @SELECTIONIDS = stuff((select ',' + cast([SELECTIONID] as nvarchar(36)) from dbo.[UFN_MKTSEGMENT_GETSELECTIONS_FROMITEMLISTXML](@SELECTIONS) for xml path('')), 1, 1, '');
exec dbo.[USP_DATAFORMTEMPLATE_VIEW_MKTSEGMENTLISTBYSELECTIONRECORDCOUNT] @SELECTIONIDS, @DATALOADED output, @NUMROWS output;
if @DATALOADED = 1
exec dbo.[USP_DATAFORMTEMPLATE_ADD_MKTSEGMENTLISTBYSELECTION] @ID output, @CHANGEAGENTID, @SEGMENTNAME, '', null, @CODE, @PARENTSEGMENTID, @SELECTIONS, @NUMROWS, @RENTALCOSTADJUSTMENT, @RENTALCOSTBASISCODE, 0, @EXCHANGECOSTADJUSTMENT, @EXCHANGECOSTBASISCODE, null, @CODEVALUEID;
end
else if @SEGMENTTYPECODE = 3 --Revenue
exec dbo.[USP_DATAFORMTEMPLATE_ADD_MKTSEGMENTREVENUE] @ID output, @CHANGEAGENTID, @RECORDSOURCEID, @SEGMENTNAME, '', @CODE, @SELECTIONS, null, null, @CODEVALUEID, @SITEID;
else if @SEGMENTTYPECODE = 4 --Membership
exec dbo.[USP_DATAFORMTEMPLATE_ADD_MKTSEGMENTMEMBERSHIP] @ID output, @CHANGEAGENTID, @RECORDSOURCEID, @SEGMENTNAME, '', @CODE, @SELECTIONS, null, null, @CODEVALUEID, @SITEID;
else if @SEGMENTTYPECODE = 5 --Sponsorship
exec dbo.[USP_DATAFORMTEMPLATE_ADD_MKTSEGMENTSPONSORSHIP] @ID output, @CHANGEAGENTID, @RECORDSOURCEID, @SEGMENTNAME, '', @CODE, @SELECTIONS, null, null, @CODEVALUEID, @SITEID;
if @GROUPID is not null
begin
set @CURRENTDATE = getdate();
insert into dbo.[MKTGROUPSEGMENTS] (
[SEGMENTID],
[SEGMENTGROUPID],
[SEQUENCE],
[ADDEDBYID],
[CHANGEDBYID],
[DATEADDED],
[DATECHANGED]
) values (
@ID,
@GROUPID,
@SEQUENCE,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
);
set @SEQUENCE = @SEQUENCE + 1;
end
fetch next from SEGMENTSCURSOR into @SEGMENTNAME, @CODE, @SELECTIONS;
end
close SEGMENTSCURSOR;
deallocate SEGMENTSCURSOR;
end try
begin catch
exec dbo.[USP_RAISE_ERROR];
return 1;
end catch
return 0;