USP_DATAFORMTEMPLATE_EDIT_EDUCATIONDEMOGRAPHIC

The save procedure used by the edit dataform template "Education Demographic Edit Data Form".

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier IN The input ID parameter indicating the ID of the record being edited.
@CHANGEAGENTID uniqueidentifier IN Input parameter indicating the ID of the change agent invoking the procedure.
@ETHNICITYCODEID uniqueidentifier IN Ethnicity
@RELIGIONCODEID uniqueidentifier IN Religion
@INCOMECODEID uniqueidentifier IN Income
@BIRTHPLACE nvarchar(50) IN Birthplace

Definition

Copy


                create procedure dbo.USP_DATAFORMTEMPLATE_EDIT_EDUCATIONDEMOGRAPHIC
                (
                    @ID uniqueidentifier,
                    @CHANGEAGENTID uniqueidentifier = null,
                    @ETHNICITYCODEID uniqueidentifier,
                    @RELIGIONCODEID uniqueidentifier,
                    @INCOMECODEID uniqueidentifier,
                    @BIRTHPLACE nvarchar(50)
                ) as
                    set nocount on;

                    declare @CURRENTDATE datetime;

                    if @CHANGEAGENTID is null
                        exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;

                    set @CURRENTDATE = getdate();

                    declare @EXISTINGID uniqueidentifier;
                    set @EXISTINGID = (select ID from dbo.DEMOGRAPHIC where ID = @ID);

                    declare @CONSTITUENTTYPE tinyint;
                    select @CONSTITUENTTYPE = case 
                            when (C.ISORGANIZATION = 0) and (C.ISGROUP = 0) then 0    -- Individual

                            when (C.ISORGANIZATION = 1) then 1    end                    -- Organization

                    from dbo.CONSTITUENT C
                        left outer join dbo.DEMOGRAPHIC D with (nolock) on D.ID = C.ID
                        left outer join dbo.GROUPDATA GD with (nolock) on GD.ID = C.ID
                    where 
                        C.ID = @ID

                    -- these fields are only applicable for individuals

                    if @CONSTITUENTTYPE <> 0
                        begin
                            set @ETHNICITYCODEID = null;
                            set @RELIGIONCODEID = null;
                            set @BIRTHPLACE = ''
                        end;

                    begin try
                        if (@EXISTINGID is not null) and (@ETHNICITYCODEID is null) and (@RELIGIONCODEID is null) and (@INCOMECODEID is null) and (len(coalesce(@BIRTHPLACE, '')) = 0)
                            delete from dbo.DEMOGRAPHIC where ID = @ID;
                        else
                            begin
                                if @EXISTINGID is null
                                    insert into dbo.DEMOGRAPHIC 
                                        (ID, ETHNICITYCODEID, RELIGIONCODEID, INCOMECODEID, BIRTHPLACE, DATEADDED, DATECHANGED, ADDEDBYID, CHANGEDBYID)
                                    values 
                                        (@ID, @ETHNICITYCODEID, @RELIGIONCODEID, @INCOMECODEID, @BIRTHPLACE, @CURRENTDATE, @CURRENTDATE, @CHANGEAGENTID, @CHANGEAGENTID)                        
                                else
                                    update dbo.DEMOGRAPHIC
                                    set
                                        [ETHNICITYCODEID] = @ETHNICITYCODEID,
                                        [RELIGIONCODEID] = @RELIGIONCODEID,
                                        [INCOMECODEID] = @INCOMECODEID,
                                        [BIRTHPLACE] = @BIRTHPLACE,
                                        [DATECHANGED] = @CURRENTDATE,
                                        [CHANGEDBYID] = @CHANGEAGENTID
                                    where ID = @ID;
                            end
                    end try
                    begin catch
                        exec dbo.USP_RAISE_ERROR;
                        return 1;
                    end catch

                    return 0;