UFN_REVENUETRANSACTION_GETSTOCKDETAILGLDISTRIBUTION
Gets a table of sold stock 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_GETSTOCKDETAILGLDISTRIBUTION(@TRANSACTIONID uniqueidentifier)
returns @STOCKDETAILGLDISTRIBUTION table
(
ID uniqueidentifier null,
STOCKDETAILID 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 STOCKDETAILGLDISTRIBUTION then get those (user has chosen to override the system generated entries */
if exists(select STOCKDETAILGLDISTRIBUTION.ID from dbo.STOCKDETAILGLDISTRIBUTION inner join dbo.REVENUEPAYMENTMETHOD on STOCKDETAILGLDISTRIBUTION.STOCKDETAILID = REVENUEPAYMENTMETHOD.ID
where REVENUEPAYMENTMETHOD.REVENUEID = @TRANSACTIONID)
begin
insert into @STOCKDETAILGLDISTRIBUTION (ID, STOCKDETAILID, GLPAYMENTMETHODREVENUETYPEMAPPINGID, DEBITACCOUNT, CREDITACCOUNT, PROJECT, AMOUNT, REFERENCE)
select STOCKDETAILGLDISTRIBUTION.ID, REVENUEPAYMENTMETHOD.ID, STOCKDETAILGLDISTRIBUTION.GLPAYMENTMETHODREVENUETYPEMAPPINGID, STOCKDETAILGLDISTRIBUTION.DEBITACCOUNT,
STOCKDETAILGLDISTRIBUTION.CREDITACCOUNT, STOCKDETAILGLDISTRIBUTION.PROJECT, STOCKDETAILGLDISTRIBUTION.AMOUNT, STOCKDETAILGLDISTRIBUTION.REFERENCE
from dbo.STOCKDETAILGLDISTRIBUTION
inner join dbo.REVENUEPAYMENTMETHOD on STOCKDETAILGLDISTRIBUTION.STOCKDETAILID = REVENUEPAYMENTMETHOD.ID
where REVENUEPAYMENTMETHOD.REVENUEID = @TRANSACTIONID;
end
else
begin
declare @Temp Table
(GLPAYMENTMETHODREVENUETYPEMAPPINGID uniqueidentifier not null,
STOCKDETAILID 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 (STOCKDETAILID, 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_GENERATESTOCKDETAILGLDISTRIBUTION(REVENUE.ID) as tf
where REVENUE.ID = @TRANSACTIONID
insert into @STOCKDETAILGLDISTRIBUTION (ID, STOCKDETAILID, GLPAYMENTMETHODREVENUETYPEMAPPINGID, CREDITACCOUNT, DEBITACCOUNT, PROJECT, AMOUNT, REFERENCE)
select NULL,
o.STOCKDETAILID,
(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.STOCKDETAILID;
end
return
end