USP_REVENUEBATCH_GENERATECONSTITUENTACCOUNTS

Generates CONSTITUENTACCOUNT records for BATCHREVENUECONSTITUENTACCOUNT belonging to the specified constituent.

Parameters

Parameter Parameter Type Mode Description
@BATCHREVENUECONSTITUENTID uniqueidentifier IN
@CONSTITUENTID uniqueidentifier IN
@CHANGEAGENTID uniqueidentifier IN
@BATCHREVENUECONSTITUENTACCOUNTID uniqueidentifier IN
@CONSTITUENTACCOUNTID uniqueidentifier INOUT

Definition

Copy


            CREATE procedure dbo.USP_REVENUEBATCH_GENERATECONSTITUENTACCOUNTS
            (
                @BATCHREVENUECONSTITUENTID            uniqueidentifier,
                @CONSTITUENTID                        uniqueidentifier,
                @CHANGEAGENTID                        uniqueidentifier = null,
                @BATCHREVENUECONSTITUENTACCOUNTID    uniqueidentifier = null,
                @CONSTITUENTACCOUNTID                uniqueidentifier = null output
            )
            as
                set nocount on

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

                declare @CURRENTDATE datetime
                set @CURRENTDATE = getdate()

                -- Create CONSTITUENTACCOUNT records for any BATCHREVENUECONSTITUENTACCOUNT records

                -- that correspond to this constituent


                -- Using @CONSTITUENTACCOUNTIDS so that we can update the dbo.BATCHREVENUE table

                -- to point to the generated CONSTITUENTACCOUNT records

                declare @CONSTITUENTACCOUNTIDS table
                (
                    BATCHREVENUECONSTITUENTACCOUNTID uniqueidentifier
                )

                -- Open the symmetric key for decryption

                exec dbo.USP_GET_KEY_ACCESS;

                insert into @CONSTITUENTACCOUNTIDS
                (
                    BATCHREVENUECONSTITUENTACCOUNTID
                )
                select
                    BRCA.ID
                from 
                    dbo.BATCHREVENUECONSTITUENTACCOUNT BRCA
                where
                    BRCA.CONSTITUENTID = @BATCHREVENUECONSTITUENTID

                declare @CURRENTBATCHREVENUECONSTITUENTACCOUNTID uniqueidentifier
                declare @FINANCIALINSTITUTIONID uniqueidentifier
                declare @BANKINGSYSTEMID uniqueidentifier
                declare @ROUTINGNUMBER nvarchar(9)
                declare @SORTCODE nvarchar(6)
                declare @BIC nvarchar(11)
                declare @BANKCODE nvarchar(25)
                declare @CURRENTCONSTITUENTID uniqueidentifier
                declare @ACCOUNTNUMBER nvarchar(max)
                declare @FINANCIALINSTITUTIONNAME nvarchar(100)
                declare @BRANCHNAME nvarchar(100)        
                declare @COUNTRYID uniqueidentifier

                declare @EXISTINGCONSTITUENTACCOUNTID uniqueidentifier
                declare @EXISTINGFINANCIALINSTITUTIONID uniqueidentifier

                declare CONSTITUENTACCOUNT_CURSOR cursor for
                select
                    BATCHREVENUECONSTITUENTACCOUNTID
                from
                    @CONSTITUENTACCOUNTIDS

                open CONSTITUENTACCOUNT_CURSOR
                fetch next from CONSTITUENTACCOUNT_CURSOR into @CURRENTBATCHREVENUECONSTITUENTACCOUNTID

                while @@FETCH_STATUS = 0
                begin
                    set @EXISTINGCONSTITUENTACCOUNTID = null
                    set @EXISTINGFINANCIALINSTITUTIONID = null

                    select
                        @FINANCIALINSTITUTIONID = BATCHREVENUECONSTITUENTACCOUNT.FINANCIALINSTITUTIONID,
                        @CURRENTCONSTITUENTID = BATCHREVENUECONSTITUENTACCOUNT.CONSTITUENTID,
                        @ACCOUNTNUMBER = coalesce(convert(nvarchar(50), DecryptByKey(BATCHREVENUECONSTITUENTACCOUNT.ACCOUNTNUMBER)),'')
                    from
                        dbo.BATCHREVENUECONSTITUENTACCOUNT
                    where
                        BATCHREVENUECONSTITUENTACCOUNT.ID = @CURRENTBATCHREVENUECONSTITUENTACCOUNTID

                    if (
                        select
                            count(FINANCIALINSTITUTION.ID)
                        from
                            dbo.FINANCIALINSTITUTION
                        where
                            FINANCIALINSTITUTION.ID = @FINANCIALINSTITUTIONID
                        ) = 1
                    begin
                        set @EXISTINGFINANCIALINSTITUTIONID = @FINANCIALINSTITUTIONID
                         if (
                            select
   count(ID)
                            from 
                                dbo.CONSTITUENTACCOUNT
                            where
                                --modified to use @CONSTITUENTID in OR configuration -ken getch 1/20/2015

                                (CONSTITUENTACCOUNT.CONSTITUENTID = @CURRENTCONSTITUENTID OR
                                CONSTITUENTACCOUNT.CONSTITUENTID = @CONSTITUENTID)
                                and coalesce(convert(nvarchar(50), DecryptByKey(CONSTITUENTACCOUNT.ACCOUNTNUMBER)),'') = @ACCOUNTNUMBER
                                and CONSTITUENTACCOUNT.FINANCIALINSTITUTIONID = @FINANCIALINSTITUTIONID
                            ) > 0
                        begin
                            select
                                @EXISTINGCONSTITUENTACCOUNTID = CONSTITUENTACCOUNT.ID
                            from 
                                dbo.CONSTITUENTACCOUNT
                            where
                                --modified to use @CONSTITUENTID in OR configuration -ken getch 1/20/2015

                                (CONSTITUENTACCOUNT.CONSTITUENTID = @CURRENTCONSTITUENTID OR
                                CONSTITUENTACCOUNT.CONSTITUENTID = @CONSTITUENTID)
                                and coalesce(convert(nvarchar(50), DecryptByKey(CONSTITUENTACCOUNT.ACCOUNTNUMBER)),'') = @ACCOUNTNUMBER
                                and CONSTITUENTACCOUNT.FINANCIALINSTITUTIONID = @FINANCIALINSTITUTIONID
                        end
                    end
                    else if (
                            select
                                count(ID)
                            from
                                dbo.BATCHREVENUEFINANCIALINSTITUTION
                            where
                                BATCHREVENUEFINANCIALINSTITUTION.ID = @FINANCIALINSTITUTIONID
                            ) = 1
                    begin
                        select
                            @BANKINGSYSTEMID = BATCHREVENUEFINANCIALINSTITUTION.BANKINGSYSTEMID,
                            @ROUTINGNUMBER = BATCHREVENUEFINANCIALINSTITUTION.ROUTINGNUMBER,
                            @SORTCODE = BATCHREVENUEFINANCIALINSTITUTION.SORTCODE,
                            @BIC = BATCHREVENUEFINANCIALINSTITUTION.BIC,
                            @BANKCODE = BATCHREVENUEFINANCIALINSTITUTION.BANKCODE,
                            @FINANCIALINSTITUTIONNAME = BATCHREVENUEFINANCIALINSTITUTION.FINANCIALINSTITUTION,
                            @BRANCHNAME = BATCHREVENUEFINANCIALINSTITUTION.BRANCHNAME,
                            @COUNTRYID = BATCHREVENUEFINANCIALINSTITUTION.COUNTRYID
                        from
                            dbo.BATCHREVENUEFINANCIALINSTITUTION
                        where
                            BATCHREVENUEFINANCIALINSTITUTION.ID = @FINANCIALINSTITUTIONID

                        exec dbo.USP_REVENUEBATCH_GETCONSTITUENTACCOUNT
                            @CONSTITUENTACCOUNTID = @EXISTINGCONSTITUENTACCOUNTID output,
                            @FINANCIALINSTITUTIONID = @EXISTINGFINANCIALINSTITUTIONID output,
                            @BANKINGSYSTEMID = @BANKINGSYSTEMID output,
                            @ROUTINGNUMBER = @ROUTINGNUMBER,
                            @SORTCODE = @SORTCODE,
                            @BIC = @BIC,
                            @BANKCODE = @BANKCODE,
                            @CONSTITUENTID = @CONSTITUENTID,
                            @ACCOUNTNUMBER = @ACCOUNTNUMBER,
                            @FINANCIALINSTITUTIONNAME = @FINANCIALINSTITUTIONNAME output,
                            @BRANCHNAME = @BRANCHNAME
                    end

                    if @EXISTINGCONSTITUENTACCOUNTID is null
                    begin
                        if @EXISTINGFINANCIALINSTITUTIONID is null
  begin

                            set @EXISTINGFINANCIALINSTITUTIONID = newid()

                            insert into dbo.FINANCIALINSTITUTION
                            (
                                ID,
                                FINANCIALINSTITUTION,
                                BRANCHNAME, 
                                ROUTINGNUMBER,
                                SORTCODE,
                                ADDEDBYID, 
                                CHANGEDBYID, 
                                DATEADDED, 
                                DATECHANGED,
                                BANKINGSYSTEMID,
                                BIC,
                                BANKCODE,
                                COUNTRYID
                            )
                            values
                            (
                                @EXISTINGFINANCIALINSTITUTIONID,
                                @FINANCIALINSTITUTIONNAME,
                                @BRANCHNAME
                                @ROUTINGNUMBER,
                                @SORTCODE,
                                @CHANGEAGENTID
                                @CHANGEAGENTID
                                @CURRENTDATE
                                @CURRENTDATE,
                                @BANKINGSYSTEMID,
                                @BIC,
                                @BANKCODE,
                                @COUNTRYID
                            )
                        end

                        set @EXISTINGCONSTITUENTACCOUNTID = newid()

                        insert into dbo.CONSTITUENTACCOUNT
                        (
                            ID,
                            CONSTITUENTID,
                            FINANCIALINSTITUTIONID,
                            ACCOUNTNUMBER,
                            ACCOUNTNUMBERINDEX,
                            ACCOUNTTYPECODE,
                            EFTSTATUSCODE,
                            ACCOUNTNAME,
                            ADDEDBYID,
                            CHANGEDBYID,
                            DATEADDED,
                            DATECHANGED
                        )
                        select
                            @EXISTINGCONSTITUENTACCOUNTID,
                            @CONSTITUENTID,
                            @EXISTINGFINANCIALINSTITUTIONID,
                            BRCA.ACCOUNTNUMBER,
                            dbo.UFN_GET_MAC_FOR_TEXT(BRCA.ACCOUNTNUMBER, 'dbo.CONSTITUENTACCOUNT'),
                            BRCA.ACCOUNTTYPECODE,
                            BRCA.EFTSTATUSCODE,
                            BRCA.ACCOUNTNAME,
                            @CHANGEAGENTID,
                            @CHANGEAGENTID,
                            @CURRENTDATE,
                            @CURRENTDATE
                        from 
                            dbo.BATCHREVENUECONSTITUENTACCOUNT BRCA
                        where
                            BRCA.ID = @CURRENTBATCHREVENUECONSTITUENTACCOUNTID
                    end

                    if @CURRENTBATCHREVENUECONSTITUENTACCOUNTID = @BATCHREVENUECONSTITUENTACCOUNTID
                    begin
                        set @CONSTITUENTACCOUNTID = @EXISTINGCONSTITUENTACCOUNTID
                    end

                    update 
                        dbo.BATCHREVENUE
                    set
                        CONSTITUENTACCOUNTID = @EXISTINGCONSTITUENTACCOUNTID,
                        CHANGEDBYID = @CHANGEAGENTID,
                        DATECHANGED = @CURRENTDATE
                    from 
                        dbo.BATCHREVENUE
                    where
                        BATCHREVENUE.CONSTITUENTACCOUNTID = @CURRENTBATCHREVENUECONSTITUENTACCOUNTID

                    update dbo.SEPAMANDATE
                    set
                        CONSTITUENTACCOUNTID = @EXISTINGCONSTITUENTACCOUNTID,
                        BATCHREVENUECONSTITUENTACCOUNTID = null,
                        CHANGEDBYID = @CHANGEAGENTID,
                        DATECHANGED = @CURRENTDATE
                    from dbo.SEPAMANDATE
                    where SEPAMANDATE.BATCHREVENUECONSTITUENTACCOUNTID = @CURRENTBATCHREVENUECONSTITUENTACCOUNTID;

                    declare @CURRENTBATCHREVENUEFINANCIALINSTITUTIONID uniqueidentifier

                    select
                        @CURRENTBATCHREVENUEFINANCIALINSTITUTIONID = BATCHREVENUECONSTITUENTACCOUNT.FINANCIALINSTITUTIONID
                    from
                        dbo.BATCHREVENUECONSTITUENTACCOUNT
                    where
                        BATCHREVENUECONSTITUENTACCOUNT.ID = @CURRENTBATCHREVENUECONSTITUENTACCOUNTID

                    exec dbo.USP_BATCHREVENUECONSTITUENTACCOUNT_DELETEBYID_WITHCHANGEAGENTID @CURRENTBATCHREVENUECONSTITUENTACCOUNTID, @CHANGEAGENTID;
                    exec dbo.USP_BATCHREVENUEFINANCIALINSTITUTION_DELETEBYID_WITHCHANGEAGENTID @CURRENTBATCHREVENUEFINANCIALINSTITUTIONID, @CHANGEAGENTID;

                    fetch next from CONSTITUENTACCOUNT_CURSOR into @CURRENTBATCHREVENUECONSTITUENTACCOUNTID
                end

                close CONSTITUENTACCOUNT_CURSOR
                deallocate CONSTITUENTACCOUNT_CURSOR

                close symmetric key sym_BBInfinity;