Può succedere che nei siti web sviluppati in WooCommerce, soprattutto quelli in cui si vende anche in Italia, sia necessaria la compilazione del campo Codice Fiscale e Partita Iva, per esempio per emettere successivamente una fattura.
WooCommerce di default non possiede questi due campi però è possibile attraverso delle funzioni aggiungere dei campi come ho spiegato qui.
Per chi non ha dimestichezza con il codice ho sviluppato un plugin che potete scaricare gratuitamente cliccando sul link in alto all’articolo.
Invece per i più audaci, lascio il codice completo 🙂
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 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 |
//creo il campo codice fiscale add_filter( 'woocommerce_checkout_fields' , 'codice_fiscale' ); function codice_fiscale( $fields ) { $fields['billing']['codice_fiscale'] = array( 'label' => __('Codice Fiscale', 'woocommerce'), 'placeholder' => _x('Codice Fiscale', 'placeholder', 'woocommerce'), 'required' => true, 'class' => array('form-row-last'), 'clear' => true ); return $fields; } add_action( 'woocommerce_checkout_update_order_meta', 'codice_fiscale_order_meta' ); function codice_fiscale_order_meta( $order_id ) { if ( ! empty( $_POST['codice_fiscale'] ) ) { update_post_meta( $order_id, 'Codice Fiscale', sanitize_text_field( $_POST['codice_fiscale'] ) ); } } //inserisco il codice fiscale nel back end add_action( 'woocommerce_admin_order_data_after_billing_address', 'codice_fiscale_order_meta_admin', 10, 1 ); function codice_fiscale_order_meta_admin($order){ echo '<p><strong>'.__('Codice Fiscale').':</strong> ' . get_post_meta( $order->id, 'Codice Fiscale', true ) . '</p>'; } //inserisco il codice fiscale nella mail dell'ordine add_filter('woocommerce_email_order_meta_keys', 'my_custom_fiscale_order_meta_keys'); function my_custom_fiscale_order_meta_keys( $keys ) { $keys[] = 'Codice Fiscale'; return $keys; } //controllo che il codice fiscale sia compilato add_action('woocommerce_checkout_process', 'required_cf_checkout_field_process'); function required_cf_checkout_field_process() { if ( ! $_POST['codice_fiscale'] ) wc_add_notice( __( 'Compila il campo Codice Fiscale .' ), 'error' ); } //creo il campo partita iva add_filter( 'woocommerce_checkout_fields' , 'partita_iva' ); function partita_iva( $fields ) { $fields['billing']['partita_iva'] = array( 'label' => __('Partita Iva', 'woocommerce'), 'placeholder' => _x('Partita Iva', 'placeholder', 'woocommerce'), 'required' => true, 'class' => array('form-row-last'), 'clear' => true ); return $fields; } add_action( 'woocommerce_checkout_update_order_meta', 'partita_iva_order_meta' ); function partita_iva_order_meta( $order_id ) { if ( ! empty( $_POST['partita_iva'] ) ) { update_post_meta( $order_id, 'Partita Iva', sanitize_text_field( $_POST['partita_iva'] ) ); } } //inserisco il partita iva nel back end add_action( 'woocommerce_admin_order_data_after_billing_address', 'partita_iva_order_meta_admin', 10, 1 ); function partita_iva_order_meta_admin($order){ echo '<p><strong>'.__('Partita Iva').':</strong> ' . get_post_meta( $order->id, 'Partita Iva', true ) . '</p>'; } //inserisco il partita iva nella mail dell'ordine add_filter('woocommerce_email_order_meta_keys', 'my_custom_partita_iva_order_meta_keys'); function my_custom_partita_iva_order_meta_keys( $keys ) { $keys[] = 'Partita Iva'; return $keys; } //controllo che il partita iva sia compilato add_action('woocommerce_checkout_process', 'required_pi_checkout_field_process'); function required_pi_checkout_field_process() { if ( ! $_POST['partita_iva'] ) wc_add_notice( __( 'Compila il campo Partita Iva .' ), 'error' ); } |
Programmatore WordPress Esperto WooCommerce
Sono l’autore di questo blog con tanti trucchi e guide su WordPress e WooCommerce.
ciao!
utilizzando il plugin se non volessi che i campi partita iva e codice fiscale siano obbligatori come faccio??
Ciao Giulia,
nell’array trovi l’argomento “required” se ha valore “true” il campo è obbligatorio, se lo metti a “false” non è obbligatorio.
Ciao Alessio, come indicato modificato il campo required ma continuo ad avere richiesta di inserimento obbligatorio da front office
Ciao Ciro, togli :
//controllo che il codice fiscale sia compilato
add_action(‘woocommerce_checkout_process’, ‘required_cf_checkout_field_process’);
function required_cf_checkout_field_process() {
if ( ! $_POST[‘codice_fiscale’] )
wc_add_notice( __( ‘Compila il campo Codice Fiscale .’ ), ‘error’ );
}
Ciao Alessio, ottimi articoli per prendere spunti e soluzioni.
ho provato ad inserire il plugin in questione e mettendo il “false” il campo partita iva ( lo voglio visualizzare ma non renderlo obbligatorio) l’asterisco è sparito ma se continuo con l’ordine mi da errore riportando “Compila il campo Partita Iva” .
come faccio? grazie in anticipo.
Luca
Ciao Luca,
i codici li commento di proposito, basta leggere..
Rimuovi questa stringa :
//controllo che il partita iva sia compilato
add_action(‘woocommerce_checkout_process’, ‘required_pi_checkout_field_process’);
function required_pi_checkout_field_process() {
if ( ! $_POST['partita_iva'] )
wc_add_notice( __( 'Compila il campo Partita Iva .' ), 'error' );
}
Grazie mille, scusa non avevo intuito che bisognava cancellare la stringa. grazie ancora
ciao
ho provato il plug in ma come faccio ad inserire i dati nella fattura?
C’è un plug in con cui si integra ? io per esempio sto usando WooCommerce PDF Invoices & Packing Slips.
Grazie
Ciao Pasquale, va modificato il plugin che utilizzi per la fatturazione.
Ciao Alessio, ti ringrazio per questo esempio di codice che mi ha permesso di inserire i campi senza aggiungere ulteriori plugin (cerco sempre di limitare il più possibile i plugin installati su WP).
Prendendo spunto dal tuo codice ho aggiunto una funzione per creare un campo legato al consenso privacy: https://codeshare.io/2KPEw8
Inoltre con una modifica alla funzione di controllo del codice fiscale (https://codeshare.io/5em6J9) ed aggiungendo le funzioni di validazione di Manuel Marangoni (http://www.manuelmarangoni.it/sir-bit/705/php-controllare-le-variabili-nei-form-codice-fiscale-partita-iva-email-e-prezzo/) ho aggiunto una validazione “base” del codice fiscale (lunghezza, carattere di controllo).
Si tratta di una validazione base, l’ideale sarebbe controllare anche la validità del codice comune, ma per scoraggiare l’inserimento di dati falsi può essere sufficiente.
Grazie ancora e a presto!
Grazie Fabio, ottima idea.
Ciao Fabio,
ho dato un’occhiata ai link, ma essendo neofita avrei bisogno esattamente del codice finale miscelato. Potresti postarlo per favore? Grazie
Ciao Alessandro, se vuoi puoi chiedermi una consulenza.
Ciao Alessio io ho un piccolo problema
Sto realizzando un sito con 2 user roles.
Uno customer (cliente) e l’altro company (aziendale).
Mi servirebbe solo il campo “Partita Iva” ma visibile e attivo solo ed unicamente per il ruolo “company” .
Come si può fare utilizzando il codice da te postato?
Grazie in anticipo.
Ciao Stefano,
il ruolo WP lo assegna solo a registrazione avvenuta, quindi non puoi fare un controllo PHP durante la registrazione, quello che puoi fare è una condizione sul campo select (che presumo ci sia se mi dici che hai 2 ruoli).
Ciao Alessio
Grazie per il plugin, è davvero utile!
Il mio cliente però vorrebbe che al posto di “Società” e “Privato” ci fosse scritto “Fattura” e “Ricevuta”, è possibile cambiare i due nomi? Se sì, dove?
Ti ringrazio!
Ciao Simona,
non ho capito cosa intendi, quedto plugin aggiunge il campo partita iva e codice fiscale, nulla a che vedere con le diciture che hai scritto tu.
Ciao Alessio, grazie mille articolo strepitoso!
E’ possibile far comparire i due campi codice fiscale e partita iva anche nella pagina del proprio account nel front-end e permettere all’utente di modificare entrambi i campi insieme agli altri campi di Billing?
Grazie mille
saluti
Michele
Ciao Michele,
si si può fare ma va modificato il plugins, o modifichi la pagina gestione account con i filtri messi a disposizione dalle API di WooCommerce, oppure crei un nuovo endpoint con questi campi e creai un form a front end che permette l’edit e quindi l’aggiornamento degli stessi.
Buongiorno , gentilmente vorrei sapere se e’ possibile inserire come campo obbligatorio (aziende) P.IVA e C.F
Perché se una azienda e’ una società di persone , si sa che la P.IVA e’ uguale al C. F, ma se l’azienda e’ una ditta individuale necessita anche del C.F. Spesso mi ritrovo a dover chiamare il cliente e chiedere che tipo di società e poi eventualmente chiedere il C.F.
Vorrei avere il campo P.iva e C.F obbligatorio , se sono uguali…. basta che ripetano la P.iva .
Grazie, ciao
Bungiorno, si è fattibile, va fatto un controllo, se il campo “billing_company” è compilato allora il campo partita iva è codice fiscale soo obbligatori, diversamente no; va comunque modificato il plugin che vede sopra aggiungendo delle righe e dei controlli PHP.
Ciao ho installato il plugin e funziona correttamente, l’unica cosa me lo mette in fondo. Come posso fare per far mettere le scritte sotto a “Nome e Cognome”? Grazie, Chiara
Ciao Chiara,
va modificato il template di WooCommerce per fare quello che chiedi.
Funziona, è semplice e pulito come piace a me.
Complimenti.
Ciao Alessio e grazie sempre,
volevo chiederti se è possibile condizionare la visibilità dei campi alla nazione, cioè far apparire i campi solo se si seleziona ITALIA.
grazie
domenico
Ciao Domenico,
si lo puoi fare per esempio con jQuery, triggando con .onChange() la select state e poi mostrare con .show() e nascondere con .hide() i campi; io per esempio l’ho fatto per i campi della fatturazione elettronica.
Ciao Angelo,
intanto grazie per il codice messo a disposizione.
Volevo chiederti se c’è modo, di riproporre il campo codice fiscale precedentemente inserito dall’utente in fase di registrazione, all’interno del checkout durante in occasione di un secondo acquisto da loggato.
Da una prova fatta il campo text rimane vuoto, in attesa dell’inserimento del campo che altrimenti viene inviato vuoto.
Grazie mille
Ciao Giovanni,
mi chiamo Alessio, non Angelo, il cognome confonde 🙂
Si si può fare quello che chiedi, è sufficiente creare un plugin e nell’array gli si passa anche l’opzione per visualizzare il campo sia in registrazione che checkout.
Si, ok. Ma come fai a verificare che Partita IVA e CF siano inseriti correttamente e abbiano formato valido??
Ciao Fabrizio,
va sviluppato un plugin che si interfaccia con un elenco internazionale di CF e PI.
Buongiorno Alessandro, innanzitutto complimenti per il plugin. Ho provato tantissimi sistemi per cercare di ottenere di far vedere il codice fiscale solo agli italiani ma non ho trovato alternative valide.
Ho però problemi con alcuni utenti safari dagli stati uniti, a cui continua a comparire il codice fiscale anche sui paesi esteri. A cosa potrebbe essere legato? Ho provato a escludere la pagina di checkout dalla cache, se potesse essere un problema di questo genere ma niente.
Ti ringrazio
Non so che sistema di cache utilizzi, ma il checkout non dovrebbe mai stare nella cache ne i suoi relativi cookies, di sicuro il problema è quello.
Ciao, ma come faccio poi a vedere nella mail che ricevo dell’ordine, i campi della partita iva e del codice univoco?
Ciao Giuseppe,
va aggiunto un altro pezzo di codice se vuoi vederlo negli ordini backend.
Buongiorno! Grazie mille per questo codice, mi ha risolto davvero un problema ed è ben spiegato! Ho però una domanda… Sono riuscita a modificarlo in modo da rendere la P.IVA non necessaria e ho aggiunto la voce “Codice destinatario” per la fatturazione elettronica. Il mio problema è che tutte e tre le caselle sono raggruppate in uno spazio ristretto, alcune affiancate… Come posso fare perché siano una sotto l’altra? Grazie mille!
Ciao devi usare la classe form-row-wide
Salve ho provato il code funziona perfettamente, fantastico. Ma ho un problema ,nel back end ( ordine cliente, non compaiono i dati p.iva ect) ma funziona solo in front end.Sara’ cambiato qualcosa con la nuova versione woocommerce ?
Ciao Pasqualino,
ti posso assicurare che il codice funziona correttamente perchè l’ho usato questa settimana, forse stai sbagliando qualcosa, controlla.
Ciao Alessio, ottima guida! Una cosa. Se un utente compra oggi e si registra, un domani che torna e mette username e password nel checkout field del codice fiscale deve rimetterlo tutte le volte.
Non c’è la possibilità di richiamarlo in fase di checkout se l’utente è già registrato?
Ciao, quello che mi chiedi va oltre il semplice aiutino, se vuoi puoi chiedemi una consulenza a pagamento dai contatti.