UFN_REVENUE_GENERATEPROPERTYDETAILGLDISTRIBUTION
Generates GL Account Code for Property 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_GENERATEPROPERTYDETAILGLDISTRIBUTION(@REVENUEID uniqueidentifier = null)
returns table
as return
/* Getting 'Postable' Property 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 PROPERTYDETAILADJUSTMENT.ID is null then PROPERTYDETAIL.SALEPOSTDATE --if no unposted adjustment then use Property Detail Post Date
else PROPERTYDETAILADJUSTMENT.POSTDATE
end AS POSTDATE,
case when PROPERTYDETAILADJUSTMENT.ID is null then PROPERTYDETAIL.SALEPOSTSTATUSCODE --if no unposted adjustment then use Property Detail Post Status Code
else PROPERTYDETAILADJUSTMENT.POSTSTATUSCODE
end AS POSTSTATUSCODE,
tf.ACCOUNTSTRING,
tf.PROJECTCODE as PROJECT,
case
when CODES.PAYMENTMETHODCODE = 8 then coalesce(REVENUESPLIT.AMOUNT, REVENUE.AMOUNT)
when CODES.PAYMENTMETHODCODE in (201, 203, 204) then SPLITS.AMOUNT
end as 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,
tf.ACCOUNTID as ACCOUNTID,
case
when CODES.PAYMENTMETHODCODE = 8 then coalesce(REVENUESPLIT.BASECURRENCYID, REVENUE.BASECURRENCYID)
when CODES.PAYMENTMETHODCODE in (201, 203, 204) then SPLITS.BASECURRENCYID
end as BASECURRENCYID,
case
when CODES.PAYMENTMETHODCODE = 8 then coalesce(REVENUESPLIT.TRANSACTIONAMOUNT, REVENUE.TRANSACTIONAMOUNT)
when CODES.PAYMENTMETHODCODE in (201, 203, 204) then SPLITS.SPLITTRANSACTIONAMOUNT
end as TRANSACTIONAMOUNT,
case
when CODES.PAYMENTMETHODCODE = 8 then coalesce(REVENUESPLIT.TRANSACTIONCURRENCYID, REVENUE.TRANSACTIONCURRENCYID)
when CODES.PAYMENTMETHODCODE in (201, 203, 204) then SPLITS.TRANSACTIONCURRENCYID
end as TRANSACTIONCURRENCYID,
case
when CODES.PAYMENTMETHODCODE = 8 then coalesce(REVENUESPLIT.BASEEXCHANGERATEID, REVENUE.BASEEXCHANGERATEID)
when CODES.PAYMENTMETHODCODE in (201, 203) then SPLITS.BASEEXCHANGERATEID
when CODES.PAYMENTMETHODCODE = 204 then PROPERTYDETAIL.BASEEXCHANGERATEID
end as BASEEXCHANGERATEID,
case
when CODES.PAYMENTMETHODCODE = 8 then coalesce(REVENUESPLIT.ORGANIZATIONAMOUNT, REVENUE.ORGANIZATIONAMOUNT)
when CODES.PAYMENTMETHODCODE in (201, 203, 204) then SPLITS.ORGANIZATIONAMOUNT
end as ORGANIZATIONAMOUNT,
case
when CODES.PAYMENTMETHODCODE = 8 then coalesce(REVENUESPLIT.ORGANIZATIONEXCHANGERATEID, REVENUE.ORGANIZATIONEXCHANGERATEID)
when CODES.PAYMENTMETHODCODE in (201, 203) then SPLITS.ORGANIZATIONEXCHANGERATEID
when CODES.PAYMENTMETHODCODE = 204 then PROPERTYDETAIL.ORGANIZATIONEXCHANGERATEID
end 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.PROPERTYDETAIL with (nolock) on REVENUEPAYMENTMETHOD.ID = PROPERTYDETAIL.ID
left join dbo.PROPERTYDETAILADJUSTMENT with (nolock) on PROPERTYDETAIL.ID = PROPERTYDETAILADJUSTMENT.PROPERTYDETAILID and PROPERTYDETAILADJUSTMENT.POSTSTATUSCODE <> 0
cross join
(
select '8' as PAYMENTMETHODCODE, 'Sold Property' as PAYMENTMETHOD, 'All' as REVENUETYPE, '200' as REVENUETYPECODE
union all
select '201' as PAYMENTMETHODCODE, 'Gain' AS PAYMENTMETHOD, 'All' as REVENUETYPE, '200' as REVENUETYPECODE
union all
select '203' as PAYMENTMETHODCODE, 'Loss' AS PAYMENTMETHOD, 'All' as REVENUETYPE, '200' as REVENUETYPECODE
union all
select '204' as PAYMENTMETHODCODE, 'Fees' 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_GETPROPERTYDETAILSPLITSBYTRANSACTION(REVENUE.ID, CODES.PAYMENTMETHODCODE) as SPLITS
where
(REVENUE.ID = @REVENUEID or @REVENUEID is NULL)
and ((CODES.PAYMENTMETHODCODE = 201 and PROPERTYDETAIL.TRANSACTIONSALEAMOUNT > REVENUE.TRANSACTIONAMOUNT) or -- Property Gain
(CODES.PAYMENTMETHODCODE = 203 and PROPERTYDETAIL.TRANSACTIONSALEAMOUNT < REVENUE.TRANSACTIONAMOUNT) or -- Property Loss
(CODES.PAYMENTMETHODCODE = 204 and PROPERTYDETAIL.TRANSACTIONBROKERFEE > 0) or -- Broker Fee
(CODES.PAYMENTMETHODCODE = 8)) -- Sold Property
and (SPLITS.REVENUESPLITID = REVENUESPLIT.ID or (SPLITS.REVENUESPLITID is null and REVENUESPLIT.ID is null and REVENUESPLIT.APPLICATIONCODE = 1 and SPLITS.REVENUEID = REVENUE.ID))
and (REVENUEPAYMENTMETHOD.PAYMENTMETHODCODE = 5 and exists(select ID from dbo.PROPERTYDETAIL where PROPERTYDETAIL.ID = REVENUEPAYMENTMETHOD.ID and ISSOLD = 1));