USP_DATAFORMTEMPLATE_EDITSAVE_DELIVERYMETHOD

The save procedure used by the edit dataform template "Delivery Method 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
@NAMEREQUIRED bit IN Require name
@ADDRESSREQUIRED bit IN Require address
@PHONEREQUIRED bit IN Require phone number
@EMAILREQUIRED bit IN Require e-mail address
@BLOCKDELIVERY bit IN Block this delivery type
@BLOCKTIMEVALUE smallint IN Block this delivery time
@BLOCKTIMEUNITCODE tinyint IN Unit of time
@PRINTCODE tinyint IN Print sales documents

Definition

Copy

CREATE procedure dbo.USP_DATAFORMTEMPLATE_EDITSAVE_DELIVERYMETHOD
(
    @ID uniqueidentifier,
    @CHANGEAGENTID uniqueidentifier = null,
    @NAME nvarchar(100),
    @NAMEREQUIRED bit,
    @ADDRESSREQUIRED bit,
    @PHONEREQUIRED bit,
    @EMAILREQUIRED bit,
    @BLOCKDELIVERY bit,
    @BLOCKTIMEVALUE smallint,
    @BLOCKTIMEUNITCODE tinyint,
    @PRINTCODE tinyint
)
as
    set nocount on;

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

    declare @CURRENTDATE datetime
    set @CURRENTDATE = getdate()

    begin try
        if
            @PRINTCODE = 2 and
            exists (
                select 1
                from dbo.SALESMETHODDELIVERYMETHOD
                inner join dbo.SALESMETHOD
                    on SALESMETHODDELIVERYMETHOD.SALESMETHODID = SALESMETHOD.ID
                where 
                    DELIVERYMETHODID = @ID and
                    SALESMETHOD.TYPECODE in (0,1)
            )
        begin
            raiserror('BBERR_DELIVERYMETHOD_INVALIDSALESMETHOD_PRINTATHOME', 13, 1);
        end
        else if
            @PRINTCODE = 2 and
            exists (
                select 1
                from dbo.DOCUMENTPRINTINGRULE
                where DELIVERYMETHODID = @ID
            )
        begin
            raiserror('BBERR_DELIVERYMETHOD_SALESDOCUMENTRULES_PRINTATHOME', 13, 1);
        end

        --Don't count on the UI to set this.  Print at home requires an e-mail address.
        if @PRINTCODE = 2
            set @EMAILREQUIRED = 1

        update
            dbo.DELIVERYMETHOD
        set
            NAME = @NAME,
            NAMEREQUIRED = @NAMEREQUIRED,
            ADDRESSREQUIRED = @ADDRESSREQUIRED,
            PHONEREQUIRED = @PHONEREQUIRED,
            EMAILREQUIRED = @EMAILREQUIRED,
            BLOCKDELIVERY = @BLOCKDELIVERY,
            BLOCKTIMEVALUE = @BLOCKTIMEVALUE,
            BLOCKTIMEUNITCODE = @BLOCKTIMEUNITCODE,
            PRINTCODE = @PRINTCODE,
            CHANGEDBYID = @CHANGEAGENTID,
            DATECHANGED = @CURRENTDATE
        where
            ID = @ID
    end try
    begin catch
        exec dbo.USP_RAISE_ERROR
        return 1
    end catch

    return 0;