SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS OFF
GO
CREATE PROCEDURE [dbo].[spBATGenerateSecondThirdPartyGLNumber_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, 719, '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, 714, 'Order', @OrdPriKey
SET @secondGLNumber = null
END
IF( (SELECT Count(*) FROM GLSource WHERE SourceName = 'Sub') > 1 )
BEGIN
EXEC @batErrorCode = spBATRecordError @theBlankSessionID, @Source, @SourcePriKey, 715, 'Order', @OrdPriKey
SET @secondGLNumber = null
END
IF( (SELECT Count(*) FROM GLSource WHERE SourceName = 'Company') > 1 )
BEGIN
EXEC @batErrorCode = spBATRecordError @theBlankSessionID, @Source, @SourcePriKey, 716, 'Order', @OrdPriKey
SET @secondGLNumber = null
END
IF( (SELECT Count(*) FROM GLSource WHERE SourceName = 'Branch') > 1 )
BEGIN
EXEC @batErrorCode = spBATRecordError @theBlankSessionID, @Source, @SourcePriKey, 717, 'Order', @OrdPriKey
SET @secondGLNumber = null
END
IF( (SELECT Count(*) FROM GLSource WHERE SourceName = 'Division') > 1 )
BEGIN
EXEC @batErrorCode = spBATRecordError @theBlankSessionID, @Source, @SourcePriKey, 718, 'Order', @OrdPriKey
SET @secondGLNumber = null
END
IF( @glcPriKey is null )
BEGIN
EXEC @batErrorCode = spBATRecordError @theBlankSessionID, @Source, @SourcePriKey, 204, '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, 720, '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 gs.SourceName
FROM GLSource gs
Inner Join GLDetail gd on (gd.GLSPriKey = gs.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, 205, 'Order', @OrdPriKey
SET @secondGLNumber = null
END
ELSE IF( Len(Rtrim(@glNumber)) > @padLength )
BEGIN
EXEC @batErrorCode = spBATRecordError @theBlankSessionID, @Source, @SourcePriKey, 206, '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, 207, 'Order', @OrdPriKey
SET @secondGLNumber = null
END
ELSE IF Len(Rtrim(@glNumber)) > @padLength
BEGIN
EXEC @batErrorCode = spBATRecordError @theBlankSessionID, @Source, @SourcePriKey, 208, '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, 209, 'Order', @OrdPriKey
SET @secondGLNumber = null
END
ELSE IF( Len(Rtrim(@glNumber)) > @padLength )
BEGIN
EXEC @batErrorCode = spBATRecordError @theBlankSessionID, @Source, @SourcePriKey, 210, '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, 211, 'Order', @OrdPriKey
SET @secondGLNumber = null
END
ELSE IF( Len(Rtrim(@glNumber)) > @padLength )
BEGIN
EXEC @batErrorCode = spBATRecordError @theBlankSessionID, @Source, @SourcePriKey, 212, '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, 262, '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, 213, 'Order', @OrdPriKey
SET @secondGLNumber = null
END
ELSE IF( Len(Rtrim(@glNumber)) > @padLength )
BEGIN
EXEC @batErrorCode = spBATRecordError @theBlankSessionID, @Source, @SourcePriKey, 214, '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, 215, '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, 746, 'Order', @OrdPriKey
end
END
GO
GRANT EXECUTE ON [dbo].[spBATGenerateSecondThirdPartyGLNumber_Legacy] TO [MssExec]
GO