Funcionalidades y características
Estructura general
El proyecto se organiza en paquetes (Package). Cada paquete agrupa componentes (Component) relacionados con un dominio. Cada componente expone su funcionalidad a través de workers (Worker), que son los servicios principales. Los workers pueden tener estrategias intercambiables para distintas variantes de una misma operación.
El núcleo de LibreDTE tiene solo el paquete Billing, con los siguientes componentes:
| Componente | Descripción |
|---|---|
billing.trading_parties |
Entidades participantes: emisor, receptor, contribuyente, mandatario. |
billing.identifier |
Autorización de folios (CAF). |
billing.document |
Ciclo de vida completo de los DTE: parseo, normalización, construcción, validación, renderizado, envío. |
billing.integration |
Cliente para los servicios web del SII (API SOAP). |
billing.exchange |
Intercambio de documentos entre partes vía email o SII. |
billing.book |
Libros y registros tributarios. |
billing.ownership_transfer |
Cesión electrónica (factoring/AEC). |
Servicios externos usados por LibreDTE Core
XML (derafu/xml)
- ✓
XmlDocument: extiendeDomDocumentcon funcionalidades adicionales, incluyendoquery(). - ✓
XmlEncoderyXmlDecoder: conversión entre arreglo PHP y string XML. - ✓
XmlValidator: validación de esquema XSD.
Certificados digitales (derafu/certificate)
- ✓
Certificate: representa un certificado digital con clave pública, privada y metadatos (RUN, nombre, período de validez). - ✓
CertificateFaker: genera certificados falsos para pruebas.
Firma electrónica (derafu/signature)
- ✓
SignatureGenerator,SignatureValidator,XmlSignatureNode: firma y validación XML DSIG estándar, pero preparada para lo que el SII requiere.
Funcionalidades de LibreDTE Core
Partes comerciales (billing.trading_parties)
- ✓
Contribuyente,Emisor,Receptor,Mandatario,PersonaNatural: entidades que representan a los participantes de un DTE. - ✓
ContribuyenteFactory,EmisorFactory,ReceptorFactory,MandatarioFactory: fábricas para construir cada entidad. - ✓
MandatarioManagerWorker: gestión del ciclo de vida de mandatarios. - ✓
AutorizacionDte: representación de la autorización de un emisor para emitir DTE.
Autorización de folios — CAF (billing.identifier)
- ✓
Caf: representa un archivo CAF con clave pública, privada, tipo de documento, rango de folios y período de validez. - ✓
CafFakeryCafFakerWorker: generación de CAF falsos para pruebas. - ✓
CafLoaderWorker: carga de archivos CAF desde disco u otras fuentes. - ✓
CafValidatorWorker: validación de un CAF (vigencia, rango, firma). - ✓
CafProviderWorker: proveedor de CAF que combina carga y validación. - ✓
CafBag: colección de CAF para múltiples tipos de documento.
Documentos tributarios — DTE (billing.document)
- ✓
TipoDocumentoyTipoDocumentoFactory: representa un tipo de DTE con sus atributos (código, nombre, categoría, operación, tag XML, etc.). - ✓ Entidades de documento (
FacturaAfecta,FacturaExenta,FacturaCompra,FacturaExportacion,BoletaAfecta,BoletaExenta,NotaCredito,NotaDebito,NotaCreditoExportacion,NotaDebitoExportacion,GuiaDespacho,LiquidacionFactura): heredan deAbstractDocument. - ✓
SobreEnvio: representa el XMLEnvioDTEoEnvioBOLETAcon métodos para firmar y validar. - ✓
ImpuestoAdicionalRetencion: soporte para impuestos adicionales y retenciones (excepto combustibles). - ✓
ParserWorker: parseo de datos de entrada en formato JSON, XML, YAML y formulario HTML. - ✓
NormalizerWorker: normalización de datos por tipo de documento, con estrategias específicas para cada uno y traits de normalización (detalle, descuentos/recargos, IVA, exportación, transporte, boletas, impuestos adicionales). - ✓
BuilderWorker: construcción del XML del DTE (timbre, firma, validación de esquema), con estrategia por tipo de documento. - ✓
SanitizerWorker: sanitización de los datos del DTE por tipo de documento. - ✓
ValidatorWorker: validación de datos, esquema XSD y firma electrónica del DTE por tipo de documento. - ✓
RendererWorkerconEstandarRendererStrategy: generación de PDF en formato estándar (hoja carta). - ✓
LoaderWorker: carga de un DTE desde XML. - ✓
DispatcherWorker: despacho de documentos al siguiente paso del proceso. - ✓
BatchProcessorWorker: procesamiento en lote de múltiples documentos. - ✓
DocumentBagManagerWorker: gestión delDocumentBag(contenedor de datos de un DTE en proceso).
Intercambio de documentos (billing.exchange)
- ✓
SenderWorker: envío de documentos con los siguientes handlers y estrategias:- ✓
EmailSenderHandler+SmtpSenderStrategy: envío por correo electrónico vía SMTP. - ✓
SiiSenderHandler+DteSenderStrategy: envío de DTE al SII. - ✓
SiiSenderHandler+BoletaSenderStrategy: envío de boletas al SII.
- ✓
- ✓
ReceiverWorker: recepción de documentos con:- ✓
EmailReceiverHandler+ImapReceiverStrategy: recepción de documentos desde correo electrónico vía IMAP.
- ✓
- ✓
DocumentResponseWorker: generación y validación de XML de respuesta al intercambio de DTE:- ✓
buildEnvioRecibos(): genera el XMLEnvioReciboscon recibos de mercaderías (acción ERM). CadaRecibose firma individualmente con IDLibreDTE_T{tipo}F{folio}y elSetRecibosse firma con IDLibreDTE_SetDteRecibidos. - ✓
buildRespuestaEnvio(): genera el XMLRespuestaDTEconRecepcionEnvio(acuse del sobre) oResultadoDTE(resultado comercial por DTE). Se firma con IDLibreDTE_ResultadoEnvio. - ✓
validateSchema(): valida el esquema XSD del documento, retornaXmlDocumentInterface. - ✓
validateSignature(): valida todas las firmas electrónicas, retornaarray<SignatureValidationResultInterface>.
- ✓
Libros tributarios (billing.book)
- ✓
TipoLibro,TipoOperacion: enumeraciones de tipos de libro y operación. - ✓
LibroComprasVentas,LibroGuias,LibroBoletas,ResumenVentasDiarias: entidades que heredan deAbstractBook. - ✓
LoaderWorkercon estrategiasArrayLoaderStrategypor tipo de libro. - ✓
BuilderWorkercon estrategiasBuilderStrategypor tipo de libro. - ✓
ValidatorWorker: validación de esquema XSD (validateSchema()) y firma electrónica (validateSignature()). - ☐
RendererWorker: generación del PDF de los libros. - ✓
BookBag: contenedor de datos del libro en proceso.
Cesión electrónica / Factoring (billing.ownership_transfer)
- ✓
AbstractOwnershipTransferDocument: clase base para las entidades del AEC, congetXml(),getId(),getSchema()ygetSignatureNamespace()(retornanullpara usar namespace xmldsig estándar). - ✓ Entidades
DteCedido,Cesion,Aec: heredan deAbstractOwnershipTransferDocument. Cada una corresponde a una capa de firma del AEC. - ✓
AecBag: contenedor de datos que aceptaDocumentInterface(primera cesión) oAecexistente (re-cesión). Elseqes auto-calculado si se omite. - ✓
AecWorker: generación y validación del Archivo Electrónico de Cesión (AEC):- ✓
build(): construye el AEC completo con tres capas de firma. Soporta primera cesión (desde unDocumentInterface) y re-cesión (desde unAecexistente, añadiendo una nuevaCesional mismoDTECedido). El SII permite hasta 40 cesiones sobre el mismo DTE. - ✓
validateSchema(): valida el esquema XSD del AEC, retornaXmlDocumentInterface. - ✓
validateSignature(): valida todas las firmas del AEC (DTECedido, Cesion(es) y AEC), retornaarray<SignatureValidationResultInterface>.
- ✓
Integración con SII (billing.integration)
- ✓
SiiDteWorker: cliente para los servicios web del SII con las siguientes operaciones:- ✓
authenticate(): obtención del token de sesión. - ✓
sendXmlDocument(): envío de un XML al SII, retorna Track ID. - ✓
checkXmlDocumentSentStatus(): consulta del estado del envío sin detalles de errores. - ✓
requestXmlDocumentSentStatusByEmail(): solicita al SII el correo con estado del envío y detalles de errores. - ✓
validateDocument(): verifica que un DTE es legalmente válido (folio, total, etc.). - ✓
validateDocumentSignature(): verificación avanzada de la firma del DTE en el SII. - ✓
consumeWebservice(): consumo genérico de un servicio SOAP del SII.
- ✓
- ✓
SiiRcvWorker: cliente para el Registro de Compra y Venta (RCV) del SII con las siguientes operaciones:- ✓
submitDocumentAcceptance(): ingresa aceptación o reclamo de un DTE (acciones: ERM, ACD, RCD, RFP, RFT). - ✓
listDocumentEvents(): lista el historial de eventos de un DTE. - ✓
checkDocumentAssignability(): consulta si un DTE puede ser cedido (factoring/AEC). - ✓
getDocumentSiiReceptionDate(): consulta la fecha en que el SII recibió un DTE.
- ✓
- ✓
SiiRtcWorker: cliente para el Registro de Transferencias de Créditos (RTC) del SII:- ✓
sendAec(): envía un AEC al RTC. RecibeSiiRequestInterface,XmlDocumentInterface(el AEC), RUT del cedente y email de contacto. Retorna Track ID. Usa endpointcgi_rtc/RTC/RTCAnotEnvio.cgi(distinto al de DTE).
- ✓
On this page
Last updated on 08/04/2026
by Anonymous