USP_DATAFORMTEMPLATE_ADD_ORDERCREATECHECK

The save procedure used by the add dataform template "Order Create Check Add Data Form".

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier INOUT The output parameter indicating the ID of the record added.
@ORDERID uniqueidentifier IN OrderID
@SALESMETHODTYPECODE tinyint IN Sales Method
@CURRENTAPPUSERID uniqueidentifier IN Input parameter indicating the ID of the current user.
@CHANGEAGENTID uniqueidentifier IN Input parameter indicating the ID of the change agent invoking the procedure.

Definition

Copy

                CREATE procedure dbo.USP_DATAFORMTEMPLATE_ADD_ORDERCREATECHECK
                (
                    @ID uniqueidentifier = null output,
                    @ORDERID uniqueidentifier = null,
                    @SALESMETHODTYPECODE tinyint = null,
                    @CURRENTAPPUSERID uniqueidentifier,
                    @CHANGEAGENTID uniqueidentifier = null
                )
                as

                set nocount on;

                if @CHANGEAGENTID is null        --Try matching on the appuser's username
                    select top(1) @CHANGEAGENTID = CHANGEAGENT.ID 
                    from dbo.CHANGEAGENT inner join dbo.APPUSER on CHANGEAGENT.USERNAME = APPUSER.USERNAME
                    where APPUSER.ID = @CURRENTAPPUSERID
                    order by case when CHANGEAGENT.APPLICATIONNAME like 'Blackbaud App Server%' then 0 else 1 end
                        case when nullif(CHANGEAGENT.PROCESSNAME,'') is null then 0 else 1 end
                        case when CHANGEAGENT.APPLICATIONNAME like '%(WebShell)' then 0 when CHANGEAGENT.APPLICATIONNAME like '%(BlackbaudApplication)' then 1 else 2 end

                declare @CURRENTDATE datetime
                set @CURRENTDATE = getdate()

                begin try
                    declare @EXISTINGSALESORDERID uniqueidentifier;

                    select top(1
                        @EXISTINGSALESORDERID = ID
                    from dbo.SALESORDER 
                    where 
                        STATUSCODE = 0 and 
                        APPUSERID = @CURRENTAPPUSERID and
                        SALESMETHODTYPECODE = @SALESMETHODTYPECODE

                    declare @DELIVERYMETHODID uniqueidentifier;

                    select @DELIVERYMETHODID = DELIVERYMETHOD.ID
                    from dbo.SALESMETHODDELIVERYMETHOD
                        inner join dbo.SALESMETHOD on SALESMETHOD.ID = SALESMETHODDELIVERYMETHOD.SALESMETHODID
                        inner join dbo.DELIVERYMETHOD on DELIVERYMETHOD.ID = SALESMETHODDELIVERYMETHOD.DELIVERYMETHODID
                    where
                        SALESMETHOD.TYPECODE = @SALESMETHODTYPECODE and
                        DELIVERYMETHOD.ISACTIVE = 1 and
                        SALESMETHODDELIVERYMETHOD.ISDEFAULT = 1

                    if @EXISTINGSALESORDERID is null begin
                        if @ID is null begin
                            set @ID = newid()
                        end

                        insert into dbo.SALESORDER
                        (
                            ID, 
                            SALESMETHODTYPECODE,
                            DELIVERYMETHODID,
                            SAMEASPATRON,
                            ADDEDBYID, 
                            CHANGEDBYID, 
                            DATEADDED, 
                            DATECHANGED,
                            APPUSERID
                        )
                        values
                        (
                            @ID,
                            @SALESMETHODTYPECODE,
                            @DELIVERYMETHODID,
                            1,
                            @CHANGEAGENTID
                            @CHANGEAGENTID
                            @CURRENTDATE
                            @CURRENTDATE,
                            @CURRENTAPPUSERID
                        )
                    end
                    else begin
                        -- Hacky because the passed in ID is ignored
                        set @ID = @EXISTINGSALESORDERID;
                    end
                end try

                begin catch
                    exec dbo.USP_RAISE_ERROR
                    return 1
                end catch

                return 0