generarCUIT static method
Genera un CUIT a partir de un DNI, intentando con varios prefijos.
dni se toma como número entero. Puede tener de 7 a 8 dígitos.
Retorna un CUIT en el formato XX-XXXXXXXX-X o retorna vacio si
no se puede generar con los prefijos configurados.
sexo es la letra 'M' o 'F' para indicar el género de la persona.
y de esta forma inferir el prefijo correcto.
Implementation
static String generarCUIT({required String dni, required String sexo}) {
try {
// Posibles prefijos para personas humanas (puedes ajustar si lo deseas).
final posiblesPrefijos = (sexo == 'M') ? [20, 23] : [27, 23];
// Convertimos el DNI a String, con padding a la izquierda (8 dígitos).
final dniStr = dni.padLeft(8, '0');
for (final prefijo in posiblesPrefijos) {
final cuitSinDV =
'$prefijo$dniStr'; // Ej: "20" + "12345678" => "2012345678"
final dv = _calcularDigitoVerificador(cuitSinDV);
if (dv != -1) {
// Si dv == -1 significa que no es válido (caso en que daría 10).
return '$prefijo-$dniStr-$dv';
}
}
// Si ninguno de los prefijos dio un DV válido.
throw Exception(
'No se pudo generar un CUIT válido con los prefijos definidos.');
} catch (e) {
FlutterUtilsProvider.logDebug('Error al generar CUIT: $e');
return '';
}
}