Grenter XML¶
Esta libreria permite generar documentos XML siguiendo el estándar UBL 2.0 y 2.1, ademas de considerar las normas establecidas por SUNAT.
UBL 2.0
No usar la versión 2.0 para generar Facturas, Boletas, Notas de Crédito, Notas de Débito, ya que SUNAT actualmente exige utilizar la versión UBL 2.1
.
Instalar¶
composer require greenter/xml
Documentos¶
Los documentos disponibles en este paquete son:
Documento UBL | Builder | Comprobante |
---|---|---|
Invoice | InvoiceBuilder | Factura, Boleta de Venta |
CreditNote | NoteBuilder | Nota de Crédito |
DebitNote | NoteBuilder | Nota de Débito |
Summary | SummaryBuilder | Resumen diario |
Voided | VoidedBuilder | Comunicación de Baja, Reversion |
Despatch | DespatchBuilder | Guía de Remisión |
Retention | RetentionBuilder | Retención |
Perception | PerceptionBuilder | Percepción |
Uso¶
Para generar el archivo XML nos basamos en modelos de documentos disponibles en greenter/core, los cuales implementan DocumentInterface
.
Para una factura el modelo a utilizar es Invoice
, y para generar el XML debemos usar InvoiceBuilder
.
<?php
use Greenter\Model\Sale\Invoice;
use Greenter\Xml\Builder\InvoiceBuilder;
$invoice = new Invoice();
$invoice->setSerie('F001');
$invoice->setCorrelativo('1');
// ...
$builder = new InvoiceBuilder();
$xml = $builder->build($invoice);
echo $xml;
Tener en cuenta que esto solo crea el XML pero no realiza la firma, para ello utilizar greenter/xmldsig
.
El siguiente fragmento es una previsualización del resultado:
<?xml version="1.0" encoding="UTF-8"?>
<Invoice xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2" xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2" xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:ext="urn:oasis:names:specification:ubl:schema:xsd:CommonExtensionComponents-2">
<ext:UBLExtensions>
<ext:UBLExtension>
<ext:ExtensionContent>
</ext:ExtensionContent>
</ext:UBLExtension>
</ext:UBLExtensions>
<cbc:UBLVersionID>2.1</cbc:UBLVersionID>
<cbc:CustomizationID>2.0</cbc:CustomizationID>
<cbc:ID>F001-1</cbc:ID>
<!--....-->
</Invoice>
Avanzado¶
Esta libreria para generar los XML emplea el motor de plantillas twig, si necesitas cambiar algunos parametros puedes hacerlo desde el constructor.
Ejemplo
<?php
use Greenter\Xml\Builder\InvoiceBuilder;
$options = [
'cache' => '/tmp/compilation_cache'
];
$builder = new InvoiceBuilder($options);
También puedes crear tu propia versión, implementando BuilderInterface
.