UFN_REVENUETRANSACTION_GETPROPERTYDETAILGLDISTRIBUTION
Gets a table of sold property GL distribution by transaction (Actual or Projected).
Return
Return Type |
---|
table |
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@TRANSACTIONID | uniqueidentifier | IN |
Definition
Copy
CREATE function dbo.UFN_REVENUETRANSACTION_GETPROPERTYDETAILGLDISTRIBUTION(@TRANSACTIONID uniqueidentifier)
returns @PROPERTYDETAILGLDISTRIBUTION table
(
ID uniqueidentifier null,
PROPERTYDETAILID uniqueidentifier null,
GLPAYMENTMETHODREVENUETYPEMAPPINGID uniqueidentifier not null,
CREDITACCOUNT nvarchar(100) not null,
DEBITACCOUNT nvarchar(100) not null,
PROJECT nvarchar(100) null,
AMOUNT money not null,
REFERENCE nvarchar(100) not null
)
as
begin
/*If entry exists in PROPERTYDETAILGLDISTRIBUTION then get those (user has chosen to override the system generated entries */
if exists(select PROPERTYDETAILGLDISTRIBUTION.ID from dbo.PROPERTYDETAILGLDISTRIBUTION inner join dbo.REVENUE on PROPERTYDETAILGLDISTRIBUTION.PROPERTYDETAILID = REVENUE.ID
where REVENUE.ID = @TRANSACTIONID)
begin
insert into @PROPERTYDETAILGLDISTRIBUTION (ID, PROPERTYDETAILID, GLPAYMENTMETHODREVENUETYPEMAPPINGID, DEBITACCOUNT, CREDITACCOUNT, PROJECT, AMOUNT, REFERENCE)
select PROPERTYDETAILGLDISTRIBUTION.ID, REVENUEPAYMENTMETHOD.ID, PROPERTYDETAILGLDISTRIBUTION.GLPAYMENTMETHODREVENUETYPEMAPPINGID, PROPERTYDETAILGLDISTRIBUTION.DEBITACCOUNT,
PROPERTYDETAILGLDISTRIBUTION.CREDITACCOUNT, PROPERTYDETAILGLDISTRIBUTION.PROJECT, PROPERTYDETAILGLDISTRIBUTION.AMOUNT, PROPERTYDETAILGLDISTRIBUTION.REFERENCE
from dbo.PROPERTYDETAILGLDISTRIBUTION
inner join dbo.REVENUE
on PROPERTYDETAILGLDISTRIBUTION.PROPERTYDETAILID = REVENUE.ID
inner join dbo.REVENUEPAYMENTMETHOD
on REVENUE.ID = REVENUEPAYMENTMETHOD.REVENUEID
where REVENUE.ID = @TRANSACTIONID;
end
else
begin
declare @Temp Table
(GLPAYMENTMETHODREVENUETYPEMAPPINGID uniqueidentifier not null,
PROPERTYDETAILID uniqueidentifier not null,
DEBITCREDIT nvarchar(1) not null,
ACCOUNTSTRING nvarchar(100) not null,
PROJECT nvarchar(100) not null,
AMOUNT money not null,
REFERENCE nvarchar(100) not null,
GROUPID nvarchar(100) not null);
insert @Temp (PROPERTYDETAILID, GLPAYMENTMETHODREVENUETYPEMAPPINGID, DEBITCREDIT, ACCOUNTSTRING, PROJECT, AMOUNT, REFERENCE, GROUPID)
select REVENUEPAYMENTMETHOD.ID,
tf.GLPAYMENTMETHODREVENUETYPEMAPPINGID,
tf.DEBITCREDIT,
case when tf.ERRORMESSAGE = '' then ACCOUNTSTRING else '' end as ACCOUNTSTRING,
tf.PROJECT,
tf.AMOUNT,
tf.REFERENCE,
tf.GROUPID
from dbo.REVENUE
inner join dbo.REVENUEPAYMENTMETHOD on REVENUE.ID = REVENUEPAYMENTMETHOD.REVENUEID
cross apply DBO.UFN_REVENUE_GENERATEPROPERTYDETAILGLDISTRIBUTION(REVENUE.ID) as tf
where REVENUE.ID = @TRANSACTIONID
insert into @PROPERTYDETAILGLDISTRIBUTION (ID, PROPERTYDETAILID, GLPAYMENTMETHODREVENUETYPEMAPPINGID, CREDITACCOUNT, DEBITACCOUNT, PROJECT, AMOUNT, REFERENCE)
select NULL,
o.PROPERTYDETAILID,
(select GLPAYMENTMETHODREVENUETYPEMAPPINGID from @Temp as t where t.GROUPID = o.GROUPID and t.DEBITCREDIT = 'C') as GLPAYMENTMETHODREVENUETYPEMAPPINGID,
(select ACCOUNTSTRING from @Temp as t where t.GROUPID = o.GROUPID and t.DEBITCREDIT = 'C') as CREDITACCOUNT,
(select ACCOUNTSTRING from @Temp as t where t.GROUPID = o.GROUPID and t.DEBITCREDIT = 'D') as DEBITACCOUNT,
(select PROJECT from @Temp as t where t.GROUPID = o.GROUPID and t.DEBITCREDIT = 'C') as PROJECT,
(select AMOUNT from @Temp as t where t.GROUPID = o.GROUPID and t.DEBITCREDIT = 'C') as AMOUNT,
(select REFERENCE from @Temp as t where t.GROUPID = o.GROUPID and t.DEBITCREDIT = 'C') as REFERENCE
from @Temp as o
group by o.GROUPID, o.PROPERTYDETAILID;
end
return
end