Extensi贸n de FACeB2B

Igual que es posible generar facturas listas para enviar a FACe a帽adiendo los objetos FacturaeCentre correspondientes dentro de la propiedad centres de un FacturaeParty (v茅ase apartado de entidades para m谩s informaci贸n), existe su equivalente para el sector privado.

Introducci贸n a FACeB2B

FACeB2B es una plataforma casi id茅ntica a FACe para que empresas dadas de alta en DIRe puedan enviarse facturas electr贸nicas unas a otras.

Para poder enviar facturas de forma automatizada en FACeB2B los documentos XML creados deben contener el ID del destinatario(s) dentro de la plataforma. Ese identificador se anexa al final de la factura para que FACeB2B sepa enrutarla al destinatario.


Diferencias entre FACe y FACeB2B

Las facturas de FACe se pueden enviar a trav茅s del servicio web ofrecido por el Estado o desde la p谩gina web de FACe, mientras que las facturas de FACeB2B solo pueden enviarse a trav茅s de su servicio web (no hay interfaz gr谩fica).

Para poder subir una factura a FACe esta debe tener los centros (FacturaeCentre) declarados dentro del receptor (FacturaeParty). En cambio, FACeB2B declara las entidades de FacturaeCentre en un anexo especial al final de la factura.

NOTA: una factura enviada por FACeB2B sigue necesitando de emisor y receptor (FacturaeParty) como cualquier otra, pese a declara los FacturaeCentre en un anexo.


Usando FACeB2B con esta librer铆a

Para convertir la factura generada en el ejemplo simple en un documento listo para enviar por FACeB2B, se a帽aden los centros a trav茅s de $fac->getExtension('Fb2b'):

$b2b = $fac->getExtension('Fb2b');
$b2b->setReceiver(new FacturaeCentre([
  "code" => "51558103JES0001",
  "name" => "Centro administrativo receptor"
]));

Si se quisieran a帽adir m谩s partes implicadas en la transacci贸n por parte del receptor (comprador), se utilizar铆a el m茅todo addCentre:

$b2b->addCentre(new FacturaeCentre([
  "code" => "ESB123456740002",
  "name" => "Unidad DIRe Compradora 0002",
  "role" => FacturaeCentre::ROLE_B2B_BUYER
]));
$b2b->addCentre(new FacturaeCentre([
  "code" => "ESB123456740003",
  "name" => "Unidad DIRe Fiscal 0003",
  "role" => FacturaeCentre::ROLE_B2B_FISCAL
]));
$b2b->addCentre(new FacturaeCentre([
  "code" => "ESB123456740004",
  "role" => FacturaeCentre::ROLE_B2B_COLLECTOR
]));

Para a帽adir partes del emisor (vendedor), se utilizar铆a el mismo m茅todo con un segundo par谩metro $isBuyer=false:

$b2b->addCentre(new FacturaeCentre([
  "code" => "ES12345678Z0002",
  "name" => "Unidad DIRe Vendedora 0002",
  "role" => FacturaeCentre::ROLE_B2B_SELLER
]), false);
$b2b->addCentre(new FacturaeCentre([
  "code" => "ES12345678Z0003",
  "name" => "Unidad DIRe Fiscal 0003",
  "role" => FacturaeCentre::ROLE_B2B_FISCAL
]), false);

Por 煤ltimo, si la factura est谩 relacionada con las Administraciones P煤blicas o necesitamos cumplir con la Ley 9/2017 es necesario indicar los datos de la entidad p煤blica y la referencia del contrato:

$b2b->setPublicOrganismCode('E00003301');
$b2b->setContractReference('333000');

Enviar facturas a FACeB2B

Esta extensi贸n solo sirve para generar facturas electr贸nicas que puedan ser enviadas a FACeB2B. Para el proceso de env铆o program谩tico consulta el apartado de comunicaci贸n con FACeB2B.