Vai al contenuto

Campi obbligatori e validazioni regex (app 20.07.20 o successive)

Dalle versioni app di fine luglio è ora possibile introdurre dei controlli regex sulla validità dei campi di un soggetto. Prima era già possibile impostare quali campi fossero obbligatori.

La vecchia opzione prefisso CLIENTE_CAMPO_OBBLIGATO_<codicecampo> impostata a 1 nei parametri rende obbligatorio l’inserimento di un valore qualsiasi.

Può essere consigliabile attivare l’opzione SYNC_SALTA_CONTROLLO_SOGGETTI con valore 1 per far sì che i clienti provenienti da gestionale non vengano sottoposti a questi controlli. Attivando ORDINE_CONTROLLA_SEMPRE_CLIENTE con valore 1 si può obbligare l’utente a completare un soggetto proveniente da gestionale prima di poter impostare un ordine come completato.

  • CLIENTE_CAMPO_OBBLIGATO_CLIENTE_CAMPO1
  • CLIENTE_CAMPO_OBBLIGATO_CLIENTE_CAMPO2
  • CLIENTE_CAMPO_OBBLIGATO_CLIENTE_CAMPO3
  • CLIENTE_CAMPO_OBBLIGATO_CLIENTI_CAP
  • CLIENTE_CAMPO_OBBLIGATO_CLIENTI_CELLULARE
  • CLIENTE_CAMPO_OBBLIGATO_CLIENTI_CODICE_FATTURA
  • CLIENTE_CAMPO_OBBLIGATO_CLIENTI_CODICEFISCALE
  • CLIENTE_CAMPO_OBBLIGATO_CLIENTI_COMUNE
  • CLIENTE_CAMPO_OBBLIGATO_CLIENTI_DENOMINAZIONE
  • CLIENTE_CAMPO_OBBLIGATO_CLIENTI_FAX
  • CLIENTE_CAMPO_OBBLIGATO_CLIENTI_GIORNO_CHIUSURA
  • CLIENTE_CAMPO_OBBLIGATO_CLIENTI_INDIRIZZO
  • CLIENTE_CAMPO_OBBLIGATO_LISTINO
  • CLIENTE_CAMPO_OBBLIGATO_CLIENTI_MAIL
  • CLIENTE_CAMPO_OBBLIGATO_CLIENTI_NAZIONE
  • CLIENTE_CAMPO_OBBLIGATO_CLIENTI_PAGAMENTO
  • CLIENTE_CAMPO_OBBLIGATO_CLIENTI_PARTITAIVA
  • CLIENTE_CAMPO_OBBLIGATO_PEC
  • CLIENTE_CAMPO_OBBLIGATO_CLIENTI_PROVINCIA
  • CLIENTE_CAMPO_OBBLIGATO_CLIENTI_TELEFONO
  • CLIENTE_CAMPO_OBBLIGATO_CLIENTI_IBAN
  • CLIENTE_CAMPO_OBBLIGATO_CLIENTI_BANCA

Invece ora è possibile impostare un controllo più preciso con le regex

Campi obbligatori alternativi

Alcuni parametri permettono di verificare alternativamente la presenza di campi diversi e permettere il salvataggio se uno almeno dei campi sia valorizzato:

  • CLIENTE_CAMPI_OBBLIGATI_CFPI per verificare la presenza di almeno codice fiscale e/o partita iva
  • CLIENTE_CAMPI_OBBLIGATI_FATTURA per verificare la presenza di almeno codice fatturazione SDI e/o PEC

Validazione codice SDI

Se ad esempio voglio che il codice destinatario per la fattura elettronica sia vuoto oppure di 7 caratteri posso usare la seguente regex:

^$|^([\w\d]{7})$

In questo caso userò il prefisso CLIENTE_REGEX_<codicecampo>, in particolare il nome completo del parametro è

CLIENTE_REGEX_CLIENTI_CODICE_FATTURA

Se voglio anche dare un messaggio personalizzato che spieghi il motivo di scarto, userò il parametro CLIENTE_REGEX_MOTIVO_CLIENTI_CODICE_FATTURA a cui posso assegnare la frase che verrà mostrata all’utente.

Validazione partita IVA

Un altro esempio di validazione complessa per la partita IVA è questa regex

^$|^([Ii][Tt])?(\d{11})$|^(?![iI][tT])([a-zA-Z]{2,3})(\d+)$

Che permette stringa vuota (^$) oppure IT scritto maiuscolo o minuscolo seguito per forza da 11 numeri (^([Ii][Tt])?(\d{11})$) oppure un codice ISO di 2 o 3 lettere purché non sia “IT” seguito da una serie indefinita di numeri (^(?![iI][tT])([a-zA-Z]{2,3})(\d+)$)

Verifica univocità partita IVA da gestionale

Oltre alla validazione, è possibile confrontare la partita IVA immessa tramite il parametro CLIENTE_PARTITA_IVA_UNIVOCA da impostare con il valore 1.

