USP_DATAFORMTEMPLATE_EDIT_ORDERDELIVERYMETHOD

The save procedure used by the edit dataform template "Order 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.
@DELIVERYMETHODID uniqueidentifier IN Method
@RECIPIENTID uniqueidentifier IN Recipient
@CHANGEAGENTID uniqueidentifier IN Input parameter indicating the ID of the change agent invoking the procedure.
@ADDRESSID uniqueidentifier IN Address
@PHONEID uniqueidentifier IN Phone number
@EMAILADDRESSID uniqueidentifier IN Email address
@SAMEASPATRON bit IN Use patron primary information
@CONSTITUENTSELECTED bit IN Constituent Selected

Definition

Copy


              CREATE procedure dbo.USP_DATAFORMTEMPLATE_EDIT_ORDERDELIVERYMETHOD
              (
                @ID uniqueidentifier,
                @DELIVERYMETHODID uniqueidentifier,
                @RECIPIENTID uniqueidentifier,
                @CHANGEAGENTID uniqueidentifier,
                @ADDRESSID uniqueidentifier,
                @PHONEID uniqueidentifier,
                @EMAILADDRESSID uniqueidentifier,
                @SAMEASPATRON bit,
                @CONSTITUENTSELECTED bit
              )
              as

                set nocount on;

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

                declare @CURRENTDATE datetime
                set @CURRENTDATE = getdate()

                begin try
                    exec dbo.USP_SALESORDER_ISCOMPLETE_RAISERROR @ID, @EXCLUDEGROUPSALES = 1;

                    -- validate required fields

                    declare @ADDRESSREQUIRED bit
                    declare @PHONEREQUIRED bit
                    declare @EMAILREQUIRED bit

                    select 
                        @ADDRESSREQUIRED = ADDRESSREQUIRED,
                        @PHONEREQUIRED = PHONEREQUIRED,
                        @EMAILREQUIRED = EMAILREQUIRED
                    from dbo.DELIVERYMETHOD where ID = @DELIVERYMETHODID

                    if @ADDRESSID is null and @ADDRESSREQUIRED = 1 raiserror('ADDRESSMISSING', 13, 1);
                    if @PHONEID is null and @PHONEREQUIRED = 1 raiserror('PHONEMISSING', 13, 1);
                    if @EMAILADDRESSID is null and @EMAILREQUIRED = 1 raiserror('EMAILMISSING', 13, 1);

                    -- validate address for completeness

                    declare @ADDRESSBLOCK nvarchar(150)
                    declare @CITY nvarchar(50)
                    declare @STATEID uniqueidentifier
                    declare @POSTCODE nvarchar(12)

                    if @ADDRESSID is not null and @ADDRESSREQUIRED = 1
                    begin
                        select 
                            @ADDRESSBLOCK = ADDRESSBLOCK,
                            @CITY = CITY,
                            @STATEID = STATEID,
                            @POSTCODE = POSTCODE
                        from dbo.ADDRESS where ID = @ADDRESSID

                        if @ADDRESSBLOCK is null or @ADDRESSBLOCK = '' or @CITY is null or @CITY = '' or @STATEID is null or @POSTCODE is null or @POSTCODE = ''
                            raiserror('ADDRESSINVALID', 13, 1)
                    end

                    /* REMOVING - DON'T NEED
                    declare @CONSTITUENTPHONEID uniqueidentifier;
                    declare @CONSTITUENTEMAILID uniqueidentifier;
                    declare @CONSTITUENTADDRESSID uniqueidentifier;
                    declare @CONSTITUENTID uniqueidentifier;

                    select
                        @CONSTITUENTPHONEID = P.ID,
                        @CONSTITUENTADDRESSID = A.ID,
                        @CONSTITUENTEMAILID = E.ID,
                        @CONSTITUENTID = S.CONSTITUENTID
                    from dbo.SALESORDER as S 
                    left join dbo.PHONE as P on S.CONSTITUENTID = P.CONSTITUENTID
                    left join dbo.ADDRESS as A on S.CONSTITUENTID = A.CONSTITUENTID
                    left join dbo.EMAILADDRESS as E on S.CONSTITUENTID = E.CONSTITUENTID
                    where S.ID = @ID;
                    */

                    if (select CONSTITUENTID from dbo.SALESORDER where ID = @ID) is null and @SAMEASPATRON = 1
                        begin
                            update dbo.SALESORDER
                            set 
                                CONSTITUENTID = @RECIPIENTID,
                                CHANGEDBYID = @CHANGEAGENTID,
                                DATECHANGED = @CURRENTDATE
                            where ID = @ID;
                        end

                    update dbo.SALESORDER
                    set 
                        DELIVERYMETHODID = @DELIVERYMETHODID,
                        RECIPIENTID = @RECIPIENTID,
                        ADDRESSID = @ADDRESSID,
                        PHONEID = @PHONEID,
                        EMAILADDRESSID = @EMAILADDRESSID,
                        SAMEASPATRON = @SAMEASPATRON,
                        CHANGEDBYID = @CHANGEAGENTID,
                        DATECHANGED = @CURRENTDATE
                    where ID = @ID;

                    exec dbo.USP_SALESORDER_CALCULATEFEES @ID, @CHANGEAGENTID;

                    exec dbo.USP_SALESORDER_CALCULATETAXES @ID, @CHANGEAGENTID;
              end try

              begin catch
                  exec dbo.USP_RAISE_ERROR
                  return 1
              end catch

              return 0