I controlli che vengono effettuati dal plugin WooCommerce Italian Add-on su Codice Fiscale o Partita IVA, sono effettuati in determinate condizioni. La Partita IVA viene controllata nei casi di cliente italiano o UE. Il codice fiscale viene controllato solo nel caso di un cliente italiano.
Esiste, evidentemente, la possibilità che le necessità siano diverse, e che controlli più restrittivi debbano essere effettuati in casi più specifici. A questo proposito abbiamo introdotto alcune funzioni che permettono di personalizzare i controlli sui dati inseriti, garantendo la massima flessibilità d'uso.
Vediamo alcuni esempi su come personalizzare il comportamento del plugin al checkout, usando una funzione aggiuntiva nel function.php del tema. I parametri che possono interessare sono i seguenti:
- $_POST["billing_customer_type"] ("business" nel caso di aziende, "personal" in caso di privati)
- $_POST["billing_cf"] (se billing_customer_type = "business" contiene la partita IVA, altrimenti il codice fiscale)
- $_POST["billing_PEC"] (la PEC o il codice destinatario del cliente "business")
- $_POST["billing_cf2"] (codice fiscale aggiuntivo, opzionale)
function controllo_personalizzato_partitaIVA ($options, $post ) {
if( condizione_personalizzata ) {
wc_add_notice("messaggio di errore", $notice_type = "error");
}
}
add_action( 'wcpdf_IT_after_checkout_process', 'controllo_personalizzato_partitaIVA', 20, 2 );
Alcuni esempi
Codice fiscale sempre obbligatorio per clienti privati UE
function check_cf_code ($options, $post ) { if (in_array($_POST["billing_country"], $options->eu_vat_countries) && $_POST["billing_customer_type"] == "personal" && empty($_POST["billing_cf"]) ) { wc_add_notice("Il codice fiscale è sempre obbligatorio", $notice_type = "error"); } } add_action( 'wcpdf_IT_after_checkout_process', 'check_INSEE_code', 20, 2 );
Controllo il codice ISEE per i clienti privati francesi
function check_INSEE_code ($options, $post ) { $regexp = '/^(?[123478])(?[0-9]{2})(?0[1-9]|1[0-2]|3[1-9]|4[0-2]|[5-9][0-9]|20)(?[0][1-9]|2[AB]|[1-9][0-9])(?[0-9]{3})(?00[1-9]|0[1-9][0-9]|[1-9][0-9]{2})(?0[1-9]|[1-8][0-9]|9[0-7])?$/'; if ($_POST["billing_country"] == "FR" && $_POST["billing_customer_type"] == "personal" && !preg_match($regexp, $_POST["billing_cf"], $match)) { wc_add_notice("Codice INSEE errato o non presente", $notice_type = "error"); } } add_action( 'wcpdf_IT_after_checkout_process', 'check_INSEE_code', 20, 2 );
Trasformo il codice destinatario in lettere maiuscole e la pec in minuscolo
function mod_case_billing_PEC ($options, $post ) { if($options->add_PEC && $_POST["billing_customer_type"] == "business" && $_POST["billing_country"] == 'IT' && !empty($_POST["billing_PEC"]){ $res = $_POST['billing_PEC']; if(is_email($res) { $res = strtolower($res); } else { $res = strtoupper($res); } $_POST['billing_PEC'] = $res; } } add_action( 'wcpdf_IT_after_checkout_process', 'mod_case_billing_PEC', 20, 2 );