Woocommerce/Jigoshop: aggiungere campo partita iva nel checkout

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!

0 0 voti
Valutazione dell'articolo
Iscriviti
Notificami
guest

Questo sito utilizza Akismet per ridurre lo spam. Scopri come vengono elaborati i dati derivati dai commenti.

27 Commenti
Vecchi
Più recenti Le più votate
Feedback in linea
Visualizza tutti i commenti
Mario
Mario
13 anni fa

Ciao Riccardo.. Per quanto riguarda jigoshop, come si usa questo codice? Bisogna scrivere jigoshop al posto di woocommerce ad ogni riga di codice?

fabio
fabio
13 anni fa

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!!!

ale-jet
ale-jet
13 anni fa

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.

fabio
fabio
13 anni fa

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?
comment image
comment image
comment image
grazie!
ciao!

Giuseppe
Giuseppe
13 anni fa

Ciao Riccardo volevo chiederti se sai esattamente il nome del file da modificare in Jigoshop poiché non ho trovato quello da te indicato.

Ivano
Ivano
13 anni fa

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.

Enrico
Enrico
13 anni fa

Ciao Riccardo, complimenti per il sito!
Volevo chiederti a che punto di woocommerce-functions.php consiglieresti di inserire l’intero codice.
Grazie,

Enrico

Mario
Mario
12 anni fa

Interessa anche a me la questione IVA su stampa della fattura perchè se non è possibile allora questa modifica non serve a nulla.

Piera
Piera
Rispondi a  Riccardo Mel
10 anni fa

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

giuseppe
giuseppe
12 anni fa

grazie funziona alla grande!!

Esper
Esper
Rispondi a  giuseppe
12 anni fa

Si ma nel campo si può inserire qualsiasi carattere e non fa il controllo se è corretto o no. 🙁

fabio
fabio
12 anni fa

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!

Luca
Luca
12 anni fa

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

Marianna
Marianna
12 anni fa

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

Roberto
Roberto
12 anni fa

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/

Roberto
Roberto
Rispondi a  Roberto
11 anni fa

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/

iografica
iografica
Rispondi a  Roberto
10 anni fa
Riccardo
Riccardo
12 anni fa

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!

roberto
roberto
12 anni fa

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?

stefano
stefano
11 anni fa

Ciao Riccardo,
come posso rendere obbligatorio l’inserimento della Partita IVA e Codice Fiscale?

Grazie

Gianluca
Gianluca
11 anni fa

Ciao 🙂 Complimenti per l’articolo 🙂
Desideravo chiederti: qual è il codice che devo inserire per visualizzare la partita iva nella mail di richiesta?

Grazie!!

Matteo
Matteo
10 anni fa

Ciao, ho una domanda.
Come faccio a inserire il campo ma a non richiederlo come obbligatorio?

Rimani Aggiornato
Nuove idee, zero Spam
Ti invieremo solo le ultime novità di articoli o nostri progetti.
Iscrivendoti accetti la nostra privacy poliicy. Una volta iscritto, ricordati di attivare l'iscrizione cliccando sul link ricevuto via mail.
27
0
Esprimete la vostra opinione commentando.x