UFN_REVENUE_GENERATEGIFTINKINDPAYMENTMETHODDETAILGLDISTRIBUTION

Generates GL Account Code for Gift-in-kind 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_GENERATEGIFTINKINDPAYMENTMETHODDETAILGLDISTRIBUTION(@REVENUEID uniqueidentifier = null)
            returns table 
            as return 
            /*    Getting 'Postable' GIFTINKIND Sales    */
            select 
                REVENUE.ID as REVENUEID, 
                REVENUESPLIT.ID as REVENUESPLITID, 
                dbo.UFN_POSTTOGLPROCESS_GETGLPAYMENTMETHODREVENUETYPEMAPPINGID(CODES.PAYMENTMETHODCODE, CODES.REVENUETYPECODE, CODES.REVENUETYPECODE, CODES.REVENUETYPECODE, tf.TRANSACTIONTYPECODE) as GLPAYMENTMETHODREVENUETYPEMAPPINGID,
                tf.TRANSACTIONTYPECODE, 
                case when GIFTINKINDSALEADJUSTMENT.ID is null then GIFTINKINDSALE.SALEPOSTDATE  --if no unposted adjustment then use Gift-in-kind Detail Post Date

                     else GIFTINKINDSALEADJUSTMENT.POSTDATE
                end AS POSTDATE, 
                case when GIFTINKINDSALEADJUSTMENT.ID is null then GIFTINKINDSALE.SALEPOSTSTATUSCODE  --if no unposted adjustment then use Gift-in-kind Detail Post Status Code

                     else GIFTINKINDSALEADJUSTMENT.POSTSTATUSCODE
                end AS POSTSTATUSCODE,
                tf.ACCOUNTSTRING, 
                tf.PROJECTCODE as PROJECT, 
                SPLITS.AMOUNT AMOUNT, 
                dbo.UFN_POSTTOGLPROCESS_GETJOURNALREFERENCE  (REVENUESPLIT.ID, CODES.PAYMENTMETHOD, CODES.REVENUETYPE) as REFERENCE, 
                tf.ERRORMESSAGE,
                REVENUEPAYMENTMETHOD.PAYMENTMETHODCODE,
                REVENUE.TRANSACTIONTYPECODE as REVENUETRANSACTIONTYPECODE,
                REVENUEPAYMENTMETHOD.ID as REVENUEPAYMENTMETHODID,
                GIFTINKINDSALE.ID as GIFTINKINDSALEID,
                tf.ACCOUNTID as ACCOUNTID, 
                SPLITS.TRANSACTIONSPLITAMOUNT TRANSACTIONAMOUNT, 
                SPLITS.ORGANIZATIONAMOUNT ORGANIZATIONAMOUNT, 
                REVENUE.TRANSACTIONCURRENCYID as TRANSACTIONCURRENCYID, 
                REVENUE.BASECURRENCYID as BASECURRENCYID, 
                REVENUE.BASEEXCHANGERATEID as BASEEXCHANGERATEID, 
                REVENUE.ORGANIZATIONEXCHANGERATEID as ORGANIZATIONEXCHANGERATEID,
                tf.MAPPEDVALUES
            from dbo.REVENUE with (nolock)
                inner join dbo.REVENUEPAYMENTMETHOD with (nolock) on REVENUE.ID = REVENUEPAYMENTMETHOD.REVENUEID
                inner join dbo.REVENUESPLIT with (nolock) on REVENUE.ID = REVENUESPLIT.REVENUEID
                inner join dbo.GIFTINKINDPAYMENTMETHODDETAIL with (nolock) on REVENUEPAYMENTMETHOD.ID = GIFTINKINDPAYMENTMETHODDETAIL.ID
                inner join dbo.GIFTINKINDSALE with (nolock) on GIFTINKINDPAYMENTMETHODDETAIL.ID = GIFTINKINDSALE.GIFTINKINDPAYMENTMETHODDETAILID
                left join dbo.GIFTINKINDSALEADJUSTMENT with (nolock) on GIFTINKINDSALE.ID = GIFTINKINDSALEADJUSTMENT.GIFTINKINDSALEID and GIFTINKINDSALEADJUSTMENT.POSTSTATUSCODE <> 0
                cross join 
                    ( 
                        select '12' as PAYMENTMETHODCODE, 'Sold Gift-in-kind' as PAYMENTMETHOD, 'All' as REVENUETYPE, '200' as REVENUETYPECODE
                            union all 
                        select '207' as PAYMENTMETHODCODE, 'Gain' as PAYMENTMETHOD, 'All' as REVENUETYPE, '200' as REVENUETYPECODE 
                            union all 
                        select '208' as PAYMENTMETHODCODE, 'Loss' AS PAYMENTMETHOD, 'All' as REVENUETYPE, '200' as REVENUETYPECODE 
                    ) as CODES
                cross apply dbo.UFN_REVENUE_GENERATEGLACCOUNT(REVENUESPLIT.ID, CODES.REVENUETYPECODE, CODES.REVENUETYPECODE, CODES.REVENUETYPECODE, CODES.PAYMENTMETHODCODE, REVENUESPLIT.DESIGNATIONID) as tf 
                outer apply dbo.UFN_REVENUE_GETGIFTINKINDPAYMENTMETHODDETAILSPLITSBYTRANSACTION(REVENUE.ID, CODES.PAYMENTMETHODCODE) as SPLITS
            where  
                (REVENUE.ID = @REVENUEID or @REVENUEID is NULL
                and ((CODES.PAYMENTMETHODCODE = 207 and GIFTINKINDSALE.SALEAMOUNT > (GIFTINKINDSALE.NUMBEROFUNITS * GIFTINKINDPAYMENTMETHODDETAIL.FAIRMARKETVALUE)) or  -- GIFTINKIND Gain

                     (CODES.PAYMENTMETHODCODE = 208 and GIFTINKINDSALE.SALEAMOUNT < (GIFTINKINDSALE.NUMBEROFUNITS * GIFTINKINDPAYMENTMETHODDETAIL.FAIRMARKETVALUE)) or  -- GIFTINKIND Loss

                      CODES.PAYMENTMETHODCODE = 12)                                                                                                                     -- Sold Gift-in-kind

                and (SPLITS.REVENUESPLITID = REVENUESPLIT.ID or (SPLITS.REVENUESPLITID is null and REVENUESPLIT.ID is null and REVENUESPLIT.APPLICATIONCODE = 0 and SPLITS.REVENUEID = REVENUE.ID))
                and SPLITS.GIFTINKINDSALEID = GIFTINKINDSALE.ID
                and (REVENUEPAYMENTMETHOD.PAYMENTMETHODCODE = 6) -- Verify the Gift-in-kind has sold (it's now implied since GIFTINKINDSALE is included in the join)