USP_DATALIST_RECEIVABLEPAYMENTHISTORY

Returns history information about payments.

Parameters

Parameter Parameter Type Mode Description
@RECEIVABLEPAYMENTID uniqueidentifier IN Input parameter indicating the context ID for the data list.
@USERID uniqueidentifier IN User
@ACTIONTYPECODE tinyint IN Action
@SHOWCODE tinyint IN Show
@STARTDATE datetime IN Start date
@ENDDATE datetime IN End date
@RECORDTYPECODE tinyint IN Field type

Definition

Copy


                CREATE procedure dbo.USP_DATALIST_RECEIVABLEPAYMENTHISTORY
                (
                    @RECEIVABLEPAYMENTID uniqueidentifier,
                    @USERID uniqueidentifier = null,
                    @ACTIONTYPECODE tinyint = 0,
                    @SHOWCODE tinyint = 1,
                    @STARTDATE datetime = null,
                    @ENDDATE datetime = null,
                    @RECORDTYPECODE tinyint = 0
                )
                as
                begin
                    set nocount on;

                    declare @HISTORY table
                    (
                        RECORDID uniqueidentifier,
                        AUDITDATE datetime,
                        CHANGEDBYUSER nvarchar(128),
                        PROCESS nvarchar(255),
                        FIELD nvarchar(128),
                        OLD nvarchar(4000),
                        NEW nvarchar(4000),
                        SEQUENCE int,
                        ACTION nvarchar(8),
                        CHANGEDBYAPP nvarchar(200)
                    )

                    declare @USERNAME nvarchar(128);

                    declare @RECEIVABLEPAYMENTDATEADDED datetime;
                    select
                        @RECEIVABLEPAYMENTDATEADDED = DATEADDED
                    from dbo.FINANCIALTRANSACTION
                    where ID = @RECEIVABLEPAYMENTID;

                    if not @USERID is null
                    begin
                        select 
                            @USERNAME = USERNAME 
                        from dbo.APPUSER 
                        where APPUSER.ID = @USERID;
                    end
                    else
                    begin
                        set @USERNAME = '';
                    end

                    -- Handle the date filters

                    if (@SHOWCODE = 0)        -- all

                    begin
                        set @STARTDATE = null
                        set @ENDDATE = null
                    end

                    -- See if we are filtering, if so then we know the end date is today

                    if (@SHOWCODE >= 1) and (@SHOWCODE < 99)
                    begin
                        set @ENDDATE = dbo.UFN_DATE_GETLATESTTIME(getdate());

                        if (@SHOWCODE <= 3)        -- Last 30, 60, 90 days

                        begin
                            set @STARTDATE = dateadd(d, -30 * @SHOWCODE, @ENDDATE)
                        end

                        if (@SHOWCODE = 4)        -- Last 6 months

                        begin
                            set @STARTDATE = dateadd(m, -6, @ENDDATE)
                        end

                        if (@SHOWCODE = 5)        -- Last year

                        begin
                            set @STARTDATE = dateadd(y, -1, @ENDDATE)
                        end

                        if (@SHOWCODE = 6)        -- Last 5 years

                        begin
                            set @STARTDATE = dateadd(y, -5, @ENDDATE)
                        end

                    end

                    --Handle receivable payment fields

                    if (@RECORDTYPECODE = 0) or (@RECORDTYPECODE = 1)
                    begin
                        -- DO NOT Get the insert into the receivable payment table, the insert of the financial transaction will handle this


                        -- Get updates to the receivable payment table

                        if (@ACTIONTYPECODE = 0) or (@ACTIONTYPECODE = 2)
                        begin
                            -- First the base receivable payment table

                            insert into @HISTORY(RECORDID, AUDITDATE, ACTION, FIELD, OLD, NEW, CHANGEDBYUSER, PROCESS, CHANGEDBYAPP, SEQUENCE)
                                select
                                    @RECEIVABLEPAYMENTID as [RECORDID],
                                    [CHANGES].DATECHANGED,
                                    'Update' as [ACTION],
                                    [DETAIL].FIELD,
                                    [DETAIL].OLD,
                                    [DETAIL].NEW,
                                    [CHANGES].CHANGEDBYUSER,
                                    '' as [PROCESS],
                                    [CHANGES].CHANGEDBYAPP,
                                    0 as [SEQUENCE]
                                from dbo.UFN_AUDIT_GETRECENTCHANGES_FORTABLE('RECEIVABLEPAYMENT', 500, null, null, 0, 1, 0, null, null, @RECEIVABLEPAYMENTID) as [CHANGES]
                                cross apply dbo.UFN_AUDIT_GETDETAIL('RECEIVABLEPAYMENTAUDIT', [CHANGES].AUDITKEY, @RECEIVABLEPAYMENTID ) as [DETAIL]
                                where ( [DETAIL].FIELD <> 'DATECHANGED' and [DETAIL].FIELD <> 'CHANGEDBYID' and [DETAIL].FIELD <> 'ADDEDBYID' and [DETAIL].FIELD <> 'DATEADDED' and [DETAIL].FIELD <> 'TYPE')
                                    and (@USERID is null or CHANGEDBYUSER = @USERNAME)
                                    and (@ACTIONTYPECODE = 0 or @ACTIONTYPECODE = 2)
                                    and (@STARTDATE is null or [CHANGES].DATECHANGED >= @STARTDATE)
                                    and (@ENDDATE is null or [CHANGES].DATECHANGED <= @ENDDATE);

                            -- Second receivable payment check

                            insert into @HISTORY(RECORDID, AUDITDATE, ACTION, FIELD, OLD, NEW, CHANGEDBYUSER, PROCESS, CHANGEDBYAPP, SEQUENCE)
                                select
                                    @RECEIVABLEPAYMENTID as [RECORDID],
                                    [CHANGES].DATECHANGED,
                                    'Update' as [ACTION],
                                    [DETAIL].FIELD,
                                    [DETAIL].OLD,
                                    [DETAIL].NEW,
                                    [CHANGES].CHANGEDBYUSER,
                                    '' as [PROCESS],
                                    [CHANGES].CHANGEDBYAPP,
                                    0 as [SEQUENCE]
                                from dbo.UFN_AUDIT_GETRECENTCHANGES_FORTABLE('RECEIVABLEPAYMENTCHECK', 500, null, null, 0, 1, 0, null, null, @RECEIVABLEPAYMENTID) as [CHANGES]
                                cross apply dbo.UFN_AUDIT_GETDETAIL('RECEIVABLEPAYMENTCHECKAUDIT', [CHANGES].AUDITKEY, @RECEIVABLEPAYMENTID ) as [DETAIL]
                                where ( [DETAIL].FIELD <> 'DATECHANGED' and [DETAIL].FIELD <> 'CHANGEDBYID' and [DETAIL].FIELD <> 'ADDEDBYID' and [DETAIL].FIELD <> 'DATEADDED' and [DETAIL].FIELD <> 'TYPE')
                                    and (@USERID is null or CHANGEDBYUSER = @USERNAME)
                                    and (@ACTIONTYPECODE = 0 or @ACTIONTYPECODE = 2)
                                    and (@STARTDATE is null or [CHANGES].DATECHANGED >= @STARTDATE)
                                    and (@ENDDATE is null or [CHANGES].DATECHANGED <= @ENDDATE);

                            -- Third receivable payment credit card

                            insert into @HISTORY(RECORDID, AUDITDATE, ACTION, FIELD, OLD, NEW, CHANGEDBYUSER, PROCESS, CHANGEDBYAPP, SEQUENCE)
                                select
                                    @RECEIVABLEPAYMENTID as [RECORDID],
                                    [CHANGES].DATECHANGED,
                                    'Update' as [ACTION],
                                    [DETAIL].FIELD,
                                    [DETAIL].OLD,
                                    [DETAIL].NEW,
                                    [CHANGES].CHANGEDBYUSER,
                                    '' as [PROCESS],
                                    [CHANGES].CHANGEDBYAPP,
                                    0 as [SEQUENCE]
                                from dbo.UFN_AUDIT_GETRECENTCHANGES_FORTABLE('RECEIVABLEPAYMENTCREDITCARD', 500, null, null, 0, 1, 0, null, null, @RECEIVABLEPAYMENTID) as [CHANGES]
                                cross apply dbo.UFN_AUDIT_GETDETAIL('RECEIVABLEPAYMENTCREDITCARDAUDIT', [CHANGES].AUDITKEY, @RECEIVABLEPAYMENTID ) as [DETAIL]
                                where ( [DETAIL].FIELD <> 'DATECHANGED' and [DETAIL].FIELD <> 'CHANGEDBYID' and [DETAIL].FIELD <> 'ADDEDBYID' and [DETAIL].FIELD <> 'DATEADDED' and [DETAIL].FIELD <> 'TRANSACTIONID')
                                    and (@USERID is null or CHANGEDBYUSER = @USERNAME)
                                    and (@ACTIONTYPECODE = 0 or @ACTIONTYPECODE = 2)
                                    and (@STARTDATE is null or [CHANGES].DATECHANGED >= @STARTDATE)
                                    and (@ENDDATE is null or [CHANGES].DATECHANGED <= @ENDDATE);

                            -- Fourth receivable payment direct debit

                            insert into @HISTORY(RECORDID, AUDITDATE, ACTION, FIELD, OLD, NEW, CHANGEDBYUSER, PROCESS, CHANGEDBYAPP, SEQUENCE)
                                select
                                    @RECEIVABLEPAYMENTID as [RECORDID],
                                    [CHANGES].DATECHANGED,
                                    'Update' as [ACTION],
                                    [DETAIL].FIELD,
                                    case [DETAIL].FIELD when 'CONSTITUENTACCOUNTID' then dbo.UFN_CONSTITUENTACCOUNT_GETDESCRIPTION([DETAIL].OLD) else [DETAIL].OLD end as OLD,
                                    case [DETAIL].FIELD when 'CONSTITUENTACCOUNTID' then dbo.UFN_CONSTITUENTACCOUNT_GETDESCRIPTION([DETAIL].NEW) else [DETAIL].NEW end as NEW,
                                    [CHANGES].CHANGEDBYUSER,
                                    '' as [PROCESS],
                          [CHANGES].CHANGEDBYAPP,
                                    0 as [SEQUENCE]
                                from dbo.UFN_AUDIT_GETRECENTCHANGES_FORTABLE('RECEIVABLEPAYMENTDIRECTDEBIT', 500, null, null, 0, 1, 0, null, null, @RECEIVABLEPAYMENTID) as [CHANGES]
                                cross apply dbo.UFN_AUDIT_GETDETAIL('RECEIVABLEPAYMENTDIRECTDEBITAUDIT', [CHANGES].AUDITKEY, @RECEIVABLEPAYMENTID ) as [DETAIL]
                                where ( [DETAIL].FIELD <> 'DATECHANGED' and [DETAIL].FIELD <> 'CHANGEDBYID' and [DETAIL].FIELD <> 'ADDEDBYID' and [DETAIL].FIELD <> 'DATEADDED' and [DETAIL].FIELD <> 'TRANSACTIONID')
                                    and (@USERID is null or CHANGEDBYUSER = @USERNAME)
                                    and (@ACTIONTYPECODE = 0 or @ACTIONTYPECODE = 2)
                                    and (@STARTDATE is null or [CHANGES].DATECHANGED >= @STARTDATE)
                                    and (@ENDDATE is null or [CHANGES].DATECHANGED <= @ENDDATE);
                        end
                    end

                    --Get the generic financial transaction changes

                    insert into @HISTORY(RECORDID, AUDITDATE, ACTION, FIELD, OLD, NEW, CHANGEDBYUSER, PROCESS, CHANGEDBYAPP, SEQUENCE)
                    select RECORDID, 
                            AUDITDATE, 
                            ACTION, 
                            FIELD, 
                            OLD
                            NEW
                            CHANGEDBYUSER, 
                            PROCESS, 
                            CHANGEDBYAPP, 
                            SEQUENCE
                    from dbo.UFN_FINANCIALTRANSACTION_GETHISTORY(@RECEIVABLEPAYMENTID, @USERID, @ACTIONTYPECODE, @STARTDATE, @ENDDATE, @RECORDTYPECODE, 1); -- Receivable payments do not have line items (yet)


                    -- Return the contents of the history table

                    select RECORDID, 
                            AUDITDATE, 
                            case when ACTION = 'Insert' then 'Add' when ACTION = 'Update' then 'Edit' else ACTION end as [ACTION], 
                            FIELD, 
                            OLD as ValueBefore, 
                            NEW as ValueAfter, 
                            CHANGEDBYUSER, 
                            PROCESS, 
                            CHANGEDBYAPP, 
                            SEQUENCE,
                            case when ACTION = 'Delete' then 0 when ACTION = 'Update' then 1 else 2 end as [ACTIONSORT]
                    from @HISTORY;

                end