USP_DATAFORMTEMPLATE_EDIT_STAFF_RESOURCE

The save procedure used by the edit dataform template "Staff Resource 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(50) IN Name
@DESCRIPTION nvarchar(255) IN Description
@QUANTITY int IN Quantity available
@CAPACITYPERRESOURCE int IN Capacity per resource
@SCREENPLANID uniqueidentifier IN Screening plan
@PRICINGSTRUCTURECODE tinyint IN Pricing structure
@PRICE money IN Cost per resource

Definition

Copy

                CREATE procedure dbo.USP_DATAFORMTEMPLATE_EDIT_STAFF_RESOURCE
                (
                    @ID uniqueidentifier,
                    @CHANGEAGENTID uniqueidentifier = null,
                    @NAME nvarchar(50),
                    @DESCRIPTION nvarchar(255),
                    @QUANTITY int,
                    @CAPACITYPERRESOURCE int,
                    @SCREENPLANID uniqueidentifier,
                    @PRICINGSTRUCTURECODE tinyint,
                    @PRICE money
                )
                as

                    set nocount on;

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

                    declare @CURRENTDATE datetime
                    set @CURRENTDATE = getdate()

                    begin try
                        declare @MAXRESOURCEQUANTITY int
                        select @MAXRESOURCEQUANTITY = coalesce(max(QUANTITYNEEDED),0)
                        from dbo.GROUPTYPEREQUIREDSTAFFRESOURCE
                        where VOLUNTEERTYPEID = @ID

                        if @QUANTITY < @MAXRESOURCEQUANTITY
                        begin
                            declare @GROUPTYPE nvarchar(100)
                            select @GROUPTYPE = coalesce(DESCRIPTION,'')
                            from dbo.GROUPTYPEREQUIREDSTAFFRESOURCE
                            inner join dbo.GROUPSALESGROUPTYPECODE on
                                GROUPSALESGROUPTYPECODE.ID = GROUPTYPEREQUIREDSTAFFRESOURCE.GROUPSALESGROUPTYPECODEID
                            where
                                VOLUNTEERTYPEID = @ID and
                                QUANTITYNEEDED = @MAXRESOURCEQUANTITY

                            declare @ERRORMESSAGE nvarchar(200)
                            set @ERRORMESSAGE = '"' + @GROUPTYPE + '" group type requires a quantity of ' + convert(nvarchar(10), @MAXRESOURCEQUANTITY) + '.' 

                            raiserror(@ERRORMESSAGE, 13, 1);
                        end

                        update dbo.VOLUNTEERTYPE set
                            NAME = @NAME,
                            DESCRIPTION = @DESCRIPTION,
                            QUANTITY = @QUANTITY,
                            CAPACITYPERRESOURCE = @CAPACITYPERRESOURCE,
                            SCREENPLANID = @SCREENPLANID,

                            CHANGEDBYID = @CHANGEAGENTID,
                            DATECHANGED = @CURRENTDATE
                        where ID = @ID;

                        if exists(select 1 from dbo.VOLUNTEERTYPEPRICING where ID = @ID)
                            update dbo.VOLUNTEERTYPEPRICING set
                                PRICINGSTRUCTURECODE = @PRICINGSTRUCTURECODE,
                                PRICE = @PRICE,
                                CHANGEDBYID = @CHANGEAGENTID,
                                DATECHANGED = @CURRENTDATE
                            where ID = @ID;
                        else
                            insert into dbo.[VOLUNTEERTYPEPRICING]
                            (
                                ID,
                                PRICINGSTRUCTURECODE,
                                PRICE,
                                ADDEDBYID,
                                CHANGEDBYID,
                                DATEADDED,
                                DATECHANGED
                            )
                            values
                            (
                                @ID,
                                @PRICINGSTRUCTURECODE,
                                @PRICE,
                                @CHANGEAGENTID,
                                @CHANGEAGENTID,
                                @CURRENTDATE,
                                @CURRENTDATE
                            );
                    end try
                    begin catch
                        exec dbo.USP_RAISE_ERROR
                        return 1
                    end catch

                return 0;