UFN_REVENUE_GENERATEGLDISTRIBUTION

Generates GL Account Code from the Account code mappings defined in the system.

Return

Return Type
table

Parameters

Parameter Parameter Type Mode Description
@REVENUEID uniqueidentifier IN

Definition

Copy


            CREATE function dbo.UFN_REVENUE_GENERATEGLDISTRIBUTION(@REVENUEID uniqueidentifier = null)
            returns @DISTRIBUTIONS TABLE
            (
                REVENUEID uniqueidentifier,
                GLPAYMENTMETHODREVENUETYPEMAPPINGID uniqueidentifier,
                TRANSACTIONTYPECODE tinyint,
                POSTDATE datetime,
                POSTSTATUSCODE tinyint,
                ACCOUNTSTRING nvarchar(255),
                PROJECT nvarchar(255),
                AMOUNT money,
                REFERENCE nvarchar(255),
                ERRORMESSAGE nvarchar(max),
                PAYMENTMETHODCODE tinyint,
                REVENUETRANSACTIONTYPECODE tinyint,
                REVENUESPLITID uniqueidentifier,
                MAPPEDVALUES xml
            )
            as begin

            -- If we have a revenue ID, use the UFN_REVENUE_GENERATEGLDISTRIBUTION_FORSINGLEREVENUE function, which is more efficient

            if @REVENUEID is not null
            begin
                insert into @DISTRIBUTIONS(REVENUEID,GLPAYMENTMETHODREVENUETYPEMAPPINGID,TRANSACTIONTYPECODE,POSTDATE,POSTSTATUSCODE,ACCOUNTSTRING,PROJECT,AMOUNT,REFERENCE,ERRORMESSAGE,PAYMENTMETHODCODE,REVENUETRANSACTIONTYPECODE,REVENUESPLITID,MAPPEDVALUES)
                select
                    REVENUEID,
                    GLPAYMENTMETHODREVENUETYPEMAPPINGID,
                    TRANSACTIONTYPECODE,
                    POSTDATE,
                    POSTSTATUSCODE,
                    ACCOUNTSTRING,
                    PROJECT,
                    AMOUNT,
                    REFERENCE,
                    ERRORMESSAGE,
                    PAYMENTMETHODCODE,
                    REVENUETRANSACTIONTYPECODE,
                    REVENUESPLITID,
                    MAPPEDVALUES
                from 
                    dbo.UFN_REVENUE_GENERATEGLDISTRIBUTION_FORSINGLEREVENUE(@REVENUEID);

                return;
            end

            else

            begin
                insert into @DISTRIBUTIONS(REVENUEID,GLPAYMENTMETHODREVENUETYPEMAPPINGID,TRANSACTIONTYPECODE,POSTDATE,POSTSTATUSCODE,ACCOUNTSTRING,PROJECT,AMOUNT,REFERENCE,ERRORMESSAGE,PAYMENTMETHODCODE,REVENUETRANSACTIONTYPECODE,REVENUESPLITID,MAPPEDVALUES)

                /* Getting 'Postable' Revenue            */
                select REVENUE.ID as REVENUEID, 
                    dbo.UFN_POSTTOGLPROCESS_GETGLPAYMENTMETHODREVENUETYPEMAPPINGID(REVENUEPAYMENTMETHOD.PAYMENTMETHODCODE, REVENUE.TRANSACTIONTYPECODE, REVENUESPLIT.TYPECODE, REVENUESPLIT.APPLICATIONCODE, tf.TRANSACTIONTYPECODE) as GLPAYMENTMETHODREVENUETYPEMAPPINGID,
                    tf.TRANSACTIONTYPECODE, 
                    case when ADJUSTMENT.ID is null then REVENUE.POSTDATE        -- same reason as above

                         else ADJUSTMENT.POSTDATE
                    end as POSTDATE,
                    case when ADJUSTMENT.ID is null then (case when REVENUE.DONOTPOST = 1 then 2 when REVENUEPOSTED.ID is not null then 0 else 1 end)        -- same reason as above. 

                         else ADJUSTMENT.POSTSTATUSCODE
                    end as POSTSTATUSCODE,
                    tf.ACCOUNTSTRING, 
                    tf.PROJECTCODE as PROJECT, 
                    REVENUESPLIT.AMOUNT, 
                    dbo.UFN_POSTTOGLPROCESS_GETJOURNALREFERENCE (REVENUESPLIT.ID, REVENUEPAYMENTMETHOD.PAYMENTMETHOD, REVENUESPLIT.APPLICATION) as REFERENCE,
                    tf.ERRORMESSAGE,
                    REVENUEPAYMENTMETHOD.PAYMENTMETHODCODE,
                    REVENUE.TRANSACTIONTYPECODE as REVENUETRANSACTIONTYPECODE,
                    REVENUESPLIT.ID as REVENUESPLITID,
                    tf.MAPPEDVALUES
                from dbo.REVENUE with (nolock)
                left join dbo.REVENUEPOSTED with (nolock) on REVENUEPOSTED.ID = REVENUE.ID
                inner join dbo.REVENUESPLIT with (nolock) on REVENUE.ID = REVENUESPLIT.REVENUEID 
                inner join dbo.REVENUEPAYMENTMETHOD with (nolock) on REVENUE.ID = REVENUEPAYMENTMETHOD.REVENUEID 
                left join dbo.ADJUSTMENT with (nolock) on REVENUE.ID = ADJUSTMENT.REVENUEID and ADJUSTMENT.POSTSTATUSCODE <> 0 
                cross apply UFN_REVENUE_GENERATEGLACCOUNT(REVENUESPLIT.ID, REVENUE.TRANSACTIONTYPECODE,REVENUESPLIT.TYPECODE, REVENUESPLIT.APPLICATIONCODE, REVENUEPAYMENTMETHOD.PAYMENTMETHODCODE, REVENUESPLIT.DESIGNATIONID) as tf
                where    (REVENUE.ID = @REVENUEID or @REVENUEID is null)
                        and (not ((REVENUEPAYMENTMETHOD.PAYMENTMETHODCODE = 4 and exists(select ID from dbo.STOCKSALE where STOCKDETAILID = REVENUEPAYMENTMETHOD.ID)) or 
                            (REVENUEPAYMENTMETHOD.PAYMENTMETHODCODE = 5 and exists(select ID from dbo.PROPERTYDETAIL where PROPERTYDETAIL.ID = REVENUEPAYMENTMETHOD.ID and ISSOLD = 1)))  --special handling for sold stock/property

                        and (not REVENUE.TRANSACTIONTYPECODE = 1) --special handling for Pledge

                        and (not REVENUESPLIT.APPLICATIONCODE in (1,2,5)) --special handling for Pledge Payment and Event Registration and Membership

                        )                

        union all

                /*
                    We need special handling for sold stock and property. When a stock is sold it's paymentmethodcode changes from 4 to 7 (or 5 to 8 in case of property)
                    But even after selling we need to capture the unsold information and so need to pass in 4 and 5 to UFN_POSTTOGLPROCESS_GETJOURNALREFERENCE
                    and UFN_REVENUE_GENERATEGLACCOUNT to get the correct journal reference and account numbers respectively.
                */

                select REVENUE.ID as REVENUEID, 
                    dbo.UFN_POSTTOGLPROCESS_GETGLPAYMENTMETHODREVENUETYPEMAPPINGID(SORP.PAYMENTMETHODCODE, REVENUE.TRANSACTIONTYPECODE, REVENUESPLIT.TYPECODE, REVENUESPLIT.APPLICATIONCODE, tf.TRANSACTIONTYPECODE) as GLPAYMENTMETHODREVENUETYPEMAPPINGID,                
                    tf.TRANSACTIONTYPECODE, 
                    case when ADJUSTMENT.ID is null then REVENUE.POSTDATE        
                         else ADJUSTMENT.POSTDATE
                    end as POSTDATE,
                    case when ADJUSTMENT.ID is null then (case when REVENUE.DONOTPOST = 1 then 2 when REVENUEPOSTED.ID is not null then 0 else 1 end)
                         else ADJUSTMENT.POSTSTATUSCODE
                    end as POSTSTATUSCODE,
                    tf.ACCOUNTSTRING, 
                    tf.PROJECTCODE as PROJECT, 
                    coalesce(REVENUESPLIT.AMOUNT,REVENUE.AMOUNT), 
                    dbo.UFN_POSTTOGLPROCESS_GETJOURNALREFERENCE (REVENUESPLIT.ID, SORP.PAYMENTMETHOD,REVENUESPLIT.APPLICATION) as REFERENCE,                 
                    tf.ERRORMESSAGE,
                    REVENUEPAYMENTMETHOD.PAYMENTMETHODCODE,
                    REVENUE.TRANSACTIONTYPECODE as REVENUETRANSACTIONTYPECODE,
                    REVENUESPLIT.ID as REVENUESPLITID,
                    tf.MAPPEDVALUES
                from dbo.REVENUE with (nolock)
                inner join dbo.REVENUEPAYMENTMETHOD with (nolock) on REVENUEPAYMENTMETHOD.REVENUEID = REVENUE.ID
                left join dbo.REVENUEPOSTED with (nolock) on REVENUEPOSTED.ID = REVENUE.ID 
                left join dbo.REVENUESPLIT with (nolock) on REVENUE.ID = REVENUESPLIT.REVENUEID 
                inner join 
                    (select ID, '4' as PAYMENTMETHODCODE, 'Stock' as PAYMENTMETHOD from dbo.STOCKDETAIL 
                        union all 
                     select ID, '5' as PAYMENTMETHODCODE, 'Property' as PAYMENTMETHOD from dbo.PROPERTYDETAIL) 
                    as SORP on REVENUEPAYMENTMETHOD.ID = SORP.ID 
                left join dbo.ADJUSTMENT with (nolock) on REVENUE.ID = ADJUSTMENT.REVENUEID and ADJUSTMENT.POSTSTATUSCODE <> 0            
                cross apply UFN_REVENUE_GENERATEGLACCOUNT(REVENUESPLIT.ID, REVENUE.TRANSACTIONTYPECODE,REVENUESPLIT.TYPECODE, REVENUESPLIT.APPLICATIONCODE, SORP.PAYMENTMETHODCODE, REVENUESPLIT.DESIGNATIONID) as tf 
                where    (REVENUE.ID = @REVENUEID or @REVENUEID is null)
                        and ((REVENUEPAYMENTMETHOD.PAYMENTMETHODCODE = 4 and exists(select ID from dbo.STOCKSALE where STOCKDETAILID = REVENUEPAYMENTMETHOD.ID)) or 
                        (REVENUEPAYMENTMETHOD.PAYMENTMETHODCODE = 5 and exists(select ID from dbo.PROPERTYDETAIL where PROPERTYDETAIL.ID = REVENUEPAYMENTMETHOD.ID and ISSOLD = 1))) --special handling for sold stock/property


                union all
                /*
                    We need special handling for Pledge. Pledges can be created with Payment method of 'credit card', 'debit card' or 'none' but 
                    in the glpaymentmethodrevenuetypemapping table will get mapped to 'none'-'pledge' row.
                    So we always need to pass in 9 (None) into UFN_REVENUE_GENERATEGLACCOUNT instead of the actual paymentmethod
                */
                select REVENUE.ID as REVENUEID, 
                    dbo.UFN_POSTTOGLPROCESS_GETGLPAYMENTMETHODREVENUETYPEMAPPINGID(9, REVENUE.TRANSACTIONTYPECODE, REVENUESPLIT.TYPECODE, REVENUESPLIT.APPLICATIONCODE, tf.TRANSACTIONTYPECODE) as GLPAYMENTMETHODREVENUETYPEMAPPINGID,
                    tf.TRANSACTIONTYPECODE, 
                    case when ADJUSTMENT.ID is null then REVENUE.POSTDATE        -- same reason as above

                         else ADJUSTMENT.POSTDATE
                    end as POSTDATE,
                    case when ADJUSTMENT.ID is null then (case when REVENUE.DONOTPOST = 1 then 2 when REVENUEPOSTED.ID is not null then 0 else 1 end)    -- same reason as above. 

                         else ADJUSTMENT.POSTSTATUSCODE
                    end as POSTSTATUSCODE,
                    tf.ACCOUNTSTRING, 
                    tf.PROJECTCODE as PROJECT, 
                    REVENUESPLIT.AMOUNT, 
                    dbo.UFN_POSTTOGLPROCESS_GETJOURNALREFERENCE (REVENUESPLIT.ID, 'None', 'Pledge') as REFERENCE,
                    tf.ERRORMESSAGE,
                    9,
                    REVENUE.TRANSACTIONTYPECODE as REVENUETRANSACTIONTYPECODE,
                    REVENUESPLIT.ID as REVENUESPLITID,
                    tf.MAPPEDVALUES
                from dbo.REVENUE with (nolock)
                left join dbo.REVENUEPOSTED with (nolock) on REVENUEPOSTED.ID = REVENUE.ID 
                inner join dbo.REVENUESPLIT with (nolock) on REVENUE.ID = REVENUESPLIT.REVENUEID 
                left join dbo.ADJUSTMENT with (nolock) on REVENUE.ID = ADJUSTMENT.REVENUEID and ADJUSTMENT.POSTSTATUSCODE <> 0
                cross apply UFN_REVENUE_GENERATEGLACCOUNT(REVENUESPLIT.ID, REVENUE.TRANSACTIONTYPECODE,REVENUESPLIT.TYPECODE, REVENUESPLIT.APPLICATIONCODE, 9, REVENUESPLIT.DESIGNATIONID) as tf 
                where    (REVENUE.ID = @REVENUEID or @REVENUEID is null)
                        and (REVENUE.TRANSACTIONTYPECODE = 1)                        --special handling for Pledge


                union all

                /*
                    We need special handling for Event Registration since they don't have Designations and have their own mapping table;
                    ...Split TYPECODE and DESIGNATIONID are now passed in for gifts as part of an event registration.
                */
                select REVENUE.ID as REVENUEID, 
                    dbo.UFN_POSTTOGLPROCESS_GETGLPAYMENTMETHODREVENUETYPEMAPPINGID(REVENUEPAYMENTMETHOD.PAYMENTMETHODCODE, REVENUE.TRANSACTIONTYPECODE, REVENUESPLIT.TYPECODE, 1, tf.TRANSACTIONTYPECODE) as GLPAYMENTMETHODREVENUETYPEMAPPINGID,
                    tf.TRANSACTIONTYPECODE, 
                    case when ADJUSTMENT.ID is null then REVENUE.POSTDATE        -- same reason as above

                         else ADJUSTMENT.POSTDATE
                    end as POSTDATE,
                    case when ADJUSTMENT.ID is null then (case when REVENUE.DONOTPOST = 1 then 2 when REVENUEPOSTED.ID is not null then 0 else 1 end)        -- same reason as above. 

                         else ADJUSTMENT.POSTSTATUSCODE
                    end as POSTSTATUSCODE,
                    tf.ACCOUNTSTRING, 
                    tf.PROJECTCODE as PROJECT, 
                    REVENUESPLIT.AMOUNT, 
                    dbo.UFN_POSTTOGLPROCESS_GETJOURNALREFERENCE (REVENUESPLIT.ID, REVENUEPAYMENTMETHOD.PAYMENTMETHOD, REVENUESPLIT.APPLICATION) as REFERENCE,
                    tf.ERRORMESSAGE,
                    REVENUEPAYMENTMETHOD.PAYMENTMETHODCODE,
                    REVENUE.TRANSACTIONTYPECODE as REVENUETRANSACTIONTYPECODE,
                    REVENUESPLIT.ID as REVENUESPLITID,
                    tf.MAPPEDVALUES
                from dbo.REVENUE with (nolock)
                inner join dbo.REVENUEPAYMENTMETHOD with (nolock) on REVENUEPAYMENTMETHOD.REVENUEID = REVENUE.ID
                left join dbo.REVENUEPOSTED with (nolock) on REVENUEPOSTED.ID = REVENUE.ID
                inner join dbo.REVENUESPLIT with (nolock) on REVENUE.ID = REVENUESPLIT.REVENUEID 
                left join dbo.ADJUSTMENT with (nolock) on REVENUE.ID = ADJUSTMENT.REVENUEID and ADJUSTMENT.POSTSTATUSCODE <> 0
                cross apply UFN_REVENUE_GENERATEGLACCOUNT(REVENUESPLIT.ID, REVENUE.TRANSACTIONTYPECODE,REVENUESPLIT.TYPECODE, REVENUESPLIT.APPLICATIONCODE, REVENUEPAYMENTMETHOD.PAYMENTMETHODCODE, REVENUESPLIT.DESIGNATIONID) as tf 
                where    (REVENUE.ID = @REVENUEID or @REVENUEID is null)
                        and (not ((REVENUEPAYMENTMETHOD.PAYMENTMETHODCODE = 4 and exists(select ID from dbo.STOCKSALE where STOCKDETAILID = REVENUEPAYMENTMETHOD.ID)) or 
                        (REVENUEPAYMENTMETHOD.PAYMENTMETHODCODE = 5 and exists(select ID from dbo.PROPERTYDETAIL where PROPERTYDETAIL.ID = REVENUEPAYMENTMETHOD.ID and ISSOLD = 1))))  --special handling for sold stock/property

                        and (REVENUESPLIT.APPLICATIONCODE = 1)                --special handling for Event Registration            

                union all
                /*
                    We need special handling for Memberships since they don't have Designations and have their own mapping table
                */
                select REVENUE.ID as REVENUEID, 
                    dbo.UFN_POSTTOGLPROCESS_GETGLPAYMENTMETHODREVENUETYPEMAPPINGID(REVENUEPAYMENTMETHOD.PAYMENTMETHODCODE, REVENUE.TRANSACTIONTYPECODE, 2, 5, tf.TRANSACTIONTYPECODE) as GLPAYMENTMETHODREVENUETYPEMAPPINGID,
                    tf.TRANSACTIONTYPECODE, 
                    case when ADJUSTMENT.ID is null then REVENUE.POSTDATE        -- same reason as above

                         else ADJUSTMENT.POSTDATE
                    end as POSTDATE,
                    case when ADJUSTMENT.ID is null then (case when REVENUE.DONOTPOST = 1 then 2 when REVENUEPOSTED.ID is not null then 0 else 1 end)        -- same reason as above. 

                         else ADJUSTMENT.POSTSTATUSCODE
                    end as POSTSTATUSCODE,
                    tf.ACCOUNTSTRING, 
                    tf.PROJECTCODE as PROJECT, 
                    REVENUESPLIT.AMOUNT, 
                    dbo.UFN_POSTTOGLPROCESS_GETJOURNALREFERENCE (REVENUESPLIT.ID, REVENUEPAYMENTMETHOD.PAYMENTMETHOD, REVENUESPLIT.APPLICATION) as REFERENCE,
                    tf.ERRORMESSAGE,
                    REVENUEPAYMENTMETHOD.PAYMENTMETHODCODE,
                    REVENUE.TRANSACTIONTYPECODE as REVENUETRANSACTIONTYPECODE,
                    REVENUESPLIT.ID as REVENUESPLITID,
                    tf.MAPPEDVALUES
                from dbo.REVENUE with (nolock)
                inner join dbo.REVENUEPAYMENTMETHOD with (nolock) on REVENUEPAYMENTMETHOD.REVENUEID = REVENUE.ID
                left join dbo.REVENUEPOSTED with (nolock) on REVENUEPOSTED.ID = REVENUE.ID
                inner join dbo.REVENUESPLIT with (nolock) on REVENUE.ID = REVENUESPLIT.REVENUEID 
                left join dbo.ADJUSTMENT with (nolock) on REVENUE.ID = ADJUSTMENT.REVENUEID and ADJUSTMENT.POSTSTATUSCODE <> 0
                cross apply UFN_REVENUE_GENERATEGLACCOUNT(REVENUESPLIT.ID, REVENUE.TRANSACTIONTYPECODE,REVENUESPLIT.TYPECODE, REVENUESPLIT.APPLICATIONCODE, REVENUEPAYMENTMETHOD.PAYMENTMETHODCODE, null) as tf 
                where    (REVENUE.ID = @REVENUEID or @REVENUEID is null)
                        and (not ((REVENUEPAYMENTMETHOD.PAYMENTMETHODCODE = 4 and exists(select ID from dbo.STOCKSALE where STOCKDETAILID = REVENUEPAYMENTMETHOD.ID)) or 
                        (REVENUEPAYMENTMETHOD.PAYMENTMETHODCODE = 5 and exists(SELECT ID from dbo.PROPERTYDETAIL where PROPERTYDETAIL.ID = REVENUEPAYMENTMETHOD.ID and ISSOLD = 1))))  --special handling for sold stock/property

                        and (REVENUESPLIT.APPLICATIONCODE = 5)                --special handling for Memberships

                union all
                /*    
                    Special handling for pledge payments - bookable and non-bookable
                    Pledge payments post different based on whether their pledges are marked as
                    'Do not post' or 'Not Posted'
                */    
                select distinct
                    REVENUE.ID as REVENUEID, 
                    dbo.UFN_POSTTOGLPROCESS_GETGLPAYMENTMETHODREVENUETYPEMAPPINGID(REVENUEPAYMENTMETHOD.PAYMENTMETHODCODE, DETAIL.REVENUETRANSACTIONTYPECODE, DETAIL.SPLITTYPECODE, DETAIL.APPLICATIONCODE, tf.TRANSACTIONTYPECODE) as GLPAYMENTMETHODREVENUETYPEMAPPINGID,
                    tf.TRANSACTIONTYPECODE, 
                    case when ADJUSTMENT.ID is null then REVENUE.POSTDATE        -- same reason as above

                         else ADJUSTMENT.POSTDATE
                    end as POSTDATE,
                    case when ADJUSTMENT.ID is null then (case when REVENUE.DONOTPOST = 1 then 2 when REVENUEPOSTED.ID is not null then 0 else 1 end)    -- same reason as above. 

                         else ADJUSTMENT.POSTSTATUSCODE
                    end as POSTSTATUSCODE,
                    tf.ACCOUNTSTRING, 
                    tf.PROJECTCODE as PROJECT, 
                    REVENUESPLIT.AMOUNT, 
                    dbo.UFN_POSTTOGLPROCESS_GETJOURNALREFERENCE (REVENUESPLIT.ID, REVENUEPAYMENTMETHOD.PAYMENTMETHOD, DETAIL.TYPE) as REFERENCE,
                    tf.ERRORMESSAGE,
                    REVENUEPAYMENTMETHOD.PAYMENTMETHODCODE,
                    REVENUE.TRANSACTIONTYPECODE as REVENUETRANSACTIONTYPECODE,
                    REVENUESPLIT.ID as REVENUESPLITID,
                    convert(varchar(max),tf.MAPPEDVALUES)
                from dbo.REVENUE with (nolock)
                inner join dbo.REVENUEPAYMENTMETHOD with (nolock) on REVENUEPAYMENTMETHOD.REVENUEID = REVENUE.ID
                left join dbo.REVENUEPOSTED with (nolock) on REVENUEPOSTED.ID = REVENUE.ID
                inner join dbo.REVENUESPLIT with (nolock) on REVENUE.ID = REVENUESPLIT.REVENUEID
                inner join dbo.INSTALLMENTPAYMENT with (nolock) on REVENUESPLIT.ID = INSTALLMENTPAYMENT.PAYMENTID
                inner join dbo.REVENUE as PLEDGE with (nolock) on INSTALLMENTPAYMENT.PLEDGEID = PLEDGE.ID
                left join dbo.REVENUEPOSTED PLEDGEPOSTED with (nolock) on PLEDGEPOSTED.ID = PLEDGE.ID
                cross apply dbo.UFN_POSTTOGLPROCESS_MAPPLEDGEPAYMENTS(PLEDGE.ID, case when PLEDGE.DONOTPOST = 1 then 2 when PLEDGEPOSTED.ID is not null then 0 else 1 end) as DETAIL
                left join dbo.ADJUSTMENT with (nolock) on REVENUE.ID = ADJUSTMENT.REVENUEID and ADJUSTMENT.POSTSTATUSCODE <> 0
                cross apply dbo.UFN_REVENUE_GENERATEGLACCOUNT(REVENUESPLIT.ID, DETAIL.REVENUETRANSACTIONTYPECODE,DETAIL.SPLITTYPECODE, DETAIL.APPLICATIONCODE, REVENUEPAYMENTMETHOD.PAYMENTMETHODCODE, REVENUESPLIT.DESIGNATIONID) as tf 
                where    (REVENUE.ID = @REVENUEID or @REVENUEID is null)
                        and (not ((REVENUEPAYMENTMETHOD.PAYMENTMETHODCODE = 4 and exists(select ID from dbo.STOCKSALE where STOCKDETAILID = REVENUEPAYMENTMETHOD.ID)) or 
                        (REVENUEPAYMENTMETHOD.PAYMENTMETHODCODE = 5 and exists(select ID from dbo.PROPERTYDETAIL where PROPERTYDETAIL.ID = REVENUEPAYMENTMETHOD.ID and ISSOLD = 1))))  --special handling for sold stock/property

                        and (REVENUESPLIT.APPLICATIONCODE = 2)                                        

                return;
            end

            return;
        end