domenica 16 settembre 2007

Verifica di alcune Partite Iva Europee con C# e VB.NET

E' da un pò che faccio collezione di funzioni di verifica di partite iva, ora anche se largamente incompleta metto a disposizione la mia collezione.

Infatti è da parecchio tempo che non aggiungo nuove cose ed inoltre ho bisogno di ottenere dei messaggi di "validazione" degli algoritmi.

Alla collezione mancano ancora alcuni stati.

Mi aspetto una valanga di e-mail!

Alcuni appunti:
E' mostrato anche l'utilizzo di SortedList<Tkey,TValue>

// utilizzo una sortedlist per ordinare gli elementi
SortedList<string,string> sl = new SortedList<string, string>();                  

// aggiunta degli elementi e ordinamento

for (int k = 0; k < s.Length; k++)

       sl.Add(s[k],d[k]);                   

// generazione dati tabella stati
foreach (KeyValuePair<string, string> kvp in sl)

       dsDati.Tables["Stati"].Rows.Add(kvp.Key,kvp.Value);

Sulla classe VatCheck esistono tanti metodi quanti sono gli stati, ciascun metodo assume il nome di "CheckVat" + codice iso

Sul form pricipale (e unico) c'è solo la chiamata ad un metodo "generico" della classe VatCheck

risultatoTextBox.Text = VatCheck.CheckVat(statiComboBox.SelectedValue.ToString(),vatTextBox.Text);

Come si potrà notare vengono passati come argomento il codice dello stato e il campo "Partita iva".
Al suo interno la classe VatCheck richiama il metodo corretto utilizzando la reflection:

public static string CheckVat(string stateID,string vatNumber)

{

       string metodo = "CheckVat" + stateID.ToUpper();

       return (CallMethods(metodo,vatNumber));

}

static string  CallMethods(string pMetodo, string pIva)

{

       try

       {

              VatCheck pTiva = new VatCheck();

              Type Tipo =  pTiva.GetType();

              System.Reflection.MethodInfo metInfo;

              metInfo = Tipo.GetMethod(pMetodo, BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Static | BindingFlags.Instance);

              return (string) metInfo.Invoke(pTiva, new string[] {pIva.ToUpper()});

                   

       }

       catch (Exception ex)

       {

              System.Windows.Forms.MessageBox.Show(ex.Message + Environment.NewLine + ex.StackTrace);

       }           

       return "Errore";                

}


Progetto sviluppato con C#
Progetto sviluppato con VB.NET

Nessun commento: