USP_DATAFORMTEMPLATE_ADD_EDUCATIONALHISTORYUPDATEBATCHTEMPLATE
The save procedure used by the add dataform template "Educational History Update Batch Template 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. |
@CONSTITUENTID | uniqueidentifier | IN | Input parameter indicating the context ID for the record being added. |
@VALIDATEONLY | bit | IN | Validate only |
@CONSTITUENTLOOKUPID | nvarchar(100) | IN | Constituent lookup ID |
@CONSTITUENTKEYNAME | nvarchar(100) | IN | Constituent last name |
@CONSTITUENTFIRSTNAME | nvarchar(50) | IN | Constituent first name |
@EDUCATIONALINSTITUTIONID | uniqueidentifier | IN | Educational institution |
@EDUCATIONALINSTITUTIONNAME | nvarchar(100) | IN | Educational institution name |
@EDUCATIONALINSTITUTIONFICECODE | nvarchar(50) | IN | Educational institution FICE code |
@EDUCATIONALINSTITUTIONCOUNTRYID | uniqueidentifier | IN | Educational institution country |
@EDUCATIONALINSTITUTIONCITY | nvarchar(150) | IN | Educational institution city |
@EDUCATIONALINSTITUTIONSTATEID | uniqueidentifier | IN | Educational institution state |
@ISPRIMARYRECORD | bit | IN | Primary education information |
@ACADEMICCATALOGPROGRAMID | uniqueidentifier | IN | Academic catalog program |
@EDUCATIONALPROGRAMCODEID | uniqueidentifier | IN | Educational program |
@CONSTITUENCYSTATUSCODE | tinyint | IN | Status |
@EDUCATIONALHISTORYREASONCODEID | uniqueidentifier | IN | Reason |
@EDUCATIONALHISTORYLEVELCODEID | uniqueidentifier | IN | Level |
@DATELEFT | UDT_FUZZYDATE | IN | Date attended to |
@DATEGRADUATED | UDT_FUZZYDATE | IN | Graduation date |
@ACADEMICCATALOGDEGREEID | uniqueidentifier | IN | Academic catalog degree |
@EDUCATIONALDEGREECODEID | uniqueidentifier | IN | Educational degree |
@EDUCATIONALAWARDCODEID | uniqueidentifier | IN | Honor awarded |
@STARTDATE | UDT_FUZZYDATE | IN | Date attended from |
@CLASSYEAR | UDT_YEAR | IN | Class of |
@PREFERREDCLASSYEAR | UDT_YEAR | IN | Preferred class of |
@EDUCATIONALSOURCECODEID | uniqueidentifier | IN | Information source |
@EDUCATIONALSOURCEDATE | UDT_FUZZYDATE | IN | Source date |
@COMMENT | nvarchar(500) | IN | Comments |
@AFFILIATEDADDITIONALINFORMATION | xml | IN | Academic catalog additional information |
@UNAFFILIATEDADDITIONALINFORMATION | xml | IN | Educational additional information |
@EDUCATIONALINVOLVEMENTS | xml | IN | Educational involvements |
@EDUCATIONALHISTORYSTATUSID | uniqueidentifier | IN | Status |
Definition
Copy
CREATE procedure dbo.USP_DATAFORMTEMPLATE_ADD_EDUCATIONALHISTORYUPDATEBATCHTEMPLATE (
@ID uniqueidentifier = null output,
@CHANGEAGENTID uniqueidentifier = null,
@CONSTITUENTID uniqueidentifier,
@VALIDATEONLY bit = 0,
@CONSTITUENTLOOKUPID nvarchar(100) = '',
@CONSTITUENTKEYNAME nvarchar(100) = '',
@CONSTITUENTFIRSTNAME nvarchar(50) = '',
@EDUCATIONALINSTITUTIONID uniqueidentifier = null,
@EDUCATIONALINSTITUTIONNAME nvarchar(100) = '',
@EDUCATIONALINSTITUTIONFICECODE nvarchar(50) = '',
@EDUCATIONALINSTITUTIONCOUNTRYID uniqueidentifier = null,
@EDUCATIONALINSTITUTIONCITY nvarchar(150) = '',
@EDUCATIONALINSTITUTIONSTATEID uniqueidentifier = null,
@ISPRIMARYRECORD bit = 0,
@ACADEMICCATALOGPROGRAMID uniqueidentifier = null,
@EDUCATIONALPROGRAMCODEID uniqueidentifier = null,
@CONSTITUENCYSTATUSCODE tinyint = 0,
@EDUCATIONALHISTORYREASONCODEID uniqueidentifier = null,
@EDUCATIONALHISTORYLEVELCODEID uniqueidentifier = null,
@DATELEFT dbo.UDT_FUZZYDATE = '00000000',
@DATEGRADUATED dbo.UDT_FUZZYDATE = '00000000',
@ACADEMICCATALOGDEGREEID uniqueidentifier = null,
@EDUCATIONALDEGREECODEID uniqueidentifier = null,
@EDUCATIONALAWARDCODEID uniqueidentifier = null,
@STARTDATE dbo.UDT_FUZZYDATE = '00000000',
@CLASSYEAR dbo.UDT_YEAR = '0000',
@PREFERREDCLASSYEAR dbo.UDT_YEAR = '0000',
@EDUCATIONALSOURCECODEID uniqueidentifier = null,
@EDUCATIONALSOURCEDATE dbo.UDT_FUZZYDATE = '00000000',
@COMMENT nvarchar(500) = '',
@AFFILIATEDADDITIONALINFORMATION xml = null,
@UNAFFILIATEDADDITIONALINFORMATION xml = null,
@EDUCATIONALINVOLVEMENTS xml = null,
@EDUCATIONALHISTORYSTATUSID uniqueidentifier = null
) as
set nocount on;
declare @CURRENTDATE datetime;
set @CURRENTDATE = getdate();
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;
begin try
if @ID is null
set @ID = newid();
--==========================================================
-- Academic catalog
--==========================================================
declare @USEACADEMICCATALOG bit;
select top 1
@USEACADEMICCATALOG = EC.[USEACADEMICCATALOG]
from
dbo.[EDUCATIONALCONFIGURATION] EC;
set @USEACADEMICCATALOG = coalesce(@USEACADEMICCATALOG,0);
--==========================================================
-- Educational institution
--==========================================================
if @EDUCATIONALINSTITUTIONID is null
begin
select top 1
@EDUCATIONALINSTITUTIONID = EI.[ID]
from
dbo.[EDUCATIONALINSTITUTION] EI
where
EI.[NAME] = @EDUCATIONALINSTITUTIONNAME;
if @EDUCATIONALINSTITUTIONID is null
begin
set @EDUCATIONALINSTITUTIONID = newid();
set @EDUCATIONALINSTITUTIONFICECODE = coalesce(@EDUCATIONALINSTITUTIONFICECODE, '');
set @EDUCATIONALINSTITUTIONNAME = coalesce(@EDUCATIONALINSTITUTIONNAME, '');
set @EDUCATIONALINSTITUTIONCITY = coalesce(@EDUCATIONALINSTITUTIONCITY, '');
if len(@EDUCATIONALINSTITUTIONNAME)=0
raiserror('BBERR_EDUCATIONALHISTORYUPDATEBATCHTEMPLATEADD_EDUCATIONALINSTITUTIONNAMEISREQUIRED', 13, 1)
exec dbo.USP_DATAFORMTEMPLATE_ADD_EDUCATIONALINSTITUTION_2 @EDUCATIONALINSTITUTIONID, @CHANGEAGENTID, @EDUCATIONALINSTITUTIONFICECODE, @EDUCATIONALINSTITUTIONNAME, 0, @EDUCATIONALINSTITUTIONCOUNTRYID, @EDUCATIONALINSTITUTIONCITY, @EDUCATIONALINSTITUTIONSTATEID;
end
end
declare @EDUCATIONALINSTITUTIONISAFFILIATED bit;
select
@EDUCATIONALINSTITUTIONISAFFILIATED = EI.[ISAFFILIATED]
from
dbo.[EDUCATIONALINSTITUTION] EI
where
EI.[ID] = @EDUCATIONALINSTITUTIONID;
--==========================================================
-- Primary record
--==========================================================
update
dbo.[EDUCATIONALHISTORY]
set
[ISPRIMARYRECORD] = 0,
[CHANGEDBYID] = @CHANGEAGENTID,
[DATECHANGED] = @CURRENTDATE
where
@ISPRIMARYRECORD = 1 and
[ISPRIMARYRECORD] = 1 and
[CONSTITUENTID] = @CONSTITUENTID and
[ID] <> @ID;
--==========================================================
-- Constituent
--==========================================================
declare @MATCHINGCONSTITUENTCOUNT smallint
select @MATCHINGCONSTITUENTCOUNT = count(ID) from dbo.UFN_CONSTITUENT_GETIDSFROMCRITERIA( @CONSTITUENTID, @CONSTITUENTLOOKUPID, @CONSTITUENTKEYNAME, @CONSTITUENTFIRSTNAME, 500)
if @MATCHINGCONSTITUENTCOUNT = 1 begin
select top(1) @CONSTITUENTID = ID from dbo.UFN_CONSTITUENT_GETIDSFROMCRITERIA( @CONSTITUENTID, @CONSTITUENTLOOKUPID, @CONSTITUENTKEYNAME, @CONSTITUENTFIRSTNAME, 500)
end
else if @MATCHINGCONSTITUENTCOUNT > 1 begin
raiserror('The ID for this constituent matches multiple records.',13,1);
end
else begin
raiserror('The ID for this constituent does not match any records.',13,1);
end
--==========================================================
-- Educational history
--==========================================================
if @USEACADEMICCATALOG = 1 and @EDUCATIONALINSTITUTIONISAFFILIATED = 1 begin
insert into dbo.[EDUCATIONALHISTORY] (
[ID],
[CONSTITUENTID],
[EDUCATIONALINSTITUTIONID],
[ISPRIMARYRECORD],
[ACADEMICCATALOGPROGRAMID],
[CONSTITUENCYSTATUSCODE],
[EDUCATIONALHISTORYREASONCODEID],
[EDUCATIONALHISTORYLEVELCODEID],
[DATELEFT],
[DATEGRADUATED],
[ACADEMICCATALOGDEGREEID],
[EDUCATIONALAWARDCODEID],
[STARTDATE],
[CLASSOF],
[PREFERREDCLASSYEAR],
[EDUCATIONALSOURCECODEID],
[EDUCATIONALSOURCEDATE],
[COMMENT],
[ADDEDBYID],
[CHANGEDBYID],
[DATEADDED],
[DATECHANGED]
)
values (
@ID,
@CONSTITUENTID,
@EDUCATIONALINSTITUTIONID,
@ISPRIMARYRECORD,
@ACADEMICCATALOGPROGRAMID,
coalesce(@CONSTITUENCYSTATUSCODE, 0),
@EDUCATIONALHISTORYREASONCODEID,
@EDUCATIONALHISTORYLEVELCODEID,
coalesce(@DATELEFT, '00000000'),
coalesce(@DATEGRADUATED, '00000000'),
@ACADEMICCATALOGDEGREEID,
@EDUCATIONALAWARDCODEID,
coalesce(@STARTDATE, '00000000'),
coalesce(@CLASSYEAR, '0000'),
coalesce(@PREFERREDCLASSYEAR, '0000'),
@EDUCATIONALSOURCECODEID,
coalesce(@EDUCATIONALSOURCEDATE, '00000000'),
coalesce(@COMMENT, ''),
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
);
end
else begin
insert into dbo.[EDUCATIONALHISTORY] (
[ID],
[CONSTITUENTID],
[EDUCATIONALINSTITUTIONID],
[ISPRIMARYRECORD],
[EDUCATIONALPROGRAMCODEID],
[CONSTITUENCYSTATUSCODE],
[EDUCATIONALHISTORYREASONCODEID],
[EDUCATIONALHISTORYLEVELCODEID],
[DATELEFT],
[DATEGRADUATED],
[EDUCATIONALDEGREECODEID],
[EDUCATIONALAWARDCODEID],
[STARTDATE],
[CLASSOF],
[PREFERREDCLASSYEAR],
[EDUCATIONALSOURCECODEID],
[EDUCATIONALSOURCEDATE],
[COMMENT],
[ADDEDBYID],
[CHANGEDBYID],
[DATEADDED],
[DATECHANGED]
)
values (
@ID,
@CONSTITUENTID,
@EDUCATIONALINSTITUTIONID,
@ISPRIMARYRECORD,
@EDUCATIONALPROGRAMCODEID,
coalesce(@CONSTITUENCYSTATUSCODE, 0),
@EDUCATIONALHISTORYREASONCODEID,
@EDUCATIONALHISTORYLEVELCODEID,
coalesce(@DATELEFT, '00000000'),
coalesce(@DATEGRADUATED, '00000000'),
@EDUCATIONALDEGREECODEID,
@EDUCATIONALAWARDCODEID,
coalesce(@STARTDATE, '00000000'),
coalesce(@CLASSYEAR, '0000'),
coalesce(@PREFERREDCLASSYEAR, '0000'),
@EDUCATIONALSOURCECODEID,
coalesce(@EDUCATIONALSOURCEDATE, '00000000'),
coalesce(@COMMENT, ''),
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
);
end
--==========================================================
--STATUS
--==========================================================
if @EDUCATIONALHISTORYSTATUSID is null
begin
set @EDUCATIONALHISTORYSTATUSID = '00000000-0000-0000-0000-000000000001'
end
if (dbo.UFN_EDUCATIONALHISTORY_CURRENTEDUCATIONALHISTORYSTATUS(@ID) != @EDUCATIONALHISTORYSTATUSID)
begin
insert into dbo.[EDUCATIONALHISTORYSTATUSHISTORY]
(
[EDUCATIONALHISTORYID],
[EDUCATIONALHISTORYSTATUSID],
[STATUSDATE],
[ADDEDBYID],
[CHANGEDBYID],
[DATEADDED],
[DATECHANGED]
)
values
(
@ID,
@EDUCATIONALHISTORYSTATUSID,
@CURRENTDATE,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
)
end
--==========================================================
-- Additional information
--==========================================================
if @USEACADEMICCATALOG = 1 and @EDUCATIONALINSTITUTIONISAFFILIATED = 1 begin
insert into dbo.[EDUCATIONADDITIONALINFORMATION] (
[EDUCATIONALHISTORYID],
[ACADEMICCATALOGCOLLEGEID],
[ACADEMICCATALOGDIVISIONID],
[ACADEMICCATALOGDEPARTMENTID],
[ACADEMICCATALOGSUBDEPARTMENTID],
[ACADEMICCATALOGDEGREETYPEID],
[ADDEDBYID],
[CHANGEDBYID],
[DATEADDED],
[DATECHANGED]
)
select
@ID,
AAI.[ACADEMICCATALOGCOLLEGEID],
AAI.[ACADEMICCATALOGDIVISIONID],
AAI.[ACADEMICCATALOGDEPARTMENTID],
AAI.[ACADEMICCATALOGSUBDEPARTMENTID],
AAI.[ACADEMICCATALOGDEGREETYPEID],
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
from
dbo.UFN_EDUCATIONALHISTORY_GETAFFILIATEDADDITIONALINFORMATION_FORUPDATEBATCH_FROMITEMLISTXML(@AFFILIATEDADDITIONALINFORMATION) AAI;
end
else begin
insert into dbo.[EDUCATIONADDITIONALINFORMATION] (
[EDUCATIONALHISTORYID],
[EDUCATIONALCOLLEGECODEID],
[EDUCATIONALDIVISIONCODEID],
[EDUCATIONALDEPARTMENTCODEID],
[EDUCATIONALSUBDEPARTMENTCODEID],
[EDUCATIONALDEGREETYPECODEID],
[ADDEDBYID],
[CHANGEDBYID],
[DATEADDED],
[DATECHANGED]
)
select
@ID,
UAI.[EDUCATIONALCOLLEGECODEID],
UAI.[EDUCATIONALDIVISIONCODEID],
UAI.[EDUCATIONALDEPARTMENTCODEID],
UAI.[EDUCATIONALSUBDEPARTMENTCODEID],
UAI.[EDUCATIONALDEGREETYPECODEID],
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
from
dbo.UFN_EDUCATIONALHISTORY_GETUNAFFILIATEDADDITIONALINFORMATION_FORUPDATEBATCH_FROMITEMLISTXML(@UNAFFILIATEDADDITIONALINFORMATION) UAI;
end
--==========================================================
-- Educational involvements
--==========================================================
declare @EDUCATIONALINVOLVEMENTSTABLE table (
[EDUCATIONALINVOLVEMENTID] uniqueidentifier,
[EDUCATIONALINVOLVEMENTTYPECODEID] uniqueidentifier,
[EDUCATIONALINVOLVEMENTNAMEID] uniqueidentifier,
[DATEFROM] dbo.UDT_FUZZYDATE,
[DATETO] dbo.UDT_FUZZYDATE,
[EDUCATIONALINVOLVEMENTAWARDCODEID] uniqueidentifier,
[COMMENT] nvarchar(500),
[POSITION] nvarchar(256)
);
insert into @EDUCATIONALINVOLVEMENTSTABLE (
[EDUCATIONALINVOLVEMENTID],
[EDUCATIONALINVOLVEMENTTYPECODEID],
[EDUCATIONALINVOLVEMENTNAMEID],
[DATEFROM],
[DATETO],
[EDUCATIONALINVOLVEMENTAWARDCODEID],
[COMMENT],
[POSITION]
)
select
EI.[EDUCATIONALINVOLVEMENTID],
EI.[EDUCATIONALINVOLVEMENTTYPECODEID],
EI.[EDUCATIONALINVOLVEMENTNAMEID],
EI.[DATEFROM],
EI.[DATETO],
EI.[EDUCATIONALINVOLVEMENTAWARDCODEID],
EI.[COMMENT],
EI.[POSITION]
from
dbo.UFN_CONSTITUENT_GETEDUCATIONALINVOLVEMENTS_FORUPDATEBATCH_FROMITEMLISTXML(@EDUCATIONALINVOLVEMENTS) EI;
update
dbo.[EDUCATIONALINVOLVEMENT]
set
[EDUCATIONALINVOLVEMENTTYPECODEID] = coalesce(EIT.[EDUCATIONALINVOLVEMENTTYPECODEID], EI.[EDUCATIONALINVOLVEMENTTYPECODEID]),
[EDUCATIONALINVOLVEMENTNAMEID] = coalesce(EIT.[EDUCATIONALINVOLVEMENTNAMEID], EI.[EDUCATIONALINVOLVEMENTNAMEID]),
[DATEFROM] = coalesce(nullif(EIT.[DATEFROM], '00000000'), EI.[DATEFROM]),
[DATETO] = coalesce(nullif(EIT.[DATETO], '00000000'), EI.[DATETO]),
[EDUCATIONALINVOLVEMENTAWARDCODEID] = coalesce(EIT.[EDUCATIONALINVOLVEMENTAWARDCODEID], EI.[EDUCATIONALINVOLVEMENTAWARDCODEID]),
[COMMENT] = coalesce(nullif(EIT.[COMMENT], ''), EI.[COMMENT]),
[CHANGEDBYID] = @CHANGEAGENTID,
[DATECHANGED] = @CURRENTDATE,
[POSITION] = coalesce(nullif(EIT.[POSITION], ''), EI.[POSITION])
from
@EDUCATIONALINVOLVEMENTSTABLE EIT
inner join
dbo.[EDUCATIONALINVOLVEMENT] EI
on
EIT.[EDUCATIONALINVOLVEMENTID] = EI.[ID] or
(EIT.[EDUCATIONALINVOLVEMENTID] is null and
EI.[CONSTITUENTID] = @CONSTITUENTID and
(EIT.[EDUCATIONALINVOLVEMENTTYPECODEID] = EI.[EDUCATIONALINVOLVEMENTTYPECODEID] or (EIT.[EDUCATIONALINVOLVEMENTTYPECODEID] is null and EI.[EDUCATIONALINVOLVEMENTTYPECODEID] is null)) and
(EIT.[EDUCATIONALINVOLVEMENTNAMEID] = EI.[EDUCATIONALINVOLVEMENTNAMEID] or (EIT.[EDUCATIONALINVOLVEMENTNAMEID] is null and EI.[EDUCATIONALINVOLVEMENTNAMEID] is null)) and
coalesce(EIT.[DATEFROM], '00000000') = coalesce(EI.[DATEFROM], '00000000') and
coalesce(EIT.[DATETO], '00000000') = coalesce(EI.[DATETO], '00000000') and
(EIT.[EDUCATIONALINVOLVEMENTAWARDCODEID] = EI.[EDUCATIONALINVOLVEMENTAWARDCODEID] or (EIT.[EDUCATIONALINVOLVEMENTAWARDCODEID] is null and EI.[EDUCATIONALINVOLVEMENTAWARDCODEID] is null)));
insert into dbo.[EDUCATIONALINVOLVEMENT] (
[CONSTITUENTID],
[EDUCATIONALINSTITUTIONID],
[EDUCATIONALINVOLVEMENTTYPECODEID],
[EDUCATIONALINVOLVEMENTNAMEID],
[DATEFROM],
[DATETO],
[EDUCATIONALINVOLVEMENTAWARDCODEID],
[COMMENT],
[ADDEDBYID],
[CHANGEDBYID],
[DATEADDED],
[DATECHANGED],
[POSITION]
)
select
@CONSTITUENTID,
@EDUCATIONALINSTITUTIONID,
EIT.[EDUCATIONALINVOLVEMENTTYPECODEID],
EIT.[EDUCATIONALINVOLVEMENTNAMEID],
coalesce(EIT.[DATEFROM], '00000000'),
coalesce(EIT.[DATETO], '00000000'),
EIT.[EDUCATIONALINVOLVEMENTAWARDCODEID],
coalesce(EIT.[COMMENT], ''),
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE,
coalesce(EIT.[POSITION], '')
from
@EDUCATIONALINVOLVEMENTSTABLE EIT
left join
dbo.[EDUCATIONALINVOLVEMENT] EI
on
EIT.[EDUCATIONALINVOLVEMENTID] = EI.[ID] or
(EIT.[EDUCATIONALINVOLVEMENTID] is null and
EI.[CONSTITUENTID] = @CONSTITUENTID and
(EIT.[EDUCATIONALINVOLVEMENTTYPECODEID] = EI.[EDUCATIONALINVOLVEMENTTYPECODEID] or (EIT.[EDUCATIONALINVOLVEMENTTYPECODEID] is null and EI.[EDUCATIONALINVOLVEMENTTYPECODEID] is null)) and
(EIT.[EDUCATIONALINVOLVEMENTNAMEID] = EI.[EDUCATIONALINVOLVEMENTNAMEID] or (EIT.[EDUCATIONALINVOLVEMENTNAMEID] is null and EI.[EDUCATIONALINVOLVEMENTNAMEID] is null)) and
coalesce(EIT.[DATEFROM], '00000000') = coalesce(EI.[DATEFROM], '00000000') and
coalesce(EIT.[DATETO], '00000000') = coalesce(EI.[DATETO], '00000000') and
(EIT.[EDUCATIONALINVOLVEMENTAWARDCODEID] = EI.[EDUCATIONALINVOLVEMENTAWARDCODEID] or (EIT.[EDUCATIONALINVOLVEMENTAWARDCODEID] is null and EI.[EDUCATIONALINVOLVEMENTAWARDCODEID] is null)))
where
EI.[ID] is null;
end try
begin catch
exec dbo.USP_RAISE_ERROR;
return 1;
end catch
return 0;