UFN_GLDISTRIBUTION_DEBITSEQUALCREDITS
Checks that the amount of the credits is equal to the amount of the debits for a GL distribution.
Return
Return Type |
---|
bit |
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@DISTRIBUTION | xml | IN |
Definition
Copy
create function dbo.UFN_GLDISTRIBUTION_DEBITSEQUALCREDITS
(
@DISTRIBUTION xml
)
returns bit
with execute as caller
as
begin
declare @ISVALID bit;
declare @DEBITAMOUNT as money;
declare @CREDITAMOUNT as money;
declare @TOTALDEBITAMOUNT as money;
declare @TOTALCREDITAMOUNT as money;
declare @MAPDESCRIPTION nvarchar(100);
set @TOTALDEBITAMOUNT = 0;
set @TOTALCREDITAMOUNT = 0;
set @DEBITAMOUNT = 0;
set @CREDITAMOUNT = 0;
declare DISTRIBUTION_CURSOR cursor local fast_forward for
select distinct
GLPAYMENTMETHODREVENUETYPEMAPPING.DESCRIPTION
from
dbo.UFN_REVENUE_GETGLDISTRIBUTION_FROMITEMLISTXML(@DISTRIBUTION) tf
inner join
dbo.GLPAYMENTMETHODREVENUETYPEMAPPING on tf.GLPAYMENTMETHODREVENUETYPEMAPPINGID = GLPAYMENTMETHODREVENUETYPEMAPPING.ID;
open DISTRIBUTION_CURSOR;
fetch next from DISTRIBUTION_CURSOR into @MAPDESCRIPTION;
while (@@FETCH_STATUS = 0)
begin
select
@DEBITAMOUNT = sum(AMOUNT)
from
dbo.UFN_REVENUE_GETGLDISTRIBUTION_FROMITEMLISTXML(@DISTRIBUTION) tf
inner join
dbo.GLPAYMENTMETHODREVENUETYPEMAPPING on tf.GLPAYMENTMETHODREVENUETYPEMAPPINGID = GLPAYMENTMETHODREVENUETYPEMAPPING.ID
where
tf.TRANSACTIONTYPECODE = 0
and GLPAYMENTMETHODREVENUETYPEMAPPING.DESCRIPTION = @MAPDESCRIPTION;
select
@CREDITAMOUNT = sum(AMOUNT)
from
dbo.UFN_REVENUE_GETGLDISTRIBUTION_FROMITEMLISTXML(@DISTRIBUTION) tf
inner join
dbo.GLPAYMENTMETHODREVENUETYPEMAPPING on tf.GLPAYMENTMETHODREVENUETYPEMAPPINGID = GLPAYMENTMETHODREVENUETYPEMAPPING.ID
where
tf.TRANSACTIONTYPECODE = 1
and GLPAYMENTMETHODREVENUETYPEMAPPING.DESCRIPTION = @MAPDESCRIPTION;
if @DEBITAMOUNT is not null and @CREDITAMOUNT is not null
begin
if (@DEBITAMOUNT <> @CREDITAMOUNT)
begin
close DISTRIBUTION_CURSOR;
deallocate DISTRIBUTION_CURSOR;
return 0;
end
end
set @TOTALDEBITAMOUNT = @TOTALDEBITAMOUNT + coalesce(@DEBITAMOUNT, 0);
set @TOTALCREDITAMOUNT = @TOTALCREDITAMOUNT + coalesce(@CREDITAMOUNT, 0);
fetch next from DISTRIBUTION_CURSOR into @MAPDESCRIPTION;
end
close DISTRIBUTION_CURSOR;
deallocate DISTRIBUTION_CURSOR;
if @TOTALDEBITAMOUNT <> @TOTALCREDITAMOUNT
return 0;
return 1;
end