LibreDTE

CafManagerInterface

Interfaz para el gestor de archivos CAF.

Table of Contents

Methods

add()  : static
Agrega un archivo CAF al pool.
consume()  : CafFolioInterface
Consumir el próximo folio.
getAvailableRange()  : string
Obtiene los folios disponibles para un tipo de documento como string de rangos compactos.
getCafForFolio()  : CafInterface
Obtiene el CAF que cubre un folio ya asignado.
getCafs()  : array<string|int, CafInterface>
Devuelve todos los CAFs cargados como lista plana.
hasEnoughFolios()  : bool
¿Hay suficientes folios disponibles para este tipo?
markConsumed()  : static
Marca folios como ya consumidos (estado previo al uso de este manager).
remove()  : static
Elimina un CAF específico del pool.
setAvailableRange()  : static
Define explícitamente qué folios están disponibles para consumo.

Methods

add()

Agrega un archivo CAF al pool.

public add(string $xml) : static

Puede llamarse N veces, mismo o distinto TpoDoc.

Parameters
$xml : string
Return values
static

getAvailableRange()

Obtiene los folios disponibles para un tipo de documento como string de rangos compactos.

public getAvailableRange(int $dte) : string

Recorre todos los CAFs del tipo, identifica los folios no consumidos y los devuelve en formato de rangos separados por coma.

Ejemplo de retorno: "1-6,10,14,16-20"

Parameters
$dte : int

Tipo de documento.

Return values
string

Rangos de folios disponibles. Vacío si no hay disponibles.

getCafForFolio()

Obtiene el CAF que cubre un folio ya asignado.

public getCafForFolio(int $dte, int $folio) : CafInterface

A diferencia de consume(), no modifica el estado del pool. Se usa cuando el folio fue asignado previamente (por un parser) y se necesita el CAF para timbrar y firmar el documento.

Parameters
$dte : int

Tipo de documento.

$folio : int

Folio a buscar.

Tags
throws
RuntimeException

Si no hay CAF cargado que cubra el folio.

Return values
CafInterface

getCafs()

Devuelve todos los CAFs cargados como lista plana.

public getCafs() : array<string|int, CafInterface>

Se usa principalmente para persistir los inputs del proceso. El nombre de archivo canónico de cada CAF se construye a partir de getTipoDocumento() y getFolioDesde(), que juntos son únicos.

Return values
array<string|int, CafInterface>

hasEnoughFolios()

¿Hay suficientes folios disponibles para este tipo?

public hasEnoughFolios(int $dte[, int $cantidad = 1 ]) : bool
Parameters
$dte : int
$cantidad : int = 1
Return values
bool

markConsumed()

Marca folios como ya consumidos (estado previo al uso de este manager).

public markConsumed(int $dte, string|array<string|int, int> $folios) : static

Operación aditiva: puede llamarse N veces y los folios se acumulan. Útil cuando se tiene un registro de folios ya emitidos antes de iniciar el proceso actual.

Casos de uso:

// Iniciar desde el folio 7 (los anteriores ya fueron emitidos): $manager->markConsumed(33, '1-6');

// Excluir folios específicos con gaps: $manager->markConsumed(33, '1-6,10,15');

// Llamadas acumulativas (equivale al ejemplo anterior): $manager->markConsumed(33, '1-6'); $manager->markConsumed(33, '10,15');

// Desde un array de enteros: $manager->markConsumed(33, [1, 2, 3, 4, 5, 6]);

Formato del string de rangos: segmentos separados por coma, cada segmento es un folio individual ("10") o un rango inclusivo ("1-6").

Parameters
$dte : int

Tipo de documento.

$folios : string|array<string|int, int>

Folios a marcar como consumidos.

Return values
static

remove()

Elimina un CAF específico del pool.

public remove(int $dte, int $folioDesde) : static

Identifica el CAF por su tipo de documento y folio de inicio, que juntos son únicos. Al eliminar un CAF, también se limpian de la lista de consumidos los folios que pertenecían a ese CAF.

Parameters
$dte : int

Tipo de documento.

$folioDesde : int

Folio de inicio del CAF a eliminar.

Tags
throws
RuntimeException

Si no se encuentra el CAF especificado.

Return values
static

setAvailableRange()

Define explícitamente qué folios están disponibles para consumo.

public setAvailableRange(int $dte, string|array<string|int, int> $folios) : static

Operación definitiva: reemplaza el estado de disponibilidad anterior para el TpoDoc indicado. Todo folio del pool que no aparezca en la lista se marca automáticamente como consumido.

Requiere que los CAFs del tipo ya hayan sido cargados con add(), ya que necesita conocer el pool completo para calcular el complemento.

Útil cuando el sistema externo entrega directamente la lista de folios disponibles (en lugar de la lista de usados).

Casos de uso:

// Solo estos folios están disponibles (rangos con gaps): $manager->setAvailableRange(33, '7-9,11,14,16-20');

// Desde un array de enteros: $manager->setAvailableRange(33, [7, 8, 9, 11, 14, 16, 17, 18, 19, 20]);

Formato del string de rangos: segmentos separados por coma, cada segmento es un folio individual ("11") o un rango inclusivo ("7-9").

Parameters
$dte : int

Tipo de documento.

$folios : string|array<string|int, int>

Folios que están disponibles para consumo.

Return values
static

        
On this page

Search results