UFN_DISBURSEMENTPROCESS_RANGESGRID_DONOTALLOWDUPLICATECHECKNUMBERS
Checks for duplicate check numbers
Return
Return Type |
---|
bit |
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@DISBURSEMENTPROCESSID | uniqueidentifier | IN | |
@BANKACCOUNTID | uniqueidentifier | IN | |
@RANGESGRID | xml | IN | |
@RENUMBER | bit | IN | |
@SELECTEDITEM | int | IN |
Definition
Copy
CREATE function dbo.UFN_DISBURSEMENTPROCESS_RANGESGRID_DONOTALLOWDUPLICATECHECKNUMBERS(@DISBURSEMENTPROCESSID uniqueidentifier, @BANKACCOUNTID uniqueidentifier, @RANGESGRID xml, @RENUMBER bit, @SELECTEDITEM int)
returns bit
with execute as caller
as begin
declare @ReturnValue bit;
set @ReturnValue=0;
declare @TOTALDISBURSEMENTS int
declare @TempTable table
(
[START] int
,[END] int
,[COUNT] int
,[BANKACCOUNTID] uniqueidentifier
);
declare @TempTableValidRenumber table
(
[START] int
,[END] int
,[COUNT] int
,[BANKACCOUNTID] uniqueidentifier
);
select
@TOTALDISBURSEMENTS=COUNT(*)
from
dbo.DISBURSEMENTPROCESSDISBURSEMENT as DPD
inner join dbo.FINANCIALTRANSACTION as FTD on DPD.ID = FTD.ID
where
DPD.DISBURSEMENTPROCESSID = @DISBURSEMENTPROCESSID
group by
DPD.DISBURSEMENTPROCESSID;
if @RENUMBER=0
insert into @TempTable
select
[RANGESTART]
,[RANGEEND]
,case when [RANGEEND]<>0
then
[RANGEEND]-[RANGESTART]+1
else
0
end
,@BANKACCOUNTID
from dbo.UFN_DISBURSEMENTPROCESSFORMNUMBERRANGE_FROMITEMLISTXML(@RANGESGRID);
else
begin
-- When we are renumbering essentially any of the renumbering rows check numbers are valid
-- so declaring a table to hold valid numbers.
insert into @TempTableValidRenumber
select
[RANGESTART]
,[RANGEEND]
,[RANGECOUNT]
,@BANKACCOUNTID
from dbo.UFN_DISBURSEMENTPROCESSFORMNUMBERRANGE_FROMITEMLISTXML(@RANGESGRID)
where USERACTION = 3;
if @SELECTEDITEM>0
begin
insert into @TempTable
select
[STARTNUMBER]
,[STARTNUMBER] + [RANGECOUNT] - 1
,[STARTNUMBER]
,@BANKACCOUNTID
from dbo.UFN_DISBURSEMENTPROCESSFORMNUMBERRANGE_FROMITEMLISTXML(@RANGESGRID)
where [RANGESTART] = @SELECTEDITEM and USERACTION = 3;
end
else
insert into @TempTable
select
[STARTNUMBER]
,[STARTNUMBER] + [RANGECOUNT] - 1
,[STARTNUMBER]
,@BANKACCOUNTID
from dbo.UFN_DISBURSEMENTPROCESSFORMNUMBERRANGE_FROMITEMLISTXML(@RANGESGRID)
where USERACTION = 3;
end
update @TempTable
set [COUNT] = @TOTALDISBURSEMENTS - (select SUM([COUNT]) from @TempTable)
where [COUNT] = 0;
if exists(
select * from dbo.BANKACCOUNTTRANSACTION BAT
inner join @TempTable as T1 on
(T1.[START] <= BAT.TRANSACTIONNUMBER and case when T1.[END]<>0 then T1.[END] else T1.[START]+T1.[COUNT]-1 end >= BAT.TRANSACTIONNUMBER)
where
BAT.TRANSACTIONNUMBER not in
(
select BAT.TRANSACTIONNUMBER from dbo.BANKACCOUNTTRANSACTION BAT
inner join @TempTableValidRenumber T on BAT.TRANSACTIONNUMBER >= T.START and BAT.TRANSACTIONNUMBER <= T.[END]
)
and BAT.BANKACCOUNTID = @BANKACCOUNTID
and BAT.DELETED = 0
)
begin
set @ReturnValue = 1;
end
return @ReturnValue;
end