USP_DATALIST_RECEIVABLECREDITHISTORY

Return history information to the user about a given receivable credit .

Parameters

Parameter Parameter Type Mode Description
@CREDITID 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_RECEIVABLECREDITHISTORY
                (
                    @CREDITID 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 @CREDITDATEADDED datetime;
                    select
                        @CREDITDATEADDED = DATEADDED
                    from dbo.FINANCIALTRANSACTION
                    where ID = @CREDITID;

                    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 charge fields

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


                        -- Get updates to the charge table

                        if (@ACTIONTYPECODE = 0) or (@ACTIONTYPECODE = 2)
                        begin

                            insert into @HISTORY(RECORDID, AUDITDATE, ACTION, FIELD, OLD, NEW, CHANGEDBYUSER, PROCESS, CHANGEDBYAPP, SEQUENCE)
                                select
                                    @CREDITID as [RECORDID],
                                    [CHANGES].DATECHANGED,
                                    'Update' as [ACTION],
                                    [DETAIL].FIELD,
                                    case [DETAIL].FIELD when 'BILLINGITEMID' then dbo.UFN_BILLINGITEM_GETNAMEFROMPRODUCT([DETAIL].OLD) else [DETAIL].OLD end as OLD,
                                    case [DETAIL].FIELD when 'BILLINGITEMID' then dbo.UFN_BILLINGITEM_GETNAMEFROMPRODUCT([DETAIL].NEW) else [DETAIL].NEW end as NEW,
                                    [CHANGES].CHANGEDBYUSER,
                                    '' as [PROCESS],
                                    [CHANGES].CHANGEDBYAPP,
                                    0 as [SEQUENCE]
                                from dbo.UFN_AUDIT_GETRECENTCHANGES_FORTABLE('RECEIVABLECREDIT', 500, null, null, 0, 1, 0, null, null, @CREDITID) as [CHANGES]
                                cross apply dbo.UFN_AUDIT_GETDETAIL('RECEIVABLECREDITAUDIT', [CHANGES].AUDITKEY, @CREDITID ) 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);
                        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(@CREDITID, @USERID, @ACTIONTYPECODE, @STARTDATE, @ENDDATE, @RECORDTYPECODE, 1);

                    /*
                    -- Get the charge line item information
                    insert into @HISTORY(RECORDID, AUDITDATE, ACTION, FIELD, OLD, NEW, CHANGEDBYUSER, PROCESS, CHANGEDBYAPP, SEQUENCE)
                    select 
                        RECORDID,
                        case when ACTION = 'Insert' then DATEADDED when ACTION = 'Update' then DATECHANGED else AUDITDATE end as [AUDITDATE],
                        ACTION,
                        FIELD,
                        case FIELD when 'BILLINGITEMID' then dbo.UFN_BILLINGITEM_GETNAMEFROMPRODUCT(OLD) else OLD end as OLD,
                        case FIELD when 'BILLINGITEMID' then dbo.UFN_BILLINGITEM_GETNAMEFROMPRODUCT(NEW) else NEW end as NEW,
                        CHANGEDBYUSER,
                        '' as [PROCESS],
                        CHANGEDBYAPP,
                        50 as [SEQUENCE]
                    from dbo.UFN_AUDIT_GETDETAILFORCHILDTABLE_BYFIELDLIST('BILLINGITEMID', 'RECEIVABLECREDITLINEITEM', 'CREDITID', @CREDITID, @CREDITDATEADDED, 'Line item', '')
                    where (@ACTIONTYPECODE = 0)
                            or ((@ACTIONTYPECODE = 1) and (ACTION = 'Insert'))
                            or ((@ACTIONTYPECODE = 2) and (ACTION = 'Update'))
                            or ((@ACTIONTYPECODE = 3) and (ACTION = 'Delete'));
                    */

                    -- 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