Versione VB.NET del controllo formale partita iva

Alcuni mi hanno richiesto la versione VB.NET del controllo formale correttezza partita iva.

Questo dovrebbe funzionare allo stesso modo dell'analogo in C#.

Ringrazio fin d'ora quanti mi vorranno segnalare eventuali problemi.

Imports System
Imports System.Text
Imports System.Text.RegularExpressions
Namespace ProvaModuliVb

 Public Class PartitaIva

  Public Sub New()
  End Sub

  Public Shared Function CheckPartitaIva(ByVal PIva As String) As Boolean
   Dim result As Boolean = False
   Const caratteri As Integer = 11
   Const codfisc As Integer = 16
   Dim partitaiva As String = PIva
   Dim pregex As Regex = New Regex("^\d{" + caratteri.ToString + "}$")
   If partitaiva Is Nothing Then
    Return result
   End If
   'If partitaiva.Length = codfisc Then
   ' Return CodiceFiscale.CheckCodiceFiscale(PIva)
   'End If
   If Not (partitaiva.Length = caratteri) Then
    If partitaiva.Length < caratteri Then
     partitaiva.PadLeft(caratteri, "0"C)
    Else
     partitaiva = partitaiva.Substring(2)
    End If
   End If
   Dim m As Match = pregex.Match(partitaiva)
   result = m.Success
   If result Then
    result = ((Not (Integer.Parse(partitaiva.Substring(0, 7)) = 0)) AndAlso (Integer.Parse(partitaiva.Substring(7, 3)) >= 0) AndAlso (Integer.Parse(partitaiva.Substring(7, 3)) < 201))
   End If
   If result Then
    Dim somma As Integer = 0
    Dim i As Integer = 0
    For i = 0 To caratteri - 2
     Dim j As Integer = Integer.Parse(partitaiva.Substring(i, 1))
     If (i + 1) Mod 2 = 0 Then
      j *= 2
      Dim c As Char() = j.ToString("00").ToCharArray
      somma += Integer.Parse(c(0).ToString)
      somma += Integer.Parse(c(1).ToString)
     Else
      somma += j
     End If
    Next
    If (somma.ToString("00").Substring(1, 1) = "0") AndAlso (Not (partitaiva.Substring(10, 1) = "0")) Then
     result = False
    End If
    somma = Integer.Parse(partitaiva.Substring(10, 1)) + Integer.Parse(somma.ToString("00").Substring(1, 1))
    If result Then
     result = (somma.ToString("00").Substring(1, 1) = "0")
    End If
   End If
   Return result
  End Function
 End Class
End Namespace

 

Print | posted on mercoledì 30 marzo 2005 16:06

Feedback

# re: Versione VB.NET del controllo formale partita iva

Left by Alessandro Facchini at 30/03/2005 15:39
Gravatar Ciao

devi mettere
For i = 0 To caratteri - 2
altrimenti non va

Ciao

Alessandro Facchini
alfacchini@tin.it

# re: Versione VB.NET del controllo formale partita iva

Left by geprofimmsrl at 22/11/2006 22:25
Gravatar controllo

# Partita IVA | hilpers

Left by Pingback/TrackBack at 23/01/2009 08:24
Gravatar Partita IVA | hilpers

Your comment:





 
Please add 2 and 8 and type the answer here:

Copyright © Luciano Bastianello

Design by Bartosz Brzezinski

Design by Phil Haack Based On A Design By Bartosz Brzezinski