USP_SALESORDER_ADDPATRON

Adds a patron to a sales order and updates the order accordingly.

Parameters

Parameter Parameter Type Mode Description
@SALESORDERID uniqueidentifier IN
@CONSTITUENTID uniqueidentifier IN
@CURRENTAPPUSERID uniqueidentifier IN
@CHANGEAGENTID uniqueidentifier IN
@CURRENTDATE datetime IN

Definition

Copy


            CREATE procedure dbo.USP_SALESORDER_ADDPATRON
            (
                @SALESORDERID uniqueidentifier,
                @CONSTITUENTID uniqueidentifier,
                @CURRENTAPPUSERID uniqueidentifier,
                @CHANGEAGENTID uniqueidentifier = null,
                @CURRENTDATE datetime = null
            )
            as
                set nocount on;

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

                if @CURRENTDATE is null
                    set @CURRENTDATE = getdate();

                declare @RECIPIENTID uniqueidentifier;
                declare @SAMEASPATRON bit;

                select
                  @RECIPIENTID = RECIPIENTID,
                  @SAMEASPATRON = SAMEASPATRON
                from dbo.SALESORDER
                where ID = @SALESORDERID;

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

                    if @SAMEASPATRON = 1
                    begin
                        update dbo.SALESORDER set
                            CONSTITUENTID = @CONSTITUENTID,
                            RECIPIENTID = @CONSTITUENTID,
                            ADDRESSID = (select top(1) ID from dbo.ADDRESS where CONSTITUENTID = @CONSTITUENTID and ISPRIMARY = 1 and DONOTMAIL = 0),
                            PHONEID = (select top(1) ID from dbo.PHONE where PHONE.CONSTITUENTID = @CONSTITUENTID and PHONE.ISPRIMARY = 1 and DONOTCALL = 0),
                            EMAILADDRESSID = (select top(1) ID from dbo.EMAILADDRESS where CONSTITUENTID = @CONSTITUENTID and ISPRIMARY = 1 and DONOTEMAIL = 0),
                            CHANGEDBYID = @CHANGEAGENTID,
                            DATECHANGED = @CURRENTDATE
                        where ID = @SALESORDERID;
                    end
                    else
                    begin
                        update dbo.SALESORDER set
                            CONSTITUENTID = @CONSTITUENTID,
                            CHANGEDBYID = @CHANGEAGENTID,
                            DATECHANGED = @CURRENTDATE
                        where ID = @SALESORDERID;
                    end

                    exec dbo.USP_SALESORDER_UPDATEPAYMENTCONSTITUENT @SALESORDERID, @CHANGEAGENTID;

                    if exists (select top 1 1 from dbo.SALESORDERITEM where SALESORDERID = @SALESORDERID)
                    begin
                        if not exists(select 1 from dbo.CONSTITUENT where ID = @CONSTITUENTID and ISGROUP = 1)
                            exec dbo.USP_SALESORDER_UPDATEPREREGISTEREDEVENTHOST @SALESORDERID, @CHANGEAGENTID;

                        exec dbo.USP_COMBINATION_REMOVEINELIGIBLECOMBINATIONS @SALESORDERID, @CHANGEAGENTID;
                        exec dbo.USP_SALESORDER_APPLYITEMDISCOUNTS @SALESORDERID, @CHANGEAGENTID;
                        exec dbo.USP_SALESORDER_APPLYORDERDISCOUNTS @SALESORDERID, @CHANGEAGENTID;
                        exec dbo.USP_SALESORDER_CALCULATETAXES @SALESORDERID, @CHANGEAGENTID;
                    end
                end try

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

                return 0;