USP_DATAFORMTEMPLATE_EDIT_DEMOGRAPHIC_2

The save procedure used by the edit dataform template "Demographic Edit 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
@TARGETCODEID uniqueidentifier IN Target
@INCOMECODEID uniqueidentifier IN Income
@BIRTHPLACE nvarchar(50) IN Birthplace
@DEMOGRAPHICETHNICITIES xml IN Ethnicities

Definition

Copy


CREATE procedure dbo.USP_DATAFORMTEMPLATE_EDIT_DEMOGRAPHIC_2
(
    @ID uniqueidentifier,
    @CHANGEAGENTID uniqueidentifier = null,
    @ETHNICITYCODEID uniqueidentifier,
    @RELIGIONCODEID uniqueidentifier,
    @TARGETCODEID uniqueidentifier,
    @INCOMECODEID uniqueidentifier,
    @BIRTHPLACE nvarchar(50),
    @DEMOGRAPHICETHNICITIES xml   
) 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                        -- Organization

            when (GD.GROUPTYPECODE = 0) then 2                        -- Household

            else 3 end                                                -- Group

    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 null
            insert into dbo.DEMOGRAPHIC 
                (ID, RELIGIONCODEID, TARGETCODEID, INCOMECODEID, BIRTHPLACE, DATEADDED, DATECHANGED, ADDEDBYID, CHANGEDBYID)
            values 
                (@ID, @RELIGIONCODEID, @TARGETCODEID, @INCOMECODEID, @BIRTHPLACE, @CURRENTDATE, @CURRENTDATE, @CHANGEAGENTID, @CHANGEAGENTID)                        
        else
            update dbo.DEMOGRAPHIC
            set
                [RELIGIONCODEID] = @RELIGIONCODEID,
                [TARGETCODEID] = @TARGETCODEID,
                [INCOMECODEID] = @INCOMECODEID,
                [BIRTHPLACE] = @BIRTHPLACE,
                [DATECHANGED] = @CURRENTDATE,
                [CHANGEDBYID] = @CHANGEAGENTID
            where ID = @ID;

            exec dbo.USP_CONSTITUENT_GETETHNICITIES_UPDATEFROMXML @ID, @DEMOGRAPHICETHNICITIES, @CHANGEAGENTID;

            -- update obsolete ETHNICITYCODEID last so that trigger can handle pushing value into DEMOGRAPHICETHNICITIES only if it is missing

            update dbo.DEMOGRAPHIC
            set
                [ETHNICITYCODEID] = @ETHNICITYCODEID,
                [DATECHANGED] = @CURRENTDATE,
                [CHANGEDBYID] = @CHANGEAGENTID
            where ID = @ID;

    end try
    begin catch
        exec dbo.USP_RAISE_ERROR;
        return 1;
    end catch

    return 0;