Oggi vediamo come aggiungere un campo partita iva nel checkout di woocommerce o jigoshop di WordPress, obbligatorio per tutti gli ecommerce italiani. Un codice davvero utilissimo e sopratutto indispensabile se fate uso di questi plugin per WordPress.
Panoramica
Come ben sappiamo in tutti gli ecommerce italiani è necessario aggiungere il campo Partita Iva o Codice Fiscale nel checkout, necessario per poter emettere regolare fattura (non fate i disonesti, Monti ci guarda!). Vediamo come aggiungere questo campo con poche righe di codice.
Aggiungere il campo personalizzato al checkout
Il file da modificare è “woocommerce-functions.php” nel caso di woocommerce (troverete il suo gemello anche su Jigoshop). Questo file è una sorta di functions.php creato ad hoc per Woocommerce. Per elaborare degli elementi usando il woocommerce-functions dovete entrare nell’ottica degli “hooks”. In gergo volgare significa “ganci” nel nostro caso gli hooks indicano pezzi di codice atti a svolgere una particolare funzione “innestati” nel codice principale di Woocommerce. Aggiungere un campo al checkout è certamente un perfetto esempio in questo senso.
Dopo questo breve incipit teorico veniamo al sodo, ecco come aggiungere il campo.
[lightgrey_box] NOTA: Tutto il codice da qui in avanti è da inserire all’interno del file: woocommerce-functions.php presente nella root di woocommerce/jigoshop [/lightgrey_box]
Creiamo il campo:
// Hook in nel checkout add_filter( 'woocommerce_checkout_fields' , 'custom_override_checkout_fields' ); function custom_override_checkout_fields( $fields ) { // NOTA shipping: appare nella colonna dx - billing appare sotto la colonna sx di fatturazione $fields['billing']['piva'] = array( 'label' => __('Codice Fiscale/P.IVA', 'woocommerce'), 'placeholder' => _x('Digita il tuo Cod fiscale o partita iva', 'placeholder', 'woocommerce'),//placeholder del campo input 'required' => false, // cambia in true se obbligatorio 'class' => array('form-row-wide'), //specifica una classe se vuoi 'clear' => true ); return $fields; }
Vi invito a visionare i commenti passo-passo per maggiori info. Una cosa molto interessante è la possibilità di scegliere DOVE far apparire il campo grazie all’uso di billing (fatturazione) o shipping (spedizione) nell’array fields.
Una volta creato il campo dobbiamo anche renderlo “dinamico” e renderlo controllabile e gestibile dal pannello di gestione WordPress. Il codice di seguito serve anche per gestire gli errori nel caso il campo fosse lasciato vuoto. Ecco il codice interessato.
//Hook Admin add_action('woocommerce_checkout_process', 'piva_checkout_field_process'); function piva_checkout_field_process() { global $woocommerce; // Verifica se è presente quando cliccano su acquista if (!$_POST['piva']) $woocommerce->add_error( __('Digita la partita iva o codice fiscale per la fattura.') ); } //Aggiorna dati add_action('woocommerce_checkout_update_order_meta', 'piva_checkout_field_update_order_meta'); function piva_checkout_field_update_order_meta( $order_id ) { if ($_POST['piva']) update_post_meta( $order_id, 'Partita IVA / Codice Fiscale', esc_attr($_POST['piva'])); }
Codice Completo
// Hook in nel checkout add_filter( 'woocommerce_checkout_fields' , 'custom_override_checkout_fields' ); function custom_override_checkout_fields( $fields ) { // NOTA shipping: appare nella colonna dx - billing appare sotto la colonna sx di fatturazione $fields['billing']['piva'] = array( 'label' => __('Codice Fiscale/P.IVA', 'woocommerce'), 'placeholder' => _x('Digita il tuo Cod fiscale o partita iva', 'placeholder', 'woocommerce'),//placeholder del campo input 'required' => false, // cambia in true se obbligatorio 'class' => array('form-row-wide'), //specifica una classe se vuoi 'clear' => true ); return $fields; } //Hook Admin add_action('woocommerce_checkout_process', 'piva_checkout_field_process'); function piva_checkout_field_process() { global $woocommerce; // Verifica se è presente quando cliccano su acquista if (!$_POST['piva']) $woocommerce->add_error( __('Digita la partita iva o codice fiscale per la fattura.') ); } //Aggiorna dati add_action('woocommerce_checkout_update_order_meta', 'piva_checkout_field_update_order_meta'); function piva_checkout_field_update_order_meta( $order_id ) { if ($_POST['piva']) update_post_meta( $order_id, 'Partita IVA / Codice Fiscale', esc_attr($_POST['piva'])); }
Conclusioni
Ecco come apparirà, una volta inserito, il campo nel riepilogo dell’ordine del vostro admin panel di WordPress:
Spero possa esservi utile, se ti è servito condividilo sui tuoi social preferiti! Enjoy!
Ciao Riccardo.. Per quanto riguarda jigoshop, come si usa questo codice? Bisogna scrivere jigoshop al posto di woocommerce ad ogni riga di codice?
Si esatto controlla che costruttore usa il reso del codice e agisci di conseguenza 😉
Ciao Riccardo!
Ottima soluzione! Premetto che sono un newbie quindi forse sarà una domanda ovvia e stupida ma … perchè non mi compare la partita iva/codice fiscale nei dettagli di fatturazione? nella gestione ordine … il campo personalizzato si e anche il campo durante il checkout, ho cambiato e messo obbligo di campo e tutto va anche il codice fiscale/partita iva viene visualizzata nel campo personalizzato…
grazie!!!
Ho inserito per sbaglio il codice nella function nella root del sito invece che in quella di woocommerce (ho fatto un po’ di casino con filezilla) ora apparentemente woocommerce funziona solo quando dice lui, consigli per sistemare il problema?? da quello che ho capito ho alterato il dB ma non avendo un dump non posso ripristinarlo.
Ciao Ale, non saprei non mi è mai capitato, oltretutto “funziona solo quando dice lui” in che senso? puoi essere più preciso? (error code etc).
ciao riccardo!
non so se hai visto il commento sopra… ti ho scritto anche su fb ti invio gli screenshot che forse non si capisce quello che dico… il campo c’e’ anche il custom field ma nella welcome e nei dettagli non appaiono i dati… sbaglio io qualcosa?
https://dl.dropbox.com/u/18151581/website/catalog/p%20iva.JPG
https://dl.dropbox.com/u/18151581/website/catalog/orders_01.JPG
https://dl.dropbox.com/u/18151581/website/catalog/custom%20fields.JPG
grazie!
ciao!
Ciao Riccardo volevo chiederti se sai esattamente il nome del file da modificare in Jigoshop poiché non ho trovato quello da te indicato.
in teoria dovresti trovare praticamente lo stesso codice, magari non alle stesse righe, se sicuro di aver cercato accuratamente?
Qualcuno ha verificato se funziona con jigoshop?
Se lo inserisco in jigoshop_template_functions.php il server mi da un errore 500, altri file “functions” di jigosshop non ne vedo…
Su un altro sito ho letto che il codice va aggiunto nel file functions.php del tema.
Ciao Riccardo, complimenti per il sito!
Volevo chiederti a che punto di woocommerce-functions.php consiglieresti di inserire l’intero codice.
Grazie,
Enrico
Interessa anche a me la questione IVA su stampa della fattura perchè se non è possibile allora questa modifica non serve a nulla.
Bhè il campo compare nel riepilogo ordine nel tuo pannello di controllo quindi lo puoi facilmente recuperare e avere sott’occhio.
Usando il codice sulla pagina (functions.php) nel pannello ordini non appare nulla (! come si fa ad evitare ciò…diventa inutile avere i campi predisposti e nn potere visionare ne P.Iva ne CF, ne sulle mail ne sul pannello ordini!!! ed ho ricopiato esattamente tutto…HELP! grazie
grazie funziona alla grande!!
Si ma nel campo si può inserire qualsiasi carattere e non fa il controllo se è corretto o no. 🙁
ciao! ho creato un gruppo su facebook “Woocommerce Italia” iscrivetevi e vediamo di aiutarci con i vari problemi, scusate se “spammo” ma credo sia una cosa utile per tutti **nospam**
grazie!
Salve.
Scrivo perchè ho utilizzato questo codice con jigoshop.
Nella ho utilizzato ho dovuto fare alcune modifiche sui nomi degli hook :
woocommerce_checkout_fields => jigoshop_billing_fields
woocommerce_checkout_process => jigoshop_checkout_process
woocommerce_checkout_update_order_meta => jigoshop_checkout_update_order_meta + jigoshop_process_shop_order_meta
Ho anche usato questo codice :
// aggiunge il cf/piva nei dettagli dell’utente quando visualizza il proprio ordine
add_action(‘jigoshop_after_order_customer_details’,’my_view_fiscalcode_field’);
function my_view_fiscalcode_field($order_id) {
$order = new jigoshop_order($order_id);
echo ”;
echo ‘P.IVA:’ . $order->billing_euvatno . ”;
echo ‘Cod.Fisc.:’ . get_post_meta($order_id,’billing-fisccod’,true) . ”;
echo ”;
}
//aggiunge codice fiscale e partita iva nell’email dell’ordine
add_action(‘jigoshop_after_email_customer_details’,’my_email_fiscalcode_field’);
function my_email_fiscalcode_field($order_id) {
$order = new jigoshop_order($order_id);
echo ‘P.IVA: ‘ . $order->billing_euvatno . PHP_EOL;
echo ‘Cod.Fisc.: ‘ . get_post_meta($order_id,’billing-fisccod’,true) . PHP_EOL;
}
// visualizza il codice fiscale nell’elenco ordini
add_filter(‘manage_shop_order_posts_custom_column’, ‘my_edit_order_columns’,20);
function my_edit_order_columns($column){
global $post;
$order = new jigoshop_order($post->ID);
switch ($column) {
case “billing_and_shipping” :
echo ‘P.IVA :’.$order->billing_evatno.’C.F. : ‘.get_post_meta($order->id,’billing-fisccod’,true).”;
break;
};
}
P.S. : date il nome billing-fisccod anche ad un campo dell’utente, automaticamente jigoshop vi riempirà il campo in fase checkout con il codice fiscale dell’utente
Ciao, ti ricordo che 31 Marzo scade l’iscrizione da innovatore a GoToWeb Talent, mentre per entrare a far parte della giuria web hai tempo fino al 28 Febbraio. Ti scrivo per informarti che oggi dalle 17 alle 18, la responsabile sarà online sia su Facebook che Twitter per rispondere a tutte le vostre domande e risolvere tutti i vostri dubbi! https://www.facebook.com/pages/Gotoweb-Talent/639824949372596?ref=ts&fref=ts
Per aggiungere la p.iva e il codice fiscale in fase di checkout abbiamo realizzato un plugin gratuito. Lo trovate qui: http://www.iografica.it/prodotto/woocommerce-iva-field/
Grazie del contributo!
La versione free del plugin non è più disponibile ma è possibile, ad un piccolo costo, acquistare la versione premium che aggiunge la funzione di raccolta dati fiscali in WooCommerce. La pagina del plugin è questa: http://themes.iografica.it/it/downloads/woocommerce-iva-field-premium/
Rettifico l’indirizzo, quello corretto è: http://www.iograficathemes.com/downloads/woocommerce-iva-field-premium/
Ciao Riccardo,
ho seguito le tue istruzioni e funziona tutto alla perfezione. (su woocommerce)
Il mio unico problema è che nel riepilogo dell’ordine e nelle varie mail di conferma che partono il campo codice fiscale non compare?
Cosa posso fare?
Grazie!
salve sono riuscito ad inserire il campo partita iva, adesso il mio problema è differenziare 2 tipologie di acquirenti: con o senza partita iva. mi spiego meglio: i clienti con partita iva avranno diritto ad uno sconto maggiore rispetto ai clienti senza partita iva come differenziare le tipologie di clienti?
Ciao Riccardo,
come posso rendere obbligatorio l’inserimento della Partita IVA e Codice Fiscale?
Grazie
Ciao 🙂 Complimenti per l’articolo 🙂
Desideravo chiederti: qual è il codice che devo inserire per visualizzare la partita iva nella mail di richiesta?
Grazie!!
Ciao, ho una domanda.
Come faccio a inserire il campo ma a non richiederlo come obbligatorio?