Aggiungi campi per fatturazione elettronica al checkout

INFORMAZIONI SULLO SNIPPET

Se hai clienti con partita IVA che richiedono la fatturazione elettronica, questo codice sarà sicuramente di grande utilità. Infatti, WooCommerce di default non offre la possibilità di inserire tutti i dati necessari per la fatturazione elettronica. Questo frammento di codice aggiungerà alla pagina di checkout i seguenti campi: Ragione Sociale, Codice Fiscale, Partita IVA, Indirizzo PEC e Codice Univoco. Questi nuovi dati saranno memorizzati e visualizzati nei dettagli di ciascun ordine.

PHP
/*
* Snippet Name:     Aggiungi campi per fatturazione elettronica al checkout.
* Snippet Author:   Matteo De Maria
*/
add_filter('woocommerce_checkout_fields', 'dmm_billing_custom_fields_with_checkbox');

function dmm_billing_custom_fields_with_checkbox($fields) {

    // Aggiungi la casella di controllo per la fattura elettronica
$fields['billing']['billing_need_e_invoice'] = array(
    'label' => 'Ho bisogno della fattura elettronica',
    'type' => 'checkbox',
    'class' => array('form-row-wide'),
    'clear' => true,
    'priority' => $fields['billing']['billing_email']['priority'] + 1,
);
	
	// Aggiungi il campo Ragione Sociale
    $fields['billing']['billing_ragione_sociale'] = array(
        'label' => 'Ragione Sociale',
        'required' => false,
        'class' => array('form-row-wide', 'hidden-field'),
        'clear' => true,
        'priority' => $fields['billing']['billing_need_e_invoice']['priority'] + 1,
    );

    // Aggiungi il campo Codice Fiscale
    $fields['billing']['billing_codice_fiscale'] = array(
        'label' => 'Codice Fiscale',
        'required' => false,
        'class' => array('form-row-first', 'hidden-field'),
        'clear' => true,
        'priority' => $fields['billing']['billing_ragione_sociale']['priority'] + 1,
    );

    // Aggiungi il campo Partita IVA
    $fields['billing']['billing_partita_iva'] = array(
        'label' => 'Partita IVA',
        'required' => false,
        'class' => array('form-row-last', 'hidden-field'),
        'clear' => true,
        'priority' => $fields['billing']['billing_codice_fiscale']['priority'] + 1,
    );

    // Aggiungi il campo Indirizzo PEC
    $fields['billing']['billing_pec'] = array(
        'label' => 'Indirizzo PEC',
        'type' => 'email',
        'required' => false,
        'class' => array('form-row-first', 'hidden-field'),
        'clear' => true,
        'priority' => $fields['billing']['billing_partita_iva']['priority'] + 1,
    );

    // Aggiungi il campo Codice Univoco
    $fields['billing']['billing_codice_sdi'] = array(
        'label' => 'Codice Univoco',
        'required' => false,
        'class' => array('form-row-last', 'hidden-field'),
        'clear' => true,
        'priority' => $fields['billing']['billing_partita_iva']['priority'] + 1,
    );

    return $fields;
}

// Aggiungi script JavaScript per gestire la visibilità dei campi
add_action('wp_footer', 'dmm_billing_custom_fields_script');

function dmm_billing_custom_fields_script() {
    ?>
    <script type="text/javascript">
        jQuery(document).ready(function ($) {
            // Nascondi i campi al caricamento della pagina
            $('.hidden-field').hide();

            // Mostra/nascondi i campi in base allo stato della casella di controllo
            $('#billing_need_e_invoice').change(function () {
                $('.hidden-field').toggle(this.checked);
            });
        });
    </script>
    <?php
}

add_action('woocommerce_admin_order_data_after_billing_address', 'dmm_billing_custom_fields_display');

function dmm_billing_custom_fields_display($order) {
    // Recupera lo stato della casella di controllo "Fattura elettronica"
    $need_e_invoice = get_post_meta($order->get_id(), '_billing_need_e_invoice', true);

    // Converti il valore in una stringa significativa
    $need_e_invoice_label = ($need_e_invoice == '1') ? '' : 'No';

    // Visualizza lo stato della casella di controllo "Fattura elettronica"
    echo '<p><b>Fattura elettronica:</b> ' . $need_e_invoice_label . '</p>';
    
    // Visualizza gli altri campi
    echo '<p><b>Codice Fiscale:</b> ' . get_post_meta($order->get_id(), '_billing_codice_fiscale', true) . '</p>';
    echo '<p><b>Partita IVA:</b> ' . get_post_meta($order->get_id(), '_billing_partita_iva', true) . '</p>';
    echo '<p><b>Codice Univoco:</b> ' . get_post_meta($order->get_id(), '_billing_codice_sdi', true) . '</p>';
    echo '<p><b>Indirizzo PEC:</b> ' . get_post_meta($order->get_id(), '_billing_pec', true) . '</p>';
}

// Stile CSS
add_action('wp_head', 'custom_checkout_styles');

function custom_checkout_styles() {
    ?>
    <style>
        /* Nascondi l'etichetta "optional" per i campi opzionali */
        .optional {
            display: none !important;
        }
    </style>
    <?php
}

Copia il codice nel file functions.php del tuo tema child attivo o utilizza il plugin Code Snippets.

Lascia un commento

I commenti non pertinenti allo snippet o offensivi non verranno approvati.

Se desideri condividere del codice, per favore fallo in questo modo: [php]il tuo codice[/php].

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati con *

DMM WEB DESIGN
Questo sito utilizza cookie tecnici e di profilazione. Cliccando su accetta si autorizzano tutti i cookie di profilazione. Cliccando su rifiuta o la X si rifiutano tutti i cookie di profilazione. Cliccando su personalizza è possibile selezionare quali cookie di profilazione attivare.