CafManagerInterface
in
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
staticconsume()
Consumir el próximo folio.
public
consume(int $dte) : CafFolioInterface
Devuelve el folio + el CAF asociado (operación atómica).
Parameters
- $dte : int
Return values
CafFolioInterfacegetAvailableRange()
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
Return values
CafInterfacegetCafs()
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
boolmarkConsumed()
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
staticremove()
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
Return values
staticsetAvailableRange()
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.