Questo parametro da solo fa sì che al salvataggio di un cliente nuovo venga controllato se fra tutti i clienti già presenti in app non sia già presente la stessa partita IVA.

Inoltre, se è attiva la funzione TABELLE_GENERICHE_ABILITATE con valore 1, l’app verifica anche l’esistenza di una tabella generica con codice “pi” in cui estrarre da gestionale l’elenco completo delle partite IVA già gestite. In questo modo anche se il cliente non è presente in app, è possibile bloccare comunque la creazione se la partita IVA appartiene ad un cliente direzionale o di altri agenti.

Validazione codice fiscale

Un esempio di validazione codice fiscale può prevedere stringa vuota, oppure una partita iva solo numerica da 11 numeri oppure uno schema tipo AAAAAA00A00A000A con una regex del genere:

^$|^(\d{11})$|^([A-Z]{6})(\d{2})([A-Z]{1})(\d{2})([A-Z]{1})(\d{3})([A-Z]{1})$

Validazione email o PEC

Un esempio di validazione email/PEC che permette un valore vuoto oppure una stringa che contenga esattamente una @ e si concluda con un nome di dominio valido potrebbe essere questa

^$|^([^ @]+)@([^ @]+)\.([a-zA-Z]{2,})$

Se uso una regex e non ci aggiungo la possibilità di stringa vuota ^$ posso evitare di usare il vecchio parametro CLIENTE_CAMPO_OBBLIGATO_ in quanto questo controllo viene incorporato dallo scopo della regex.

Validazione IBAN

Un esempio di validazione IBAN è questo che permette stringa vuota oppure 27 caratteri

^$|^([a-zA-Z0-9]{27})$

oppure un’espressione che copre i vari formati Europei di IBAN

^(?:(?:IT|SM)\d{2}[A-Z]\d{22}|CY\d{2}[A-Z]\d{23}|NL\d{2}[A-Z]{4}\d{10}|LV\d{2}[A-Z]{4}\d{13}|(?:BG|BH|GB|IE)\d{2}[A-Z]{4}\d{14}|GI\d{2}[A-Z]{4}\d{15}|RO\d{2}[A-Z]{4}\d{16}|KW\d{2}[A-Z]{4}\d{22}|MT\d{2}[A-Z]{4}\d{23}|NO\d{13}|(?:DK|FI|GL|FO)\d{16}|MK\d{17}|(?:AT|EE|KZ|LU|XK)\d{18}|(?:BA|HR|LI|CH|CR)\d{19}|(?:GE|DE|LT|ME|RS)\d{20}|IL\d{21}|(?:AD|CZ|ES|MD|SA)\d{22}|PT\d{23}|(?:BE|IS)\d{24}|(?:FR|MR|MC)\d{25}|(?:AL|DO|LB|PL)\d{26}|(?:AZ|HU)\d{27}|(?:GR|MU)\d{28})$

Elenco parametri per assegnazione regex

La lista dei parametri per il controllo regex è questa:

  • CLIENTE_REGEX_CLIENTE_CAMPO1
  • CLIENTE_REGEX_CLIENTE_CAMPO2
  • CLIENTE_REGEX_CLIENTE_CAMPO3
  • CLIENTE_REGEX_CLIENTI_CAP (esempio ^$|^\d{5}$ se anche il valore vuoto è permesso, oppure ^\d{5}$ per accettare solo cinque numeri)
  • CLIENTE_REGEX_CLIENTI_CELLULARE
  • CLIENTE_REGEX_CLIENTI_CODICE_FATTURA (esempio ^$|^([a-zA-Z0-9]{6,7})$ per accettare codici di 6 o 7 cifre anche per enti, oppure ^$|^([a-zA-Z0-9]{7})$ per soli codici di 7 cifre per aziende)
  • CLIENTE_REGEX_CLIENTI_CODICEFISCALE (esempio ^$|^[0-9]{11}$|^[a-zA-Z]{6}[0-9]{2}[a-zA-Z]{1}[0-9]{2}[a-zA-Z]{1}[0-9]{3}[a-zA-Z]{1}$ che accetta stringa vuota, codice solo numerico da 11 caratteri per enti e società oppure codice fiscale italiano)
  • CLIENTE_REGEX_CLIENTI_COMUNE
  • CLIENTE_REGEX_CLIENTI_DENOMINAZIONE
  • CLIENTE_REGEX_CLIENTI_GIORNO_CHIUSURA
  • CLIENTE_REGEX_CLIENTI_INDIRIZZO
  • CLIENTE_REGEX_LISTINO
  • CLIENTE_REGEX_CLIENTI_MAIL (esempio ^$|^([^ @]+)@([^ @]+).([a-zA-Z]{2,})$ che permette anche stringa vuota oppure ^([^ @]+)@([^ @]+).([a-zA-z]{2,})$ per accettare solo un indirizzo email valido)
  • CLIENTE_REGEX_CLIENTI_NAZIONE
  • CLIENTE_REGEX_CLIENTI_PAGAMENTO
  • CLIENTE_REGEX_CLIENTI_PARTITAIVA (esempio ^$|^([Ii][Tt])?(\d{11})$|^(?![iI][tT])([a-zA-Z]{2,3})(\d+)$ come da esempio precedente per partite IVA italiane o estere, oppure ^$|^(\d{11})$ per accettare solo stringa vuota o partita IVA italiana da 11 caratteri senza prefisso ISO)
  • CLIENTE_REGEX_PEC
  • CLIENTE_REGEX_CLIENTI_PROVINCIA (esempio ^$|^[a-zA-Z]{2}$ per accettare stringa vuota o due caratteri letterali)
  • CLIENTE_REGEX_CLIENTI_TELEFONO
  • CLIENTE_REGEX_CLIENTI_IBAN (esempio ^$|^([a-zA-Z0-9]{27})$ per accettare stringa vuota o 27 fra lettere e numeri)
  • CLIENTE_REGEX_CLIENTI_BANCA

