Guia breve de como el servicio decide numerar un CFE y que valida antes de aceptar la numeracion.
- El servicio valida el XML prefirma y verifica que el RUT emisor coincida con la empresa solicitante.
- Si el
IdDocllega sinSerieoNro, se usaNumeracionCFESinAsignar(el sistema asigna folio y CAE). - Si el
IdDocya traeSerieyNro, se usaNumeracionCFEAsignado(se valida que la numeracion y el CAE sean legitimos). - En ambos casos puede usarse un
uuidexterno (oIdDoc.NroInterno) para evitar reprocesos; si ya existe, se rechaza.
- Busca un rango disponible para la empresa/sucursal/terminal/tipo.
- Si no hay, intenta reservar a demanda; si falla, lanza error.
- Toma el proximo numero del rango (
UsadoHasta + 1oNumeroDesde) y revisa que no haya saltos. - Marca el rango como usado hasta ese numero y, si corresponde, como totalmente utilizado.
- Si el rango no se reservo en esta misma llamada y el tipo es normal (
tipoCfe <= 200), revisa stock minimo configurado en punto, sucursal o empresa; si queda por debajo, intenta reservar otro rango. - Asigna
SerieyNroal XML y devuelve elcaeIdasociado al rango.
Errores frecuentes: sin rango disponible ni posibilidad de reservar, UUID duplicado, o salto de numeracion (solo deja registro y bandera; no bloquea).
- Valida entrada:
idEmpresa> 0, sucursal/terminal,tipoCfevalido,IdDocpresente,Serieno vacia,Nropositivo y, siIdDoc.TipoCFEviene en el XML, debe coincidir. - Valida UUID: si llega o se lee de
IdDoc.NroInterno, se rechaza si ya existe elCfe. - Valida folio unico: rechaza si ya hay un CFE con el mismo
tipoCfe + serie + numero. - Obtiene el CAE:
- Contingencia (
tipoCfe > 200): busca constancia y exige que no este anulado, vencido ni fuera de rango. - Normal: busca el rango que contenga el numero, marca
UsadoHasta, y toma elcaeIddel rango.
- Contingencia (
- Si el XML trae
CAEData, cruza todo contra el registro del CAE: empresa, estado (no anulado/vencido),Serie, rangoDNro/HNro,CAEID(numero de autorizacion), fecha de vencimiento y, si existen, indicadores y causal de CAE especial. - Para tipos normales vuelve a actualizar el rango con el numero utilizado.
Errores frecuentes: CAE inexistente/anulado/vencido, serie/numero fuera del rango autorizado, datos de CAEData que no coinciden, folio o UUID duplicados, o inconsistencias entre tipoCfe solicitado y el presente en el XML.
- Si quieren que Bluetech asigne folio y CAE, envien el XML sin
IdDoc.SerieniIdDoc.Nro. Aseguren que haya un UUID (IdDoc.NroInterno) unico por emision para evitar reintentos duplicados. - Si numeran ustedes, manden siempre
IdDoc.Serie,IdDoc.Nroy el CAE vigente para ese rango. IncluyanCAEDatacompleto en el XML para que el control de consistencia pase sin rechazos. - Para CFEs de contingencia (
tipoCfe > 200), verifiquen que el CAE informado siga vigente y que el numero caiga dentro del rango asignado a esa serie. - Manejen las excepciones que devuelva la API: los mensajes vienen descriptivos y ayudan a corregir configuracion, folio o datos de CAE.