SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS OFF
GO
CREATE PROCEDURE [dbo].[spBATGenerateSecondCommGLNumber_Legacy]
@ICPriKey int,
@BranchPriKey int,
@DivisionPriKey int,
@OrdPriKey int,
@BATProcessPriKey int,
@Source varchar(50),
@SourcePriKey int
AS
SET NOCOUNT ON
DECLARE
@glNumber varchar(50),
@glcPriKey int,
@countGLCSegmets int,
@glcSourceName varchar(10),
@glsCounter int,
@padLength int,
@glAccount varchar(100),
@secondGLNumber varchar(66),
@batErrorCode int,
@glaPriKey int
SET @batErrorCode = 0
SET @glsCounter = 1
SET @secondGLNumber = ' '
declare @theBlankSessionID varchar( 50 )
set @theBlankSessionID = ''
IF( not exists (SELECT * FROM Branch WHERE BranchPriKey = @BranchPriKey) )
BEGIN
EXEC @batErrorCode = spBATRecordError @theBlankSessionID, @Source, @SourcePriKey, 705, 'Order', @OrdPriKey
SET @secondGLNumber = null
END
ELSE
BEGIN
SET @glcPriKey = (SELECT GLCPriKey FROM Branch WHERE BranchPriKey = @BranchPriKey)
SET @countGLCSegmets = (SELECT Count(*) FROM GLDetail WHERE GLCPriKey = @glcPriKey)
END
IF( (SELECT Count(*) FROM GLSource WHERE SourceName = 'Natural') > 1 )
BEGIN
EXEC @batErrorCode = spBATRecordError @theBlankSessionID, @Source, @SourcePriKey, 697, 'Order', @OrdPriKey
SET @secondGLNumber = null
END
IF( (SELECT Count(*) FROM GLSource WHERE SourceName = 'Sub') > 1 )
BEGIN
EXEC @batErrorCode = spBATRecordError @theBlankSessionID, @Source, @SourcePriKey, 698, 'Order', @OrdPriKey
SET @secondGLNumber = null
END
IF( (SELECT Count(*) FROM GLSource WHERE SourceName = 'Company') > 1 )
BEGIN
EXEC @batErrorCode = spBATRecordError @theBlankSessionID, @Source, @SourcePriKey, 699, 'Order', @OrdPriKey
SET @secondGLNumber = null
END
IF( (SELECT Count(*) FROM GLSource WHERE SourceName = 'Branch') > 1 )
BEGIN
EXEC @batErrorCode = spBATRecordError @theBlankSessionID, @Source, @SourcePriKey, 700, 'Order', @OrdPriKey
SET @secondGLNumber = null
END
IF( (SELECT Count(*) FROM GLSource WHERE SourceName = 'Division') > 1 )
BEGIN
EXEC @batErrorCode = spBATRecordError @theBlankSessionID, @Source, @SourcePriKey, 701, 'Order', @OrdPriKey
SET @secondGLNumber = null
END
IF( @glcPriKey is null )
BEGIN
EXEC @batErrorCode = spBATRecordError @theBlankSessionID, @Source, @SourcePriKey, 293, 'Order', @OrdPriKey
SET @secondGLNumber = null
END
ELSE
BEGIN
EXEC @glaPriKey = spBATSelectionProcess @ICPriKey, @glcPriKey, @OrdPriKey, 'GLARAP', @Source, @SourcePriKey, 'AP'
end
IF( (SELECT IsNull(ManualGL, 0) FROM GLARAP WHERE GLAPriKey = @glaPriKey) = 1 )
BEGIN
SET @secondGLNumber = (SELECT OverrideGLNumber FROM GLARAP WHERE GLAPriKey = @glaPriKey and ManualGL = 1)
IF( @secondGLNumber is null )
BEGIN
EXEC @batErrorCode = spBATRecordError @theBlankSessionID, @Source, @SourcePriKey, 706, 'Order', @OrdPriKey
SET @secondGLNumber = null
END
END
ELSE
BEGIN
WHILE( @glsCounter <= @countGLCSegmets )
BEGIN
SET @padLength = (SELECT SegmentLength FROM GLDetail WHERE SegmentNumber = @glsCounter and GLCPriKey = @glcPriKey)
SET @glcSourceName = (
SELECT g.SourceName
FROM GLSource g
Inner Join GLDetail gd on (gd.GLSPriKey = g.GLSPriKey)
WHERE gd.GLCPriKey = @glcPriKey and gd.SegmentNumber = @glsCounter )
IF( @glcSourceName = 'Natural' )
BEGIN
SET @glNumber = (SELECT Ltrim(Rtrim(GLAccount)) FROM GLARAP WHERE GLAPriKey = @glaPriKey)
IF( @glNumber is null )
BEGIN
EXEC @batErrorCode = spBATRecordError @theBlankSessionID, @Source, @SourcePriKey, 181, 'Order', @OrdPriKey
SET @secondGLNumber = null
END
ELSE IF( Len(Rtrim(@glNumber)) > @padLength )
BEGIN
EXEC @batErrorCode = spBATRecordError @theBlankSessionID, @Source, @SourcePriKey, 182, 'Order', @OrdPriKey
SET @secondGLNumber = null
END
ELSE
BEGIN
EXEC @glAccount = udfLeftPadding @padLength, @glNumber
IF( @glsCounter > 1 and @secondGLNumber <> ' ' )
begin
SET @secondGLNumber = Ltrim(Rtrim(@secondGLNumber)) + '-' + Ltrim(Rtrim(@glAccount))
end
ELSE
begin
SET @secondGLNumber = Ltrim(Rtrim(@secondGLNumber)) + Ltrim(Rtrim(@glAccount))
end
END
END
ELSE IF( @glcSourceName = 'Sub' )
BEGIN
SET @glNumber = (SELECT Ltrim(Rtrim(GLSubAccount)) FROM GLARAP WHERE GLAPriKey = @glaPriKey)
IF( @glNumber is null )
BEGIN
EXEC @batErrorCode = spBATRecordError @theBlankSessionID, @Source, @SourcePriKey, 183, 'Order', @OrdPriKey
SET @secondGLNumber = null
END
ELSE IF( Len(Rtrim(@glNumber)) > @padLength )
BEGIN
EXEC @batErrorCode = spBATRecordError @theBlankSessionID, @Source, @SourcePriKey, 184, 'Order', @OrdPriKey
SET @secondGLNumber = null
END
ELSE
BEGIN
EXEC @glAccount = udfLeftPadding @padLength, @glNumber
IF( @glsCounter > 1 and @secondGLNumber <> ' ' )
begin
SET @secondGLNumber = Ltrim(Rtrim(@secondGLNumber)) + '-' + Ltrim(Rtrim(@glAccount))
end
ELSE
begin
SET @secondGLNumber = Ltrim(Rtrim(@secondGLNumber)) + 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 @theBlankSessionID, @Source, @SourcePriKey, 185, 'Order', @OrdPriKey
SET @secondGLNumber = null
END
ELSE IF( Len(Rtrim(@glNumber)) > @padLength )
BEGIN
EXEC @batErrorCode = spBATRecordError @theBlankSessionID, @Source, @SourcePriKey, 186, 'Order', @OrdPriKey
SET @secondGLNumber = null
END
ELSE
BEGIN
EXEC @glAccount = udfLeftPadding @padLength, @glNumber
IF( @glsCounter > 1 and @secondGLNumber <> ' ' )
begin
SET @secondGLNumber = Ltrim(Rtrim(@secondGLNumber)) + '-' + Ltrim(Rtrim(@glAccount))
end
ELSE
begin
SET @secondGLNumber = Ltrim(Rtrim(@secondGLNumber)) + 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 @theBlankSessionID, @Source, @SourcePriKey, 187, 'Order', @OrdPriKey
SET @secondGLNumber = null
END
ELSE IF( Len(Rtrim(@glNumber)) > @padLength )
BEGIN
EXEC @batErrorCode = spBATRecordError @theBlankSessionID, @Source, @SourcePriKey, 188, 'Order', @OrdPriKey
SET @secondGLNumber = null
END
ELSE
BEGIN
EXEC @glAccount = udfLeftPadding @padLength, @glNumber
IF( @glsCounter > 1 and @secondGLNumber <> ' ' )
begin
SET @secondGLNumber = Ltrim(Rtrim(@secondGLNumber)) + '-' + Ltrim(Rtrim(@glAccount))
end
ELSE
begin
SET @secondGLNumber = Ltrim(Rtrim(@secondGLNumber)) + Ltrim(Rtrim(@glAccount))
end
END
END
ELSE IF( @glcSourceName = 'Division' )
BEGIN
IF( (SELECT DivisionID FROM Division WHERE DivisionID = @DivisionPriKey) is null )
BEGIN
EXEC @batErrorCode = spBATRecordError @theBlankSessionID, @Source, @SourcePriKey, 240, 'Order', @OrdPriKey
SET @secondGLNumber = null
END
SET @glNumber = (SELECT Ltrim(Rtrim(GLCode)) FROM Division WHERE DivisionID = @DivisionPriKey)
IF( @glNumber is null )
BEGIN
EXEC @batErrorCode = spBATRecordError @theBlankSessionID, @Source, @SourcePriKey, 189, 'Order', @OrdPriKey
SET @secondGLNumber = null
END
ELSE IF( Len(Rtrim(@glNumber)) > @padLength )
BEGIN
EXEC @batErrorCode = spBATRecordError @theBlankSessionID, @Source, @SourcePriKey, 190, 'Order', @OrdPriKey
SET @secondGLNumber = null
END
ELSE
BEGIN
EXEC @glAccount = udfLeftPadding @padLength, @glNumber
IF( @glsCounter > 1 and @secondGLNumber <> ' ' )
begin
SET @secondGLNumber = Ltrim(Rtrim(@secondGLNumber)) + '-' + Ltrim(Rtrim(@glAccount))
end
ELSE
begin
SET @secondGLNumber = Ltrim(Rtrim(@secondGLNumber)) + Ltrim(Rtrim(@glAccount))
end
END
END
ELSE
BEGIN
EXEC @batErrorCode = spBATRecordError @theBlankSessionID, @Source, @SourcePriKey, 191, 'Order', @OrdPriKey
SET @glsCounter = @countGLCSegmets + 1
SET @secondGLNumber = null
END
SET @glsCounter = @glsCounter + 1
END
END
IF( @secondGLNumber is not null )
BEGIN
EXEC @batErrorCode =
spBATCheckGLNumber
@theBlankSessionID,
@secondGLNumber,
@branchPriKey,
@Source,
@SourcePriKey,
'Order',
@OrdPriKey
IF( @batErrorCode = 0 )
begin
UPDATE BATProcess set
OpposingGLNumber = @secondGLNumber
WHERE BATProcessPriKey = @BATProcessPriKey
end
ELSE
begin
EXEC @batErrorCode = spBATRecordError @theBlankSessionID, @Source, @SourcePriKey, 744, 'Order', @OrdPriKey
end
END
GO
GRANT EXECUTE ON [dbo].[spBATGenerateSecondCommGLNumber_Legacy] TO [MssExec]
GO