Barcode Checksum Hesaplama




Function GetManifestBarcode(vInvoiceNo As Variant, iPageNo As Integer) As String


    Dim nSum As Integer
    Dim nCheck As Integer
    Dim i As Integer
    Dim s As String
    Dim n As Integer
    Dim ch As String

    GetManifestBarcode = ""

    'no barcode
    If IsNull(vInvoiceNo) Then
        Exit Function
    End If
    'bad length
    If Len(vInvoiceNo) <> 12 Then
        Exit Function
    End If
   
    If gstrTemplateId <> gstrTEMPLATEID_SERVICEPART Then
        'not a service part - no check digit - as was before
        GetManifestBarcode = "*" & Left(vInvoiceNo, 8) & Mid(vInvoiceNo, 10, 2) & Format(iPageNo, "00") & "*"
    Else
        'service part
        'calculate check digit
        s = UCase$(Left$(vInvoiceNo, 8)) 'uppercase, first 8 characters only
        For i = 1 To 8
            n = 0 'reset, if no match found
            ch = Mid$(s, i, 1)
            Select Case ch
                Case "0" To "9"
                    n = CInt(ch)
                Case "A" To "Z"
                    n = Asc(ch) - 55
                Case "-": n = 36
                Case ".": n = 37
                Case " ": n = 38
                Case "$": n = 39
                Case "/": n = 40
                Case "+": n = 41
                Case "%": n = 42
            End Select
            nSum = nSum + n
        Next i
       
        nCheck = nSum Mod 43 'check sum
        'now convert check sum back to character
        ch = ""
        Select Case nCheck
            Case 0 To 9
                ch = Chr$(48 + nCheck)
            Case 10 To 35
                ch = Chr$(55 + nCheck)
            Case 36: ch = "-"
            Case 37: ch = "."
            Case 38: ch = "_"
            Case 39: ch = "$"
            Case 40: ch = "/"
            Case 41: ch = "+"
            Case 42: ch = "%"
        End Select
           
        GetManifestBarcode = "*" & s & ch & "*"
           
    End If

End Function