Domanda Verifica partita iva

olmof

Nuovo utente
20 Maggio 2016
12
1
57
Liguria
2007
0
Mi è stato chiedo una procedura per verificare se la partita iva è esistente, cioè non il solito controllo se la PI è valida ma proprio se è ancora attiva. So che tramit el'agenzia delle entrate è possibile fare una simile verifica, ma fuori dal sito?
Grazie per l'aiuto
 

alfrimpa

VBA Expert
Supermoderatore
Expert
18 Dicembre 2015
19.319
713
66
Napoli
2013
356
Scusa olmof hai postato nella sezione “Visual Basic” ma devi realizzare una procedura con tale linguaggio?

Ma senza interagire con l’Agenzia delle Entrate (sempre se ciò sia possibile) come pensi di poter fare se non hai un database con tutte le PIVA attive?

Puoi spiegare meglio cosa vuoi fare e quale strumento vuoi utilizzare per farlo?
 

ges

Excel/VBA Expert
Amministratore
Expert
21 Giugno 2015
20.197
1.733
Como
2011MAC 2016WIN
413
Ciao a tutti, posto di seguito un codice non mio che avevo conservato nel mio repertorio (se cerchi su internet comunque ci sono tanti esempi)

Codice:
[FONT=Consolas][COLOR=#0433ff]Imports[/COLOR] System[/FONT]
[FONT=Consolas][COLOR=#0433ff]Imports[/COLOR] System.Text[/FONT]
[FONT=Consolas][COLOR=#0433ff]Imports[/COLOR] System.Text.RegularExpressions[/FONT]
[FONT=Consolas][COLOR=#0433ff]Namespace[/COLOR] ProvaModuliVb[/FONT]
[FONT=Consolas]
[/FONT]
[COLOR=#0433FF][FONT=Consolas]PublicClass[COLOR=#33a2bd]PartitaIva[/COLOR][/FONT][/COLOR]
[FONT=Consolas]
[/FONT]
[FONT=Consolas]        [COLOR=#0433ff]Public[/COLOR] [COLOR=#0433ff]Sub[/COLOR] [COLOR=#0433ff]New[/COLOR]()[/FONT]
[FONT=Consolas]        [COLOR=#0433ff]End[/COLOR] [COLOR=#0433ff]Sub[/COLOR][/FONT]
[FONT=Consolas]
[/FONT]
[COLOR=#0433FF][FONT=Consolas]PublicSharedFunction[COLOR=#000000] CheckPartitaIva([/COLOR]ByVal[COLOR=#000000] PIva [/COLOR]AsString[COLOR=#000000]) [/COLOR]AsBoolean[/FONT][/COLOR]
[FONT=Consolas]            [COLOR=#0433ff]Dim[/COLOR] result [COLOR=#0433ff]As[/COLOR] [COLOR=#0433ff]Boolean[/COLOR] = [COLOR=#0433ff]False[/COLOR][/FONT]
[FONT=Consolas]            [COLOR=#0433ff]Const[/COLOR] caratteri [COLOR=#0433ff]As[/COLOR] [COLOR=#0433ff]Integer[/COLOR] = 11[/FONT]
[FONT=Consolas]            [COLOR=#0433ff]Dim[/COLOR] partitaiva [COLOR=#0433ff]As[/COLOR] [COLOR=#0433ff]String[/COLOR] = PIva[/FONT]
[FONT=Consolas]            [COLOR=#0433ff]Dim[/COLOR] pregex [COLOR=#0433ff]As[/COLOR] [COLOR=#33a2bd]Regex[/COLOR] = [COLOR=#0433ff]New[/COLOR] [COLOR=#33a2bd]Regex[/COLOR]([COLOR=#b4261a]"^\d{"[/COLOR] + caratteri.ToString + [COLOR=#b4261a]"}$"[/COLOR])[/FONT]
[FONT=Consolas]            [COLOR=#0433ff]If[/COLOR] partitaiva [COLOR=#0433ff]Is[/COLOR] [COLOR=#0433ff]Nothing[/COLOR] [COLOR=#0433ff]Then[/COLOR][/FONT]
[FONT=Consolas]                [COLOR=#0433ff]Return[/COLOR] result[/FONT]
[FONT=Consolas]            [COLOR=#0433ff]End[/COLOR] [COLOR=#0433ff]If[/COLOR][/FONT]
[FONT=Consolas]            [COLOR=#0433ff]If[/COLOR] [COLOR=#0433ff]Not[/COLOR] (partitaiva.Length = caratteri) [COLOR=#0433ff]Then[/COLOR][/FONT]
[FONT=Consolas]                [COLOR=#0433ff]If[/COLOR] partitaiva.Length < caratteri [COLOR=#0433ff]Then[/COLOR][/FONT]
[FONT=Consolas]                    partitaiva.PadLeft(caratteri, [COLOR=#b4261a]"0"c[/COLOR])[/FONT]
[FONT=Consolas]                [COLOR=#0433ff]Else[/COLOR][/FONT]
[FONT=Consolas]                    partitaiva = partitaiva.Substring(2)[/FONT]
[FONT=Consolas]                [COLOR=#0433ff]End[/COLOR] [COLOR=#0433ff]If[/COLOR][/FONT]
[FONT=Consolas]            [COLOR=#0433ff]End[/COLOR] [COLOR=#0433ff]If[/COLOR][/FONT]
[FONT=Consolas]            [COLOR=#0433ff]Dim[/COLOR] m [COLOR=#0433ff]As[/COLOR] [COLOR=#33a2bd]Match[/COLOR] = pregex.Match(partitaiva)[/FONT]
[FONT=Consolas]            result = m.Success[/FONT]
[FONT=Consolas]            [COLOR=#0433ff]If[/COLOR] result [COLOR=#0433ff]Then[/COLOR][/FONT]
[FONT=Consolas]                result = (([COLOR=#0433ff]Not[/COLOR] ([COLOR=#0433ff]Integer[/COLOR].Parse(partitaiva.Substring(0, 7)) = 0)) [COLOR=#0433ff]AndAlso[/COLOR] ([COLOR=#0433ff]Integer[/COLOR].Parse(partitaiva.Substring(7, 3)) >= 0) [COLOR=#0433ff]AndAlso[/COLOR] ([COLOR=#0433ff]Integer[/COLOR].Parse(partitaiva.Substring(7, 3)) < 201))[/FONT]
[FONT=Consolas]            [COLOR=#0433ff]End[/COLOR] [COLOR=#0433ff]If[/COLOR][/FONT]
[FONT=Consolas]            [COLOR=#0433ff]If[/COLOR] result [COLOR=#0433ff]Then[/COLOR][/FONT]
[FONT=Consolas]                [COLOR=#0433ff]Dim[/COLOR] somma [COLOR=#0433ff]As[/COLOR] [COLOR=#0433ff]Integer[/COLOR] = 0[/FONT]
[FONT=Consolas]                [COLOR=#0433ff]Dim[/COLOR] i [COLOR=#0433ff]As[/COLOR] [COLOR=#0433ff]Integer[/COLOR] = 0[/FONT]
[FONT=Consolas]                [COLOR=#0433ff]For[/COLOR] i = 0 [COLOR=#0433ff]To[/COLOR] caratteri - 2[/FONT]
[FONT=Consolas]                    [COLOR=#0433ff]Dim[/COLOR] j [COLOR=#0433ff]As[/COLOR] [COLOR=#0433ff]Integer[/COLOR] = [COLOR=#0433ff]Integer[/COLOR].Parse(partitaiva.Substring(i, 1))[/FONT]
[FONT=Consolas]                    [COLOR=#0433ff]If[/COLOR] (i + 1) [COLOR=#0433ff]Mod[/COLOR] 2 = 0 [COLOR=#0433ff]Then[/COLOR][/FONT]
[FONT=Consolas]                        j *= 2[/FONT]
[FONT=Consolas]                        [COLOR=#0433ff]Dim[/COLOR] c [COLOR=#0433ff]As[/COLOR] [COLOR=#0433ff]Char[/COLOR]() = j.ToString([COLOR=#b4261a]"00"[/COLOR]).ToCharArray[/FONT]
[FONT=Consolas]                        somma += [COLOR=#0433ff]Integer[/COLOR].Parse(c(0).ToString)[/FONT]
[FONT=Consolas]                        somma += [COLOR=#0433ff]Integer[/COLOR].Parse(c(1).ToString)[/FONT]
[FONT=Consolas]                    [COLOR=#0433ff]Else[/COLOR][/FONT]
[FONT=Consolas]                        somma += j[/FONT]
[FONT=Consolas]                    [COLOR=#0433ff]End[/COLOR] [COLOR=#0433ff]If[/COLOR][/FONT]
[FONT=Consolas]                [COLOR=#0433ff]Next[/COLOR][/FONT]
[FONT=Consolas]                [COLOR=#0433ff]If[/COLOR] (somma.ToString([COLOR=#b4261a]"00"[/COLOR]).Substring(1, 1) = [COLOR=#b4261a]"0"[/COLOR]) [COLOR=#0433ff]AndAlso[/COLOR] ([COLOR=#0433ff]Not[/COLOR] (partitaiva.Substring(10, 1) = [COLOR=#b4261a]"0"[/COLOR])) [COLOR=#0433ff]Then[/COLOR][/FONT]
[FONT=Consolas]                    result = [COLOR=#0433ff]False[/COLOR][/FONT]
[FONT=Consolas]                [COLOR=#0433ff]End[/COLOR] [COLOR=#0433ff]If[/COLOR][/FONT]
[FONT=Consolas]                somma = [COLOR=#0433ff]Integer[/COLOR].Parse(partitaiva.Substring(10, 1)) + [COLOR=#0433ff]Integer[/COLOR].Parse(somma.ToString([COLOR=#b4261a]"00"[/COLOR]).Substring(1, 1))[/FONT]
[FONT=Consolas]                [COLOR=#0433ff]If[/COLOR] result [COLOR=#0433ff]Then[/COLOR][/FONT]
[FONT=Consolas]                    result = (somma.ToString([COLOR=#b4261a]"00"[/COLOR]).Substring(1, 1) = [COLOR=#b4261a]"0"[/COLOR])[/FONT]
[FONT=Consolas]                [COLOR=#0433ff]End[/COLOR] [COLOR=#0433ff]If[/COLOR][/FONT]
[FONT=Consolas]            [COLOR=#0433ff]End[/COLOR] [COLOR=#0433ff]If[/COLOR][/FONT]
[FONT=Consolas]            [COLOR=#0433ff]Return[/COLOR] result[/FONT]
[COLOR=#0433FF][FONT=Consolas]EndFunction[/FONT][/COLOR]
[COLOR=#0433FF][FONT=Consolas]EndClass[/FONT][/COLOR]
[COLOR=#0433FF][FONT=Consolas]EndNamespace[/FONT][/COLOR]
 

Powerwin

VBA Expert
Expert
17 Marzo 2016
4.291
83
vicino a Milano
2019
80
Ciao Ges cappello_saluta temo che il tuo codice non faccia la verifica se la partita iva è attiva...ma solo se è valida, ma magari mi sto sbagliando
 

alfrimpa

VBA Expert
Supermoderatore
Expert
18 Dicembre 2015
19.319
713
66
Napoli
2013
356
Mi spiegate come si fa a verificare che una PIVA, ancorchè formalmente corretta, sia attiva?
 

ges

Excel/VBA Expert
Amministratore
Expert
21 Giugno 2015
20.197
1.733
Como
2011MAC 2016WIN
413
Ciao, si avete ragione, verifica se è corretta .. se è attiva impossibile!
 

rollis13

Utente assiduo
15 Novembre 2015
1.571
63
Cordenons
Office 2016 x64
79

olmof

Nuovo utente
20 Maggio 2016
12
1
57
Liguria
2007
0
Scusa, non ho indicato il lunguaggio in quanto, per il momento non mi sembrava importante (comunque penserei a VB 2010).
E' proprio perchè non ho un DB che volevo sapere se qualcuno è a conoscenza di un servizio da poter rchiamare all'interno della procedura.
Mi spiego meglio così chiarisco anche per altri.
Normalmente quando viene iinserita una PI tutti facciamo un controllo se è valida (come suggeriva GES), io volevo spingermi oltre, cio verificare, appunto, se tale partita iva è ancora valida oppure è stata cessata. Attulamente questo è consultabil on-line su diversi siti (come suggerito da rollis13), ma non mi risulta siano interrogabili direttamente dall'esterno.
Per esempio, mi sembra che il sito per le PI estere (VIES) sia in qualche modo interrogabile (almeno questo è quanto avevo visto in rete).
Speravo di non essere il primo ad imbattermi in una tale esigenza per questo mi sono rivolto a voi.
Grazie a tutti
 

dracoscrigno

CioccaPiatti & VBA Expert
Expert
1 Maggio 2016
3.904
63
office pro 2010
49
Vedo solo ora questo topic.

Sperando di essere ancora utile:

Le strade percorribili sono di due tipi delle quali una un pò meno professionale e non del tutto lecita a seconda dei casi di utilizzo.

La prima è quella di controllare sul sito che fornisce il sevizio se vengon rese disponibili le API, quindi le interfacce utilizzabili nei propri programmi per poter svolgere tale servizio.
L altra strada è quella di implementare un programma che non faccia altro che accedere alle pagine del sito come farebbe l umano.
Quindi accede alla pagina con il servizio
Riempie i vari campi che deve compilare per effettuare la richiesta
Preme il pulsante di invio richiesta
Legge il risultato nella pagina di risposta.
Questo secondo metodo può essere implementato in vari modi a seconda di come è costruita la pagina del sito in questione.
 

acia60

Nuovo utente
8 Giugno 2019
2
1
OFFICE365 e pre
0
purtroppo ad oggi non è possibile fare quella verifica da procedura. l'unica possibilità è reindirizzare il programma sulla pagina specifica dell'Agenzia delle entrate in modo che l'utente verifichi manualmente, e senza possibilità di avere un codice deli esito da ritornate al programma
 

Sostieni ForumExcel

Aiutaci a sostenere le spese e a mantenere online la community attraverso una libera donazione!