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 );