USP_MERCHANTACCOUNT_SAVE

Adds or updates a merchant account.

Parameters

Parameter Parameter Type Mode Description
@MERCHANTACCOUNTID uniqueidentifier IN
@SECONDSTOPROCESSRECORD int IN
@NUMBERTRANSACTIONSPERTHREAD int IN
@CHANGEAGENTID uniqueidentifier IN
@SITES xml IN
@CURRENTAPPUSERID uniqueidentifier IN

Definition

Copy


            CREATE procedure dbo.USP_MERCHANTACCOUNT_SAVE
            (
                @MERCHANTACCOUNTID uniqueidentifier,
                @SECONDSTOPROCESSRECORD int,
                @NUMBERTRANSACTIONSPERTHREAD int,
                @CHANGEAGENTID uniqueidentifier,
                @SITES xml = null,
                @CURRENTAPPUSERID uniqueidentifier = null
            )
            as
                set nocount on

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

                declare @CURRENTDATE datetime
                set @CURRENTDATE = getdate()

                declare @MERCHANTACCOUNTEXISTS bit = 0

                declare @MERCHANTACCOUNTSITES table
                (
                    SITEID uniqueidentifier
                )

                insert into @MERCHANTACCOUNTSITES(SITEID)
                select SITES.SITEID from dbo.UFN_MERCHANTACCOUNT_GETSITES_FROMITEMLISTXML(@SITES) as SITES

                declare @SITECOUNT as integer = 0;
                select @SITECOUNT = COUNT(MERCHANTACCOUNTSITES.SITEID) from @MERCHANTACCOUNTSITES MERCHANTACCOUNTSITES

                if @SITECOUNT = 0
                    insert into @MERCHANTACCOUNTSITES(SITEID) values(null)

                begin try

                    if (select count(MERCHANTACCOUNTSITES.SITEID) from @MERCHANTACCOUNTSITES as MERCHANTACCOUNTSITES) = 0
                    begin 
                        if dbo.UFN_SITEREQUIREDFORUSER(@CURRENTAPPUSERID) = 1 
                        begin
                            raiserror('BBERR_MERCHANTACCOUNTSITE_SITEREQUIRED',13,1);
                            return 1;
                        end
                    end
                    if @SITES is not null
                    begin
                        if not exists (select 1
                                    from @MERCHANTACCOUNTSITES as MERCHANTACCOUNTSITES
                                    where dbo.UFN_SITEALLOWEDFORUSER(@CURRENTAPPUSERID, MERCHANTACCOUNTSITES.SITEID) = 1)
                        begin
                            raiserror('BBERR_SITE_NOACCESS', 13, 1);
                            return 1;
                        end
                    end

                    update dbo.MERCHANTACCOUNT set
                        SECONDSTOPROCESSRECORD = @SECONDSTOPROCESSRECORD,
                        NUMBERTRANSACTIONSPERTHREAD = @NUMBERTRANSACTIONSPERTHREAD,
                        CHANGEDBYID = @CHANGEAGENTID,
                        DATECHANGED = @CURRENTDATE
                    where ID = @MERCHANTACCOUNTID

                    if @@ROWCOUNT > 0
                        set @MERCHANTACCOUNTEXISTS = 1

                    if @MERCHANTACCOUNTEXISTS = 1
                    begin
                        exec dbo.USP_MERCHANTACCOUNT_GETSITES_UPDATEFROMXML @MERCHANTACCOUNTID, @SITES, @CHANGEAGENTID, @CURRENTDATE
                    end

                    if @MERCHANTACCOUNTEXISTS = 0
                    begin
                        insert into dbo.MERCHANTACCOUNT (ID, SECONDSTOPROCESSRECORD, NUMBERTRANSACTIONSPERTHREAD, DATEADDED, DATECHANGED, ADDEDBYID, CHANGEDBYID)
                        values (@MERCHANTACCOUNTID, @SECONDSTOPROCESSRECORD, @NUMBERTRANSACTIONSPERTHREAD, @CURRENTDATE, @CURRENTDATE, @CHANGEAGENTID, @CHANGEAGENTID)

                        exec dbo.USP_MERCHANTACCOUNT_GETSITES_ADDFROMXML @MERCHANTACCOUNTID, @SITES, @CHANGEAGENTID, @CURRENTDATE
                    end

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

                return 0