Questo sito utilizza cookie per le proprie funzionalità e per inviarti pubblicità e servizi in linea con le tue preferenze. Chiudendo questo banner, scorrendo questa pagina o cliccando qualunque suo elemento acconsenti all’uso dei cookie.

Accedendo al link http://www.odoo-italia.org/index.php/home/cookie-policy puoi leggere in dettaglio le modalità di trattamento dei cookie da parte dell'Associazione Odoo Italia.

Benvenuto, Ospite
Nome utente: Password: Ricordami
Ricordati di dichiarare la versione di Odoo a cui riferisce la domanda!
Per favore, non inserire richieste per moduli della 9.0 e successive in quanto il supporto è a pagamento.
Queste richieste devono essere inserite nella sezione dedicata ai partner.

ARGOMENTO: Validazione CF

Validazione CF 8 Anni 6 Mesi fa #2653

  • gigattari
  • Avatar di gigattari
  • Offline
  • Fresh Boarder
  • Messaggi: 2
  • Karma: 0
Salve a tutti, mi presento con un contributo che spero possa essere utile.

Ho preso spunto da questo sito www.icosaedro.it/cf-pi/index.html per implementare una routine di controllo che eviti le regular expressions e che funzioni senza conoscere nessun altro dato eccetto il codice.
def check_fiscode(self, cr, uid, ids, context={}):
        
        for partner in self.browse(cr, uid, ids):
            if not partner.fiscode:
                continue
                
            if len(partner.fiscode) != 16:
                return False
                
            cf = partner.fiscode.upper()
            
            #ascii  48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 ... etc
            #        0  1  2  3  4  5  6  7  8  9                       A  B  C  D  E  F  G  H  I  J  K  L  M  N  O  P  Q  R  S  T  U  V  W  X  Y  Z
            pesi = [ 1, 0, 5, 7, 9,13,15,17,19,21, 0, 0, 0, 0, 0, 0, 0, 1, 0, 5, 7, 9,13,15,17,19,21, 2, 4,18,20,11, 3, 6, 8,12,14,16,10,22,25,24,23]
            
            somma = pesi[(ord(cf[0])-48)] + pesi[(ord(cf[2])-48)] + \
            pesi[(ord(cf[4])-48)] + pesi[(ord(cf[6])-48)] + \
            pesi[(ord(cf[8])-48)] + pesi[(ord(cf[10])-48)] + \
            pesi[(ord(cf[12])-48)] + pesi[(ord(cf[14])-48)]
                    
            #ascii  48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 ... etc
            #        0  1  2  3  4  5  6  7  8  9                       A  B  C  D  E  F  G  H  I  J  K  L  M  N  O  P  Q  R  S  T  U  V  W  X  Y  Z
            pesi = [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25]
                    
            somma = somma + pesi[(ord(cf[1])-48)] + \
            pesi[(ord(cf[3])-48)] + pesi[(ord(cf[5])-48)] + \
            pesi[(ord(cf[7])-48)] + pesi[(ord(cf[9])-48)] + \
            pesi[(ord(cf[11])-48)] + pesi[(ord(cf[13])-48)]
            
            if cf[15] != chr((somma % 26) + 65):
                return False

        return True

Spero di poter contribuire molto di più in futuro e per cose più importanti! Per ora sono in fase studio, per cui avrete da me molte più domande che risposte :lol:
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

Re:Validazione CF 8 Anni 6 Mesi fa #2654

  • Dr.Dran
  • Avatar di Dr.Dran
  • Offline
  • Gold Boarder
  • Messaggi: 187
  • Karma: 0
Grandioso!

Buttata su e funaziona! :)

Grazie mille!
Franco Tampieri:
Ultima modifica: 8 Anni 6 Mesi fa da Dr.Dran.
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

Re:Validazione CF 8 Anni 6 Mesi fa #2656

  • enlightx
  • Avatar di enlightx
  • Online
  • Platinum Boarder
  • Messaggi: 6064
  • Ringraziamenti ricevuti 638
  • Karma: 85
Se non erro, in questo momento in l10n_it il check del codice fiscale era stato pure disabilitato.

La validazione del codice fiscale varia dal tipo giuridico del partner, quindi sarebbe necessario specificare se si tratta di una persona fisica o meno prima ancora di chiedere il codice fiscale.

E non si può nemmeno mettere il flag, come fanno tanti gestionali, che distingue tra persona fisica e persona giuridica, perchè non è comunque esaustivo.
Davide Corio
Odoo Solution Architect
email: Questo indirizzo email è protetto dagli spambots. È necessario abilitare JavaScript per vederlo.
web: www.davidecorio.com
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

Re:Validazione CF 8 Anni 6 Mesi fa #2658

  • Dr.Dran
  • Avatar di Dr.Dran
  • Offline
  • Gold Boarder
  • Messaggi: 187
  • Karma: 0
Si, i sembra giusto, comunque sia si potrebbe creare una vista ad-hoc in modo tale da poter discriminare il controllo sul campo a seconda se il flag (persona fisica o giuridica) è settato, visto che:

Per le persona giuridica fino ad un certo periodo il codice fiscale era rappresentato da un numero simile alla partita IVA ma non uguale. Solo recentemente si è uniformato il tutto e quindi i codice fiscale combacia con la P.IVA

Secondo me a giudicare anche da questa presentazione sarebbe facile rappresentare la cosa.
Cosa ne pensate?
Franco Tampieri:
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

Re:Validazione CF 8 Anni 6 Mesi fa #2660

  • gigattari
  • Avatar di gigattari
  • Offline
  • Fresh Boarder
  • Messaggi: 2
  • Karma: 0
Io credo che vada bene pensare ad alto livello alle distinzioni giuridiche, ma se consideriamo il campo in se, ad un livello più basso, si può fare un ragionamento di questo tipo:

Si prevede che il campo sia destinato a contenere un dato di tipo X o Y o mettiamo anche Z. L'insieme è comunque limitato.

Usiamo perciò le regular expression in prima battuta per individuare la classe a cui appartiene ciò che è stato inserito: X, Y, Z, oppure se nessuno dei tre si ritorna l'errore.

A questo punto scatta il controllo, se abbiamo riconosciuto un codice fiscale controlliamo il CF, se è una partita IVA controllo partita IVA, se fosse un altra cosa un controllo ad hoc per lei.

A me come discorso fila, e a voi? :huh:
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

Re:Validazione CF 8 Anni 6 Mesi fa #2661

  • Dr.Dran
  • Avatar di Dr.Dran
  • Offline
  • Gold Boarder
  • Messaggi: 187
  • Karma: 0
Beh si visto sotto questo aspetto fila anche per me.
Franco Tampieri:
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.
Tempo creazione pagina: 0.143 secondi

Odoo Italia Associazione - C.F: 94200470485 - Sede: Viale dei Cadorna, 83 - Firenze - Italy

Protected by R Antispam