CREATE PROCEDURE [dbo].[spBATGenerateFirstRevGLNumber_Legacy]
@inSessionID varchar( 50 ),
@ICPriKey int,
@BranchPriKey int,
@DivisionID int,
@OrdPriKey int,
@BATProcessPriKey int,
@Source varchar(50),
@SourcePriKey int
as
set nocount on
declare @glNumber varchar( 50 )
declare @glcPriKey int
declare @countGLCSegmets int
declare @glcSourceName varchar( 10 )
declare @glsCounter int
declare @padLength int
declare @glAccount varchar( 100 )
declare @firstGLNumber varchar( 66 )
declare @batErrorCode int
declare @icdPriKey int
set @batErrorCode = 0
set @glsCounter = 1
set @firstGLNumber = ' '
if not exists
(
select 1
from Branch
where BranchPriKey = @BranchPriKey
)
begin
exec @batErrorCode = spBATRecordError
@inSessionID,
@Source,
@SourcePriKey,
703,
'Order',
@OrdPriKey
set @firstGLNumber = null
end
else
begin
set @glcPriKey =
(
select GLCPriKey
from Branch
where BranchPriKey = @BranchPriKey
)
set @countGLCSegmets =
(
select count(*)
from GLDetail
where GLCPriKey = @glcPriKey
)
end
if @glcPriKey is null
begin
exec @batErrorCode = spBATRecordError
@inSessionID,
@Source,
@SourcePriKey,
121,
'Order',
@OrdPriKey
set @firstGLNumber = null
end
else
begin
exec @icdPriKey = spBATSelectionProcess
@ICPriKey,
@glcPriKey,
@OrdPriKey,
'ICDetail',
@Source,
@SourcePriKey,
null
end
if( select count(*)
from GLSource
where SourceName = 'Natural' ) > 1
begin
exec @batErrorCode = spBATRecordError
@inSessionID,
@Source,
@SourcePriKey,
687,
'Order',
@OrdPriKey
set @firstGLNumber = null
end
if( select count(*)
from GLSource
where SourceName = 'Sub' ) > 1
begin
exec @batErrorCode = spBATRecordError
@inSessionID,
@Source,
@SourcePriKey,
688,
'Order',
@OrdPriKey
set @firstGLNumber = null
end
if( select count(*)
from GLSource
where SourceName = 'Company' ) > 1
begin
exec @batErrorCode = spBATRecordError
@inSessionID,
@Source,
@SourcePriKey,
689,
'Order',
@OrdPriKey
set @firstGLNumber = null
end
if( select count(*)
from GLSource
where SourceName = 'Branch' ) > 1
begin
exec @batErrorCode = spBATRecordError
@inSessionID,
@Source,
@SourcePriKey,
690,
'Order',
@OrdPriKey
set @firstGLNumber = null
end
if( select count(*)
from GLSource
where SourceName = 'Division' ) > 1
begin
exec @batErrorCode = spBATRecordError
@inSessionID,
@Source,
@SourcePriKey,
691,
'Order',
@OrdPriKey
set @firstGLNumber = null
end
if @batErrorCode = 0
begin
while @glsCounter <= @countGLCSegmets
begin
set @glcSourceName =
(
select gls.SourceName
from GLSource gls
inner join GLDetail gld on gld.GLSPriKey = gls.GLSPriKey
where
gld.GLCPriKey = @glcPriKey and
gld.SegmentNumber = @glsCounter
)
set @padLength =
(
select SegmentLength
from GLDetail
where
SegmentNumber = @glsCounter and
GLCPriKey = @glcPriKey
)
if @glcSourceName = 'Natural'
begin
set @glNumber =
(
select ltrim( rtrim( RevGLAccount ) )
from ICDetail
where ICDPriKey = @icdPriKey
)
if @glNumber is null and @icdPriKey != 0
begin
exec @batErrorCode = spBATRecordError
@inSessionID,
@Source,
@SourcePriKey,
110,
'Order',
@OrdPriKey,
@icdPriKey
set @firstGLNumber = null
end
else if len( rtrim( @glNumber ) ) > @padLength
begin
exec @batErrorCode = spBATRecordError
@inSessionID,
@Source,
@SourcePriKey,
111,
'Order',
@OrdPriKey
set @firstGLNumber = null
end
else
begin
exec @glAccount = udfLeftPadding
@padLength,
@glNumber
if @glsCounter > 1 and @firstGLNumber <> ' '
begin
set @firstGLNumber = ltrim( rtrim( @firstGLNumber ) ) + '-' + ltrim( rtrim( @glAccount ) )
end
else
begin
set @firstGLNumber = ltrim( rtrim( @firstGLNumber ) ) + ltrim( rtrim( @glAccount ) )
end
end
end
else if @glcSourceName = 'Sub'
begin
set @glNumber =
(
select ltrim( rtrim( RevGLSubAccount ) )
from ICDetail
where ICDPriKey = @icdPriKey
)
if @glNumber is null and @icdPriKey != 0
begin
exec @batErrorCode = spBATRecordError
@inSessionID,
@Source,
@SourcePriKey,
112,
'Order',
@OrdPriKey,
@icdPriKey
set @firstGLNumber = null
end
else if len( rtrim( @glNumber ) ) > @padLength
begin
exec @batErrorCode = spBATRecordError
@inSessionID,
@Source,
@SourcePriKey,
113,
'Order',
@OrdPriKey
set @firstGLNumber = null
end
else
begin
exec @glAccount = udfLeftPadding
@padLength,
@glNumber
if @glsCounter > 1 and @firstGLNumber <> ' '
begin
set @firstGLNumber = ltrim( rtrim( @firstGLNumber ) ) + '-' + ltrim( rtrim( @glAccount ) )
end
else
begin
set @firstGLNumber = ltrim( rtrim( @firstGLNumber ) ) + ltrim( rtrim( @glAccount ) )
end
end
end
else if @glcSourceName = 'Company'
begin
set @glNumber =
(
select ltrim( rtrim( CompanyGLCode ) )
from Branch
where BranchPriKey = @BranchPriKey
)
if @glNumber is null
begin
exec @batErrorCode = spBATRecordError
@inSessionID,
@Source,
@SourcePriKey,
114,
'Order',
@OrdPriKey
set @firstGLNumber = null
end
else if len( rtrim( @glNumber ) ) > @padLength
begin
exec @batErrorCode = spBATRecordError
@inSessionID,
@Source,
@SourcePriKey,
115,
'Order',
@OrdPriKey
set @firstGLNumber = null
end
else
begin
exec @glAccount = udfLeftPadding
@padLength,
@glNumber
if @glsCounter > 1 and @firstGLNumber <> ' '
begin
set @firstGLNumber = ltrim( rtrim( @firstGLNumber ) ) + '-' + ltrim( rtrim( @glAccount ) )
end
else
begin
set @firstGLNumber = ltrim( rtrim( @firstGLNumber ) ) + ltrim( rtrim( @glAccount ) )
end
end
end
else if @glcSourceName = 'Branch'
begin
set @glNumber =
(
select ltrim( rtrim( GLCode ) )
from Branch
where BranchPriKey = @BranchPriKey
)
if @glNumber is null
begin
exec @batErrorCode = spBATRecordError
@inSessionID,
@Source,
@SourcePriKey,
116,
'Order',
@OrdPriKey
set @firstGLNumber = null
end
else if len( rtrim( @glNumber ) ) > @padLength
begin
exec @batErrorCode = spBATRecordError
@inSessionID,
@Source,
@SourcePriKey,
117,
'Order',
@OrdPriKey
set @firstGLNumber = null
end
else
begin
exec @glAccount = udfLeftPadding
@padLength,
@glNumber
if @glsCounter > 1 and @firstGLNumber <> ' '
begin
set @firstGLNumber = ltrim( rtrim( @firstGLNumber ) ) + '-' + ltrim( rtrim( @glAccount ) )
end
else
begin
set @firstGLNumber = ltrim( rtrim( @firstGLNumber ) ) + ltrim( rtrim( @glAccount ) )
end
end
end
else if @glcSourceName = 'Division'
begin
if not exists
(
select DivisionID
from Division
where DivisionID = @DivisionID
)
begin
exec @batErrorCode = spBATRecordError
@inSessionID,
@Source,
@SourcePriKey,
154,
'Order',
@OrdPriKey
set @firstGLNumber = null
end
else
begin
set @glNumber =
(
select ltrim( rtrim( GLCode ) )
from Division
where DivisionID = @DivisionID
)
if @glNumber is null
begin
exec @batErrorCode = spBATRecordError
@inSessionID,
@Source,
@SourcePriKey,
118,
'Order',
@OrdPriKey
set @firstGLNumber = null
end
else if len( rtrim( @glNumber ) ) > @padLength
begin
exec @batErrorCode = spBATRecordError
@inSessionID,
@Source,
@SourcePriKey,
119,
'Order',
@OrdPriKey
set @firstGLNumber = null
end
else
begin
exec @glAccount = udfLeftPadding
@padLength,
@glNumber
if @glsCounter > 1 and @firstGLNumber <> ' '
begin
set @firstGLNumber = ltrim( rtrim( @firstGLNumber ) ) + '-' + ltrim( rtrim( @glAccount ) )
end
else
begin
set @firstGLNumber = ltrim( rtrim( @firstGLNumber ) ) + ltrim( rtrim( @glAccount ) )
end
end
end
end
else
begin
exec @batErrorCode = spBATRecordError
@inSessionID,
@Source,
@SourcePriKey,
120,
'Order',
@OrdPriKey
set @glsCounter = @countGLCSegmets + 1
set @firstGLNumber = null
end
set @glsCounter = @glsCounter + 1
end
end
if @firstGLNumber is not null
begin
exec @batErrorCode = spBATCheckGLNumber
@inSessionID,
@firstGLNumber,
@branchPriKey,
@Source,
@SourcePriKey,
'Order',
@OrdPriKey
if @batErrorCode = 0
begin
update BATProcess
set GLNumber = @firstGLNumber
where BATProcessPriKey = @BATProcessPriKey
end
else
begin
exec @batErrorCode = spBATRecordError
@inSessionID,
@Source,
@SourcePriKey,
741,
'Order',
@OrdPriKey,
@firstGLNumber
end
end
GO
GRANT EXECUTE ON [dbo].[spBATGenerateFirstRevGLNumber_Legacy] TO [MssExec]
GO