LibreDTE

CafManager
in package
implements CafManagerInterface

Implementación de un gestor de archivos CAF.

Agrupa múltiples CAFs por tipo de documento y entrega folios en orden, cruzando de un CAF al siguiente cuando se agota el anterior.

Soporta marcar folios como ya consumidos (emitidos previamente), lo que permite especificar un folio de inicio distinto al primero del CAF o incluso rangos con gaps: "1-6,10,14,16-20".

Table of Contents

Interfaces

CafManagerInterface
Interfaz para el gestor de archivos CAF.

Properties

$consumed  : array<int, array<int, true>>
Conjunto de folios ya consumidos por tipo de documento.
$pool  : array<int, array<string|int, CafInterface>>
Pool de CAFs agrupados por tipo de documento.

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.
parseFolios()  : array<string|int, int>
Parsea folios desde un string de rangos o un array de enteros.

Properties

$consumed

Conjunto de folios ya consumidos por tipo de documento.

private array<int, array<int, true>> $consumed = []

Usa el folio como clave para búsqueda O(1).

$pool

Pool de CAFs agrupados por tipo de documento.

private array<int, array<string|int, CafInterface>> $pool = []

Cada entrada es un array de CafInterface ordenado por folio desde.

Methods

add()

Agrega un archivo CAF al pool.

public add(string $xml) : static
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
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
Parameters
$dte : int

Tipo de documento.

$folio : int

Folio a buscar.

Return values
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, mixed> $folios) : static
Parameters
$dte : int

Tipo de documento.

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

Folios a marcar como consumidos.

Return values
static

remove()

Elimina un CAF específico del pool.

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

Tipo de documento.

$folioDesde : int

Folio de inicio del CAF a eliminar.

Return values
static

setAvailableRange()

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

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

Tipo de documento.

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

Folios que están disponibles para consumo.

Return values
static

parseFolios()

Parsea folios desde un string de rangos o un array de enteros.

private parseFolios(string|array<string|int, int> $folios) : array<string|int, int>

El string acepta rangos separados por coma: "1-6,10,14,16-20". El array debe contener enteros: [1, 2, 3, 4, 5, 6, 10].

Parameters
$folios : string|array<string|int, int>
Return values
array<string|int, int>

        
On this page

Search results