WooCommerce Italian Add-on consente di modificare o aggiungere sezioni alla fattura elettronica standard. Per far questo usiamo un filtro che ci consente di modificare il testo XML della fattura.

L'ipotesi è di aggiungere una funzione nel file function.php del tema in uso. Ecco lo schema:

function modifica_fattura_elettronica($result_array, $order ) {
  // ricavo la stringa XML della fattura elettronica
  $xml = $result_array["xml"];
  //... modifico il tracciato della fattura elettronica XML $xml dell'ordine $order...  
  $result_array["xml"] = $xml;
  return $result_array;
}
add_action( 'wcpdf_IT_after_creaFatturaElettronica', 'modifica_fattura_elettronica', 20, 2 ); 

Alcuni esempi


Aggiunge i termini di pagamento, saldo con bonifico

function modifica_fattura_elettronica($result_array, $order ) {
  $importo = (float)$order->get_total();
  $data = $order->get_date_created();

  $doc = new DOMDocument();
  $doc->preserveWhiteSpace = false;
  $doc->formatOutput = true;
  $doc->loadXML($result_array["xml"]);
  $FatturaElettronicaBody = $doc->getElementsByTagName("FatturaElettronicaBody")->item(0);

  $DatiPagamento = $doc->createElement("DatiPagamento");
  $CondizioniPagamento = $doc->createElement("CondizioniPagamento", "TP02"); //TP02 = pagamento completo
  $DatiPagamento->appendChild($CondizioniPagamento);
  $DettaglioPagamento = $doc->createElement("DettaglioPagamento");
  $Beneficiario = $doc->createElement("Beneficiario", "Mario ROSSI");
  $DettaglioPagamento->appendChild($Beneficiario);
  $ModalitaPagamento = $doc->createElement("ModalitaPagamento", "MP05"); // MP05 = Bonifico
  $DettaglioPagamento->appendChild($ModalitaPagamento);
  $DataRiferimentoTerminiPagamento = $doc->createElement("DataRiferimentoTerminiPagamento", date("Y-m-d", strtotime($data)));
  $DettaglioPagamento->appendChild($DataRiferimentoTerminiPagamento);
  $ImportoPagamento = $doc->createElement("ImportoPagamento", number_format($importo,2,".",""));
  $DettaglioPagamento->appendChild($ImportoPagamento);
  $IBAN = $doc->createElement("IBAN", "IT99X123451234500000012345");
  $DettaglioPagamento->appendChild($IBAN);
  $DatiPagamento->appendChild($DettaglioPagamento);

  $FatturaElettronicaBody->appendChild($DatiPagamento);

  $xml = $doc->saveXML();
  $result_array["xml"] = $xml;
  return $result_array;
}
add_action( 'wcpdf_IT_after_creaFatturaElettronica', 'modifica_fattura_elettronica', 20, 2 );