Nascondi campi in anagrafica cliente

Nel caso alcuni campi non siano necessari si possono nascondere con i parametri elencati:

  • CLIENTE_NASCONDI_banca
  • CLIENTE_NASCONDI_chiusura
  • CLIENTE_NASCONDI_codicefiscale
  • CLIENTE_NASCONDI_fax
  • CLIENTE_NASCONDI_iban
  • CLIENTE_NASCONDI_nazione
  • CLIENTE_NASCONDI_pagamento
  • CLIENTE_NASCONDI_pec
  • CLIENTE_NASCONDI_sdi
  • CLIENTE_NASCONDI_sconto
  • CLIENTE_NASCONDI_telefono

Lunghezza massima campi

Per impostare un numero massimo di caratteri a uno o più campi occorre usare:

  • CLIENTE_LUNGHEZZA_banca
  • CLIENTE_LUNGHEZZA_cap
  • CLIENTE_LUNGHEZZA_codicefiscale
  • CLIENTE_LUNGHEZZA_comune
  • CLIENTE_LUNGHEZZA_chiusura
  • CLIENTE_LUNGHEZZA_fax
  • CLIENTE_LUNGHEZZA_iban
  • CLIENTE_LUNGHEZZA_indirizzo
  • CLIENTE_LUNGHEZZA_mail
  • CLIENTE_LUNGHEZZA_nazione
  • CLIENTE_LUNGHEZZA_note
  • CLIENTE_LUNGHEZZA_pagamento
  • CLIENTE_LUNGHEZZA_pec
  • CLIENTE_LUNGHEZZA_provincia
  • CLIENTE_LUNGHEZZA_sconto
  • CLIENTE_LUNGHEZZA_sdi
  • CLIENTE_LUNGHEZZA_telefono

Imposta valore campo tutto maiuscolo

Nel caso si voglia che i valori immessi vengano convertiti sempre in maiuscolo occorre impostare a 1 uno o più dei seguenti parametri:

  • CLIENTE_MAIUSCOLO_CLIENTE_CAMPO1
  • CLIENTE_MAIUSCOLO_CLIENTE_CAMPO2
  • CLIENTE_MAIUSCOLO_CLIENTE_CAMPO3
  • CLIENTE_MAIUSCOLO_CLIENTI_CAP
  • CLIENTE_MAIUSCOLO_CLIENTI_CELLULARE
  • CLIENTE_MAIUSCOLO_CLIENTI_CODICE_FATTURA
  • CLIENTE_MAIUSCOLO_CLIENTI_CODICEFISCALE
  • CLIENTE_MAIUSCOLO_CLIENTI_COMUNE
  • CLIENTE_MAIUSCOLO_CLIENTI_DENOMINAZIONE
  • CLIENTE_MAIUSCOLO_CLIENTI_FAX
  • CLIENTE_MAIUSCOLO_CLIENTI_GIORNO_CHIUSURA
  • CLIENTE_MAIUSCOLO_CLIENTI_INDIRIZZO
  • CLIENTE_MAIUSCOLO_CLIENTI_MAIL
  • CLIENTE_MAIUSCOLO_CLIENTI_NAZIONE
  • CLIENTE_MAIUSCOLO_CLIENTI_PAGAMENTO
  • CLIENTE_MAIUSCOLO_CLIENTI_PARTITAIVA
  • CLIENTE_MAIUSCOLO_PEC
  • CLIENTE_MAIUSCOLO_CLIENTI_PROVINCIA
  • CLIENTE_MAIUSCOLO_CLIENTI_TELEFONO
  • CLIENTE_MAIUSCOLO_CLIENTI_IBAN
  • CLIENTE_MAIUSCOLO_CLIENTI_BANCA