UFN_POSTTOGLPROCESS_GETGLDISTRIBUTION
Gets all the GL Distribution rows for revenue record(s)
Return
Return Type |
---|
table |
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@REVENUEID | uniqueidentifier | IN |
Definition
Copy
CREATE function dbo.UFN_POSTTOGLPROCESS_GETGLDISTRIBUTION(@REVENUEID uniqueidentifier)
returns
@GLDISTRIBUTION table (
REVENUEID uniqueidentifier,
REVENUESPLITID uniqueidentifier,
GLPAYMENTMETHODREVENUETYPEMAPPINGID uniqueidentifier,
WRITEOFFID uniqueidentifier,
ISSOLDPROPERTYORSTOCK bit,
TRANTYPE nvarchar(50),
DEBITCREDIT nvarchar(50),
TRANDATE nvarchar(10),
POSTDATE nvarchar(10),
POSTSTATUSCODE tinyint,
ACCOUNTSTRING nvarchar(255),
PROJECT nvarchar(100),
AMOUNT money,
JOURNAL nvarchar(50),
REFERENCE nvarchar(100),
BATCH nvarchar(50),
ISREVERSAL bit,
ISADJUSTED bit,
GROUPID nvarchar(255),
ERRORMESSAGE nvarchar(255),
REVERSALID uniqueidentifier
)
as
begin
/*
Get the GL Distribution rows for Revenue record from RevenueGLDistribution table
*/
declare @TRANTYPE varchar(1);
declare @JOURNAL varchar(25);
declare @BATCH varchar(10);
set @TRANTYPE = 'R';
set @JOURNAL = 'Blackbaud Enterprise';
set @BATCH = '';
insert into @GLDISTRIBUTION(REVENUEID, REVENUESPLITID, GLPAYMENTMETHODREVENUETYPEMAPPINGID, WRITEOFFID, ISSOLDPROPERTYORSTOCK, TRANTYPE, DEBITCREDIT, TRANDATE, POSTDATE,
POSTSTATUSCODE, ACCOUNTSTRING, PROJECT, AMOUNT, JOURNAL, REFERENCE, BATCH, ISREVERSAL, ISADJUSTED, GROUPID, ERRORMESSAGE, REVERSALID)
select DETAIL.REVENUEID,
DETAIL.ID as REVENUESPLITID,
DETAIL.GLPAYMENTMETHODREVENUETYPEMAPPINGID,
NULL as WRITEOFFID,
0 as ISSOLDPROPERTYORSTOCK,
@TRANTYPE as TRANTYPE,
DETAIL.TRANTYPE as DEBITCREDIT,
case when ADJUSTMENT.ID is null then convert(varchar(10),REVENUE.DATE,101) --if unposted adjustment exists we want to use it's date for post process else just use Revenue Date
else convert(varchar(10), ADJUSTMENT.DATE, 101)
end as TRANDATE,
case when ADJUSTMENT.ID is null then convert(varchar(10), REVENUE.POSTDATE, 101) -- same reason as above
else convert(varchar(10), ADJUSTMENT.POSTDATE, 101)
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,
DETAIL.ACCOUNT,
DETAIL.PROJECT,
DETAIL.AMOUNT,
@JOURNAL as JOURNAL,
DETAIL.REFERENCE as REFERENCE,
@BATCH as BATCH,
0 as ISREVERSAL,
case when ADJUSTMENT.ID is null then 0 else 1 end as ISADJUSTED,
DETAIL.ID as GROUPID,
'' as ERRORMESSAGE,
null as REVERSALID
from dbo.REVENUE
left join dbo.REVENUEPOSTED on REVENUEPOSTED.ID = REVENUE.ID
left join dbo.ADJUSTMENT on REVENUE.ID = ADJUSTMENT.REVENUEID
inner join
(select ID, REVENUEID, GLPAYMENTMETHODREVENUETYPEMAPPINGID, 'D' as TRANTYPE, DEBITACCOUNT as ACCOUNT, PROJECT, AMOUNT, REFERENCE from dbo.REVENUEGLDISTRIBUTION
union all
select ID, REVENUEID, GLPAYMENTMETHODREVENUETYPEMAPPINGID, 'C' as TRANTYPE, CREDITACCOUNT as ACCOUNT, PROJECT, AMOUNT, REFERENCE from dbo.REVENUEGLDISTRIBUTION)
as DETAIL on REVENUE.ID = DETAIL.REVENUEID
where
(REVENUE.ID = @REVENUEID or @REVENUEID is null)
and ((REVENUE.DONOTPOST = 0 and REVENUEPOSTED.ID is null) or (REVENUEPOSTED.ID is not null and ADJUSTMENT.POSTSTATUSCODE = 1))
and REVENUE.TRANSACTIONTYPECODE <> 2 and REVENUE.TRANSACTIONTYPECODE <> 3;
/*
Get the GL Distribution rows for revenue generated by the system
*/
insert into @GLDISTRIBUTION(REVENUEID, REVENUESPLITID, GLPAYMENTMETHODREVENUETYPEMAPPINGID, WRITEOFFID, ISSOLDPROPERTYORSTOCK, TRANTYPE, DEBITCREDIT, TRANDATE, POSTDATE,
POSTSTATUSCODE, ACCOUNTSTRING, PROJECT, AMOUNT, JOURNAL, REFERENCE, BATCH, ISREVERSAL, ISADJUSTED, GROUPID, ERRORMESSAGE, REVERSALID)
select tf.REVENUEID,
tf.REVENUESPLITID,
tf.GLPAYMENTMETHODREVENUETYPEMAPPINGID,
NULL as WRITEOFFID,
0 as ISSOLDPROPERTYORSTOCK,
@TRANTYPE as TRANTYPE,
tf.DEBITCREDIT,
convert(varchar(10),tf.TRANDATE, 101),
convert(varchar(10),tf.POSTDATE, 101),
tf.POSTSTATUSCODE,
tf.ACCOUNTSTRING,
tf.PROJECT,
tf.AMOUNT,
@JOURNAL as JOURNAL,
tf.REFERENCE,
@BATCH as BATCH,
0 AS ISREVERSAL,
tf.ISADJUSTED,
tf.GROUPID,
tf.ERRORMESSAGE,
null as REVERSALID
from dbo.UFN_REVENUE_GENERATEGLDISTRIBUTION(default) as tf
where
(tf.REVENUEID = @REVENUEID or @REVENUEID is null)
and tf.POSTSTATUSCODE = 1
and not exists (select ID from dbo.REVENUEGLDISTRIBUTION where REVENUEGLDISTRIBUTION.REVENUEID = tf.REVENUEID)
and tf.TRANSACTIONTYPECODE <> 2 -- is not a recurring gift
and tf.TRANSACTIONTYPECODE <> 3; -- matching gift claim
/*
Get the GL Distribution rows for Stock Detail records from StockDetailGLDistribution table
*/
insert into @GLDISTRIBUTION(REVENUEID, REVENUESPLITID, GLPAYMENTMETHODREVENUETYPEMAPPINGID, WRITEOFFID, ISSOLDPROPERTYORSTOCK, TRANTYPE, DEBITCREDIT, TRANDATE, POSTDATE,
POSTSTATUSCODE, ACCOUNTSTRING, PROJECT, AMOUNT, JOURNAL, REFERENCE, BATCH, ISREVERSAL, ISADJUSTED, GROUPID, ERRORMESSAGE, REVERSALID)
select REVENUE.ID,
DETAIL.ID as REVENUESPLITID,
DETAIL.GLPAYMENTMETHODREVENUETYPEMAPPINGID,
NULL as WRITEOFFID,
1 as ISSOLDPROPERTYORSTOCK,
@TRANTYPE as TRANTYPE,
DETAIL.TRANTYPE as DEBITCREDIT,
case when STOCKDETAILADJUSTMENT.ID is null then convert(varchar(10),STOCKDETAIL.SALEDATE,101) --if unposted adjustment exists we want to use it's date for post process else just use STOCKDETAIL Date
else convert(varchar(10), STOCKDETAILADJUSTMENT.DATE, 101)
end as TRANDATE,
case when STOCKDETAILADJUSTMENT.ID is null then convert(varchar(10), STOCKDETAIL.SALEPOSTDATE, 101) -- same reason as above
else convert(varchar(10), STOCKDETAILADJUSTMENT.POSTDATE, 101)
end as POSTDATE,
case when STOCKDETAILADJUSTMENT.ID is null then STOCKDETAIL.SALEPOSTSTATUSCODE -- same reason as above.
else STOCKDETAILADJUSTMENT.POSTSTATUSCODE
end as POSTSTATUSCODE,
DETAIL.ACCOUNT,
DETAIL.PROJECT,
DETAIL.AMOUNT,
@JOURNAL as JOURNAL,
DETAIL.REFERENCE as REFERENCE,
@BATCH as BATCH,
0 as ISREVERSAL,
case when STOCKDETAILADJUSTMENT.ID is null then 0 else 1 end as ISADJUSTED,
DETAIL.ID,
'' as ERRORMESSAGE,
null as REVERSALID
from dbo.REVENUE
inner join REVENUEPAYMENTMETHOD on REVENUE.ID = REVENUEPAYMENTMETHOD.REVENUEID
inner join dbo.STOCKDETAIL on REVENUE.ID = STOCKDETAIL.ID
left join dbo.STOCKDETAILADJUSTMENT on STOCKDETAIL.ID = STOCKDETAILADJUSTMENT.STOCKDETAILID
inner join
(select ID, STOCKDETAILID, GLPAYMENTMETHODREVENUETYPEMAPPINGID, 'C' as TRANTYPE, CREDITACCOUNT as ACCOUNT, PROJECT, AMOUNT, REFERENCE from dbo.STOCKDETAILGLDISTRIBUTION
union all
select ID, STOCKDETAILID, GLPAYMENTMETHODREVENUETYPEMAPPINGID, 'D' as TRANTYPE, DEBITACCOUNT as ACCOUNT, PROJECT, AMOUNT, REFERENCE from dbo.STOCKDETAILGLDISTRIBUTION)
as DETAIL on STOCKDETAIL.ID = DETAIL.STOCKDETAILID
where
(STOCKDETAIL.ID = @REVENUEID or @REVENUEID is null)
and REVENUEPAYMENTMETHOD.PAYMENTMETHODCODE = 7
and (STOCKDETAIL.SALEPOSTSTATUSCODE = 1 or (STOCKDETAIL.SALEPOSTSTATUSCODE = 0 and STOCKDETAILADJUSTMENT.POSTSTATUSCODE = 1));
/*
Get the GL Distribution rows for stock detail revenue generated by the system
*/
insert into @GLDISTRIBUTION(REVENUEID, REVENUESPLITID, GLPAYMENTMETHODREVENUETYPEMAPPINGID, WRITEOFFID, ISSOLDPROPERTYORSTOCK, TRANTYPE, DEBITCREDIT, TRANDATE, POSTDATE,
POSTSTATUSCODE, ACCOUNTSTRING, PROJECT, AMOUNT, JOURNAL, REFERENCE, BATCH, ISREVERSAL, ISADJUSTED, GROUPID, ERRORMESSAGE, REVERSALID)
select tf.REVENUEID,
tf.REVENUESPLITID,
tf.GLPAYMENTMETHODREVENUETYPEMAPPINGID,
NULL as WRITEOFFID,
1 as ISSOLDPROPERTYORSTOCK,
@TRANTYPE as TRANTYPE,
tf.DEBITCREDIT,
convert(varchar(10),tf.TRANDATE, 101),
convert(varchar(10),tf.POSTDATE, 101),
tf.POSTSTATUSCODE,
tf.ACCOUNTSTRING,
tf.PROJECT,
tf.AMOUNT,
@JOURNAL as JOURNAL,
tf.REFERENCE,
@BATCH as BATCH,
0 AS ISREVERSAL,
tf.ISADJUSTED,
tf.GROUPID,
tf.ERRORMESSAGE,
null as REVERSALID
from dbo.UFN_REVENUE_GENERATESTOCKDETAILGLDISTRIBUTION(default) as tf
where
(tf.REVENUEID = @REVENUEID or @REVENUEID is null)
and tf.PAYMENTMETHODCODE = 7
and tf.POSTSTATUSCODE = 1
and not exists (select ID from dbo.STOCKDETAILGLDISTRIBUTION where STOCKDETAILGLDISTRIBUTION.STOCKDETAILID = tf.REVENUEID);
/*
Get the GL Distribution rows for property detail records from PropertyDetailGLDistribution table
*/
insert into @GLDISTRIBUTION(REVENUEID, REVENUESPLITID, GLPAYMENTMETHODREVENUETYPEMAPPINGID, WRITEOFFID, ISSOLDPROPERTYORSTOCK, TRANTYPE, DEBITCREDIT, TRANDATE, POSTDATE,
POSTSTATUSCODE, ACCOUNTSTRING, PROJECT, AMOUNT, JOURNAL, REFERENCE, BATCH, ISREVERSAL, ISADJUSTED, GROUPID, ERRORMESSAGE, REVERSALID)
select REVENUE.ID,
DETAIL.ID as REVENUESPLITID,
DETAIL.GLPAYMENTMETHODREVENUETYPEMAPPINGID,
NULL as WRITEOFFID,
1 as ISSOLDPROPERTYORSTOCK,
@TRANTYPE as TRANTYPE,
DETAIL.TRANTYPE as DEBITCREDIT,
case when PROPERTYDETAILADJUSTMENT.ID is null then convert(varchar(10),PROPERTYDETAIL.SALEDATE,101) --if unposted adjustment exists we want to use it's date for post process else just use Revenue Date
else convert(varchar(10), PROPERTYDETAILADJUSTMENT.DATE, 101)
end as TRANDATE,
case when PROPERTYDETAILADJUSTMENT.ID is null then convert(varchar(10), PROPERTYDETAIL.SALEPOSTDATE, 101) -- same reason as above
else convert(varchar(10), PROPERTYDETAILADJUSTMENT.POSTDATE, 101)
end as POSTDATE,
case when PROPERTYDETAILADJUSTMENT.ID is null then PROPERTYDETAIL.SALEPOSTSTATUSCODE -- same reason as above.
else PROPERTYDETAILADJUSTMENT.POSTSTATUSCODE
end as POSTSTATUSCODE,
DETAIL.ACCOUNT,
DETAIL.PROJECT,
DETAIL.AMOUNT,
@JOURNAL as JOURNAL,
DETAIL.REFERENCE as REFERENCE,
@BATCH as BATCH,
0 as ISREVERSAL,
case when PROPERTYDETAILADJUSTMENT.ID is null then 0 else 1 end as ISADJUSTED,
DETAIL.ID,
'' as ERRORMESSAGE,
null as REVERSALID
from dbo.REVENUE
inner join dbo.REVENUEPAYMENTMETHOD on REVENUE.ID = REVENUEPAYMENTMETHOD.REVENUEID
inner join dbo.PROPERTYDETAIL on REVENUE.ID = PROPERTYDETAIL.ID
left join dbo.PROPERTYDETAILADJUSTMENT on PROPERTYDETAIL.ID = PROPERTYDETAILADJUSTMENT.PROPERTYDETAILID
inner join
(select ID, PROPERTYDETAILID, GLPAYMENTMETHODREVENUETYPEMAPPINGID, 'C' as TRANTYPE, CREDITACCOUNT as ACCOUNT, PROJECT, AMOUNT, REFERENCE from dbo.PROPERTYDETAILGLDISTRIBUTION
union all
select ID, PROPERTYDETAILID, GLPAYMENTMETHODREVENUETYPEMAPPINGID, 'D' as TRANTYPE, DEBITACCOUNT as ACCOUNT, PROJECT, AMOUNT, REFERENCE from dbo.PROPERTYDETAILGLDISTRIBUTION)
as DETAIL on PROPERTYDETAIL.ID = DETAIL.PROPERTYDETAILID
where
(PROPERTYDETAIL.ID = @REVENUEID or @REVENUEID is null)
and REVENUEPAYMENTMETHOD.PAYMENTMETHODCODE = 8
and (PROPERTYDETAIL.SALEPOSTSTATUSCODE = 1 or (PROPERTYDETAIL.SALEPOSTSTATUSCODE = 0 and PROPERTYDETAILADJUSTMENT.POSTSTATUSCODE = 1));
/*
Get the GL Distribution rows for property detail revenue generated by the system
*/
insert into @GLDISTRIBUTION(REVENUEID, REVENUESPLITID, GLPAYMENTMETHODREVENUETYPEMAPPINGID, WRITEOFFID, ISSOLDPROPERTYORSTOCK, TRANTYPE, DEBITCREDIT, TRANDATE, POSTDATE,
POSTSTATUSCODE, ACCOUNTSTRING, PROJECT, AMOUNT, JOURNAL, REFERENCE, BATCH, ISREVERSAL, ISADJUSTED, GROUPID, ERRORMESSAGE, REVERSALID)
select tf.REVENUEID,
tf.REVENUESPLITID,
tf.GLPAYMENTMETHODREVENUETYPEMAPPINGID,
NULL as WRITEOFFID,
1 as ISSOLDPROPERTYORSTOCK,
@TRANTYPE as TRANTYPE,
tf.DEBITCREDIT,
convert(varchar(10),tf.TRANDATE, 101),
convert(varchar(10),tf.POSTDATE, 101),
tf.POSTSTATUSCODE,
tf.ACCOUNTSTRING,
tf.PROJECT,
tf.AMOUNT,
@JOURNAL as JOURNAL,
tf.REFERENCE,
@BATCH as BATCH,
0 AS ISREVERSAL,
tf.ISADJUSTED,
tf.GROUPID,
tf.ERRORMESSAGE,
null as REVERSALID
from dbo.UFN_REVENUE_GENERATEPROPERTYDETAILGLDISTRIBUTION(default) as tf
where
(tf.REVENUEID = @REVENUEID or @REVENUEID is null)
and tf.PAYMENTMETHODCODE = 8
and tf.POSTSTATUSCODE = 1
and not exists (select ID from dbo.PROPERTYDETAILGLDISTRIBUTION where PROPERTYDETAILGLDISTRIBUTION.PROPERTYDETAILID = tf.REVENUEID);
/*
Get the GL Distribution rows for pledge write-off generated by the system
*/
insert into @GLDISTRIBUTION(REVENUEID, REVENUESPLITID, GLPAYMENTMETHODREVENUETYPEMAPPINGID, WRITEOFFID, ISSOLDPROPERTYORSTOCK, TRANTYPE, DEBITCREDIT, TRANDATE, POSTDATE,
POSTSTATUSCODE, ACCOUNTSTRING, PROJECT, AMOUNT, JOURNAL, REFERENCE, BATCH, ISREVERSAL, ISADJUSTED, GROUPID, ERRORMESSAGE, REVERSALID)
select tf.REVENUEID,
tf.REVENUESPLITID,
tf.GLPAYMENTMETHODREVENUETYPEMAPPINGID,
tf.WRITEOFFID as WRITEOFFID,
0 as ISSOLDPROPERTYORSTOCK,
@TRANTYPE as TRANTYPE,
tf.DEBITCREDIT,
convert(varchar(10),tf.TRANDATE, 101),
convert(varchar(10),tf.POSTDATE, 101),
tf.POSTSTATUSCODE,
tf.ACCOUNTSTRING,
tf.PROJECT,
tf.AMOUNT,
@JOURNAL as JOURNAL,
tf.REFERENCE,
@BATCH as BATCH,
0 AS ISREVERSAL,
0 as ISADJUSTED,
tf.GROUPID,
tf.ERRORMESSAGE,
null as REVERSALID
from dbo.UFN_REVENUE_GENERATEWRITEOFFGLDISTRIBUTION(default) as tf
where
(tf.REVENUEID = @REVENUEID or @REVENUEID is null)
and (tf.POSTSTATUSCODE = 1)
and not exists (select ID from dbo.WRITEOFFGLDISTRIBUTION where WRITEOFFGLDISTRIBUTION.WRITEOFFID = tf.WRITEOFFID);
/*
Get the GL Distribution rows for write-off records from WriteOffGLDistribution table
*/
insert into @GLDISTRIBUTION(REVENUEID, REVENUESPLITID, GLPAYMENTMETHODREVENUETYPEMAPPINGID, WRITEOFFID, ISSOLDPROPERTYORSTOCK, TRANTYPE, DEBITCREDIT, TRANDATE, POSTDATE,
POSTSTATUSCODE, ACCOUNTSTRING, PROJECT, AMOUNT, JOURNAL, REFERENCE, BATCH, ISREVERSAL, ISADJUSTED, GROUPID, ERRORMESSAGE, REVERSALID)
select REVENUE.ID,
DETAIL.ID as REVENUESPLITID,
DETAIL.GLPAYMENTMETHODREVENUETYPEMAPPINGID,
WRITEOFF.ID as WRITEOFFID,
1 as ISSOLDPROPERTYORSTOCK,
@TRANTYPE as TRANTYPE,
DETAIL.TRANTYPE as DEBITCREDIT,
case when WRITEOFFADJUSTMENT.ID is null then convert(varchar(10),WRITEOFF.DATE,101) --if unposted adjustment exists we want to use it's date for post process else just use Revenue Date
else convert(varchar(10), WRITEOFFADJUSTMENT.DATE, 101)
end as TRANDATE,
case when WRITEOFFADJUSTMENT.ID is null then convert(varchar(10), WRITEOFF.POSTDATE, 101) -- same reason as above
else convert(varchar(10), WRITEOFFADJUSTMENT.POSTDATE, 101)
end as POSTDATE,
case when WRITEOFFADJUSTMENT.ID is null then WRITEOFF.POSTSTATUSCODE -- same reason as above.
else WRITEOFFADJUSTMENT.POSTSTATUSCODE
end as POSTSTATUSCODE,
DETAIL.ACCOUNT,
DETAIL.PROJECT,
DETAIL.AMOUNT,
@JOURNAL as JOURNAL,
DETAIL.REFERENCE as REFERENCE,
@BATCH as BATCH,
0 as ISREVERSAL,
case when WRITEOFFADJUSTMENT.ID is null then 0 else 1 end as ISADJUSTED,
DETAIL.ID,
'' as ERRORMESSAGE,
null as REVERSALID
from dbo.REVENUE
inner join dbo.WRITEOFF on REVENUE.ID = WRITEOFF.REVENUEID
left join dbo.WRITEOFFADJUSTMENT on WRITEOFF.ID = WRITEOFFADJUSTMENT.WRITEOFFID
inner join
(select ID, WRITEOFFID, GLPAYMENTMETHODREVENUETYPEMAPPINGID, 'C' as TRANTYPE, CREDITACCOUNT as ACCOUNT, PROJECT, AMOUNT, REFERENCE from dbo.WRITEOFFGLDISTRIBUTION
union all
select ID, WRITEOFFID, GLPAYMENTMETHODREVENUETYPEMAPPINGID, 'D' as TRANTYPE, DEBITACCOUNT as ACCOUNT, PROJECT, AMOUNT, REFERENCE from dbo.WRITEOFFGLDISTRIBUTION)
as DETAIL on WRITEOFF.ID = DETAIL.WRITEOFFID
where
(REVENUE.ID = @REVENUEID or @REVENUEID is null)
and (WRITEOFF.POSTSTATUSCODE = 1 or (WRITEOFF.POSTSTATUSCODE = 0 and WRITEOFFADJUSTMENT.POSTSTATUSCODE = 1));
/*
Getting reversals
*/
insert into @GLDISTRIBUTION(REVENUEID, REVENUESPLITID, GLPAYMENTMETHODREVENUETYPEMAPPINGID, WRITEOFFID, ISSOLDPROPERTYORSTOCK, TRANTYPE, DEBITCREDIT, TRANDATE, POSTDATE,
POSTSTATUSCODE, ACCOUNTSTRING, PROJECT, AMOUNT, JOURNAL, REFERENCE, BATCH, ISREVERSAL, ISADJUSTED, GROUPID, ERRORMESSAGE, REVERSALID)
select
REVERSAL.REVENUEID as REVENUEID,
NULL as REVENUESPLITID,
REVERSAL.GLPAYMENTMETHODREVENUETYPEMAPPINGID,
NULL as WRITEOFFID,
0 as ISSOLDPROPERTYORSTOCK,
@TRANTYPE as TRANTYPE,
REVERSAL.TRANTYPE as DEBITCREDIT,
convert(varchar(10),REVERSAL.DATEADDED, 101) as TRANDATE,
convert(varchar(10),REVERSAL.POSTDATE, 101),
REVERSAL.POSTSTATUSCODE,
REVERSAL.ACCOUNTSTRING,
REVERSAL.PROJECT,
REVERSAL.AMOUNT,
@JOURNAL as JOURNAL,
case ISDELETE when 0 then REVERSAL.REFERENCE else REVERSAL.REFERENCE + '-DEL' end as REFERENCE,
@BATCH as BATCH,
1 as ISREVERSAL,
0 as ISADJUSTED,
REVERSAL.ID as GROUPID,
'' as ERRORMESSAGE,
REVERSAL.ID as REVERSALID
from
(select 'D' as TRANTYPE, GLPAYMENTMETHODREVENUETYPEMAPPINGID, REFERENCE, DATEADDED, POSTDATE, POSTSTATUSCODE, DEBITACCOUNT AS ACCOUNTSTRING, PROJECT, AMOUNT, ID, ISDELETE, REVENUEID from dbo.GLREVERSAL
union
select 'C' as TRANTYPE, GLPAYMENTMETHODREVENUETYPEMAPPINGID, REFERENCE, DATEADDED, POSTDATE, POSTSTATUSCODE, CREDITACCOUNT AS ACCOUNTSTRING, PROJECT, AMOUNT, ID, ISDELETE, REVENUEID from dbo.GLREVERSAL) AS REVERSAL
where
REVERSAL.POSTSTATUSCODE = 1 and @REVENUEID is null;
return;
end