USP_DATAFORMTEMPLATE_EDIT_SPONSORSHIPOPPORTUNITYGROUP

The save procedure used by the edit dataform template "Sponsorship Opportunity Group 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.
@NAME nvarchar(100) IN Name
@SPONSORSHIPOPPORTUNITYTYPECODE int IN Type
@SPONSORSPEROPPORTUNITY int IN Maximum
@OFFERSOLESPONSORSHIP bit IN Offer sole sponsorship
@OVERRIDESPONSORSPEROPPORTUNITY xml IN
@SPONSORSHIPLOCATIONID uniqueidentifier IN Location
@GENDERCODE tinyint IN Gender
@SPONSORSHIPOPPORTUNITYAGERANGEID uniqueidentifier IN Age range
@HASCONDITIONCODE tinyint IN Disability/Illness
@ISHIVPOSITIVECODE tinyint IN HIV positive
@ISORPHANEDCODE tinyint IN Orphaned
@SPROPPPROJECTCATEGORYCODE uniqueidentifier IN Category

Definition

Copy


CREATE procedure dbo.USP_DATAFORMTEMPLATE_EDIT_SPONSORSHIPOPPORTUNITYGROUP (
    @ID uniqueidentifier,
    @CHANGEAGENTID uniqueidentifier,
    @NAME nvarchar(100),
    @SPONSORSHIPOPPORTUNITYTYPECODE int,
    @SPONSORSPEROPPORTUNITY int,
    @OFFERSOLESPONSORSHIP bit,
    @OVERRIDESPONSORSPEROPPORTUNITY xml,
    @SPONSORSHIPLOCATIONID uniqueidentifier,
    @GENDERCODE tinyint,
    @SPONSORSHIPOPPORTUNITYAGERANGEID uniqueidentifier,
    @HASCONDITIONCODE tinyint,
    @ISHIVPOSITIVECODE tinyint,
    @ISORPHANEDCODE tinyint,
    @SPROPPPROJECTCATEGORYCODE uniqueidentifier
)
as

    set nocount on;

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

    declare @CURRENTDATE datetime
    set @CURRENTDATE = getdate()

    begin try
        -----------------------------------------

        -- validate Overrides

        if @OVERRIDESPONSORSPEROPPORTUNITY is not null
        begin
            declare @OVERRIDESTAB table (SPONSORSHIPLOCATIONID uniqueidentifier,
                                         SPONSORSPEROPPORTUNITY smallint,
                                         OFFERSOLESPONSORSHIP bit)

            insert into @OVERRIDESTAB
            select *
            from dbo.UFN_SPONSORSHIPOPPORTUNITYGROUP_OVERRIDESPONSORSPEROPPORTUNITY(@OVERRIDESPONSORSPEROPPORTUNITY);

            declare @BADCOUNT smallint

            -- sponsors per opportunity invalid

            select @BADCOUNT = count(*)
            from @OVERRIDESTAB OVERRIDES
            where OVERRIDES.SPONSORSPEROPPORTUNITY < 1

            if @BADCOUNT > 0
                raiserror('BBERR_INVALIDOVERRIDESPONSORSPEROPPORTUNITY',13,1)

            -- sole sponsorship invalid

            select @BADCOUNT = count(*)
            from @OVERRIDESTAB OVERRIDES
            where isnull(OVERRIDES.SPONSORSPEROPPORTUNITY,0) < 2
            and OVERRIDES.OFFERSOLESPONSORSHIP = 1;

            if @BADCOUNT > 0
                raiserror('BBERR_INVALIDOVERRIDEOFFERSOLESPONSORSHIP',13,1)

            -- duplicate locations

            select @BADCOUNT = count(*)
            from (select SPONSORSHIPLOCATIONID
            from @OVERRIDESTAB
            group by SPONSORSHIPLOCATIONID having count(*) > 1) X;

            if @BADCOUNT > 0
                raiserror('BBERR_DUPLICATELOCATIONS',13,1)

            -- overlapping locations

            select @BADCOUNT = count(*)
            from @OVERRIDESTAB OVERRIDES1
            inner join @OVERRIDESTAB OVERRIDES2 on 1=1
            inner join dbo.SPONSORSHIPLOCATION L1 on L1.ID = OVERRIDES1.SPONSORSHIPLOCATIONID
            inner join dbo.SPONSORSHIPLOCATION L2 on L2.ID = OVERRIDES2.SPONSORSHIPLOCATIONID
            where L1.HIERARCHYPATH.IsDescendantOf(L2.HIERARCHYPATH) = 1
            and L1.ID <> L2.ID;

            if @BADCOUNT > 0
                raiserror('BBERR_OVERLAPPINGLOCATIONS',13,1)

            if @SPONSORSHIPLOCATIONID is not null
            begin
                -- locations not consistent with group location

                select @BADCOUNT = count(*)
                from @OVERRIDESTAB OVERRIDES
                inner join dbo.SPONSORSHIPLOCATION OVERRIDELOCATION on OVERRIDELOCATION.ID = OVERRIDES.SPONSORSHIPLOCATIONID
                inner join dbo.SPONSORSHIPLOCATION GROUPLOCATION on GROUPLOCATION.ID = @SPONSORSHIPLOCATIONID
                where OVERRIDELOCATION.HIERARCHYPATH.IsDescendantOf(GROUPLOCATION.HIERARCHYPATH) = 0;

                if @BADCOUNT > 0
                    raiserror('BBERR_INVALIDOVERRIDELOCATION',13,1)

                -- location same as group location (i.e., default would never be used)

                select @BADCOUNT = count(*)
                from @OVERRIDESTAB OVERRIDES
                where OVERRIDES.SPONSORSHIPLOCATIONID = @SPONSORSHIPLOCATIONID;

                if @BADCOUNT > 0
                    raiserror('BBERR_SAMELOCATIONASGROUP',13,1)
            end

            -- locations w/ same values as default

            select @BADCOUNT = count(*)
            from @OVERRIDESTAB OVERRIDES
            where isnull(OVERRIDES.SPONSORSPEROPPORTUNITY,0) = isnull(@SPONSORSPEROPPORTUNITY,0)
            and OVERRIDES.OFFERSOLESPONSORSHIP = @OFFERSOLESPONSORSHIP

            if @BADCOUNT > 0
                raiserror('BBERR_OVERRIDESWITHSAMEVALUES',13,1)
        end
        -----------------------------------------


        update dbo.SPONSORSHIPOPPORTUNITYGROUP set
            NAME = @NAME,
            SPONSORSHIPOPPORTUNITYTYPECODE = @SPONSORSHIPOPPORTUNITYTYPECODE,
            SPONSORSPEROPPORTUNITY = isnull(@SPONSORSPEROPPORTUNITY,0),
            OFFERSOLESPONSORSHIP = @OFFERSOLESPONSORSHIP,
            OVERRIDESPONSORSPEROPPORTUNITY = @OVERRIDESPONSORSPEROPPORTUNITY,
            SEQUENCE = 1,
            SPONSORSHIPLOCATIONID = @SPONSORSHIPLOCATIONID,
            GENDERCODE = isnull(@GENDERCODE,0),
            SPONSORSHIPOPPORTUNITYAGERANGEID = @SPONSORSHIPOPPORTUNITYAGERANGEID,
            HASCONDITIONCODE = isnull(@HASCONDITIONCODE,0),
            ISHIVPOSITIVECODE = isnull(@ISHIVPOSITIVECODE,0),
            ISORPHANEDCODE = isnull(@ISORPHANEDCODE,0),
            SPROPPPROJECTCATEGORYCODEID=@SPROPPPROJECTCATEGORYCODE,
            CHANGEDBYID = @CHANGEAGENTID,
            DATECHANGED = @CURRENTDATE
        where ID = @ID
 --

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



return 0;