plugin

19/04/2019

WooCommerce Italian Add-on. Modifica del progressivo invio delle fatture elettroniche.

Il progressivo invio, secondo la specifica dell'Agenzia Entrate, è un numero di 5 caratteri alfanumerici che serve a identificare in modo univoco un file da un altro.

Di default il progressivo invio calcolato dal nostro plugin segue una semplice regola sequenziale, tradotta in base 64 per poter gestire in modo ottimale le sole 5 cifre a disposizione.

Nelle impostazioni del plugin, sezione fatturazione elettronica, è possibile aggiungere un prefisso, per poter distinguere, ad esempio, i file prodotti da una piattaforma da un altra.

Laddove ci fosse la necessità di gestire in maniera più specifica il progressivo invio, abbiamo introdotto un filtro utilizzabile per personalizzare il calcolo:

wcpdf_IT_export_filter_progressivoinvio

gli argomenti del filtro sono:

  • $type: assume il valore "invoice" per le fatture o "credit_note" per le note di credito;
  • $invoice_number: riporta il numero della fattura formattata
  • $invoice_date: riporta la data della fattura in formato Y-m-d;

Due esempi di codice

Un semplice metodo per gestire un proprio numeratore automatico personalizzato, da riportare nel file function.php:

add_filter( 'wcpdf_IT_export_filter_progressivoinvio', 'filter_progressivoinvio', 20, 4);
function filter_progressivoinvio($result, $type, $invoice_number, $invoice_date){
  //recupero un valore memorizzato nelle opzioni
  $mio_progressivoInvio = intval(get_option("mio_progressivoInvio", 0));

  //aumento il contatore di 1
  $mio_progressivoInvio++;

  //salvo il nuovo valore nelle opzioni
  update_option("mio_progressivoInvio", $mio_progressivoInvio);

  //trasformo il numero ottenuto in un codice di 5 cifre
  if($type == "invoice") {
    //se il file corrisponde a una fattura
    $result = sprintf("%05d",$mio_progressivoInvio);

  } elseif($type == "credit_note") {
    //se il file corrisponde a una nota di credito
    $result = sprintf("R%04d",$mio_progressivoInvio);
  }

  return $result;
}

il file corrispondente sarà del tipo IT12345678901_00023.xml.

Ecco invece un esempio di codice per il calcolo del progressivo invio in funzione del numero e della data della fattura. L'ipotesi è di identificare il file con il numero e la data della fattura. Se l'identificativo della fattura è numerico, e non supera le 999 unità all'anno, allora è possibile, inserendo questo codice al function.php

add_filter( 'wcpdf_IT_export_filter_progressivoinvio', 'filter_progressivoinvio', 20, 4);
function filter_progressivoinvio($result, $type, $invoice_number, $invoice_date){
  $year = date("y", strtotime($invoice_date));
  if($type == "invoice") {
    $result = sprintf("%02d%03d",intval($year),intval($invoice_number));
  } elseif($type == "credit_note") {
    $result = sprintf("R%02d%02d",intval($year),intval($invoice_number));
  }
  return $result;
}

Data la fattura 23 del 2019, il file corrispondente è IT12345678901_19023.xml.

 

plugin