Extensiones

Las extensiones de formato son complementos que a帽aden funcionalidad al formato FacturaE. Similarmente, Facturae-PHP dispone de una interfaz propia para gestionar estas extensiones.

Una extensi贸n puede ser accedida desde cualquier factura a trav茅s del m茅todo $fac->getExtension() y cada extensi贸n dispone de su propio set de m茅todos, estado interno y funcionalidad.

Extensiones de terceros

Adem谩s de las extensiones incluidas con Facturae-PHP, desde la versi贸n 1.5.0 es posible utilizar clases externas como extensiones. Esto permite a las empresas a帽adir l贸gica de negocio propia a esta librer铆a sin la obligaci贸n de compartir el c贸digo fuente bajo licencia MIT.

Para usar una extensi贸n de terceros se deber谩 llamar al mismo m茅todo de antes con el nombre de la clase como par谩metro:

$awesome = $fac->getExtension(AwesomeExtension::class);

Una extensi贸n de Facturae-PHP tiene un aspecto similar a este:

class AwesomeExtension extends \josemmo\Facturae\Extensions\FacturaeExtension {
  // NOTA: todos los m茅todos de este ejemplo son opcionales

  public function __getAdditionalData() {
    // Devuelve un string con el XML a inyectar en el bloque
    // "AdditionalData/Extensions" de un documento FacturaE.
  }

  public function __onBeforeExport() {
    // L贸gica a ejecutar antes de exportar (generar el XML)
    // de una factura. Indicado para realizar acciones sobre
    // la instancia de la factura, que se puede obtener a
    // trav茅s del m茅todo `$this->getInvoice()`.
  }

  public function __onBeforeSign($xml) {
    // L贸gica a ejecutar cuando el XML de la factura ya est谩
    // generado pero todav铆a no ha sido firmado.
    // 脷til para modificar el XML antes de firmarlo, que
    // recibe por par谩metro.
    return $xml;
  }

  public function __onAfterSign($xml) {
    // L贸gica a ejecutar despu茅s de haber firmado el XML de la
    // factura y antes de ser devuelto por el m茅todo `export()`.
    // 脷til para modificar el XML despu茅s de firmarlo, que
    // recibe por par谩metro.
    return $xml;
  }

  // Otros m茅todos propios de la clase

}

Table of contents