The last digit of a bar code number is a computer check digit which makes sure the bar code is correctly composed. Below is Logic for generating the Check Digit for SSCC number
The following table gives an example to illustrate how a Check Digit is calculated
Below i have created Stored Procedure to perform the check digit algorithm for SSCC
CREATE PROCEDURE [dbo].[CHECK_DIGIT]
(@PALLET_ID VARCHAR(100),@CHECKDIGIT_TOTAL VARCHAR(20) OUTPUT)
AS
BEGIN
DECLARE @LENGTH INT = 0,
@i TINYINT = 0,
@evenDigitSum INT = 0,
@oddDigitSum INT = 0,
@EA INT = 0,
@SumOfDigit INT = 0,
@TOTALCHECKDIGIT INT = 0,
@CHECKDIGIT INT = 0,
@NEAREST_TEN INT = 0,
@ROUNDVALUE INT = 0,
@ADD_ZERO INT = 0,
@CONVERT_STRING VARCHAR(10),
@CONVERT_INT INT = 0,
@TOTAL_CHECK_DIGIT INT = 0
SET @LENGTH = LEN(RTRIM(LTRIM(@PALLET_ID)))
SET @i = 1
WHILE (@i <= @LENGTH)
BEGIN
SET @EA = @i % 2
IF @EA = 0
BEGIN
SET @evenDigitSum = CONVERT(TINYINT, SUBSTRING(@PALLET_ID,@i,1))
SET @evenDigitSum = @evenDigitSum * 3
SET @SumOfDigit = @evenDigitSum
END
ELSE
BEGIN
SET @oddDigitSum = CONVERT(TINYINT, SUBSTRING(@PALLET_ID,@i,1))
SET @oddDigitSum = @oddDigitSum * 1
SET @SumOfDigit = @oddDigitSum
END
SET @TOTALCHECKDIGIT = @TOTALCHECKDIGIT + @SumOfDigit
SET @i = @i + 1
END
SET @NEAREST_TEN = @TOTALCHECKDIGIT % 10
SET @ROUNDVALUE = ROUND(@NEAREST_TEN,2)
IF @ROUNDVALUE > 1
BEGIN
SET @CONVERT_INT = 10 - @ROUNDVALUE
END
ELSE
BEGIN
SET @CONVERT_INT = 0
END
SET @TOTAL_CHECK_DIGIT = @CONVERT_INT
SET @CHECKDIGIT_TOTAL = CONVERT(varchar(20), @TOTAL_CHECK_DIGIT)
RETURN @CHECKDIGIT_TOTAL
END
GO
No comments:
Post a Comment