consultarDividaAtiva method
DIVIDAATIVA24 - Consultar Dívida Ativa
Consulta se o contribuinte está em dívida ativa
cnpj CNPJ do contribuinte MEI
anoCalendario Ano calendário no formato AAAA
contratanteNumero CNPJ da empresa contratante (opcional)
autorPedidoDadosNumero CPF/CNPJ do autor (opcional)
Implementation
Future<ConsultarDividaAtivaResponse> consultarDividaAtiva({
String? cnpj,
required String anoCalendario,
String? contratanteNumero,
String? autorPedidoDadosNumero,
}) async {
final resolvedCnpj =
cnpj ??
_apiClient.contribuinteNumero ??
(throw ArgumentError('CNPJ do contribuinte é obrigatório'));
// Validações de entrada
ValidacoesUtils.validateCNPJ(resolvedCnpj);
if (anoCalendario.isEmpty) {
throw ArgumentError('Ano calendário não pode estar vazio');
}
// Verifica se tem exatamente 4 caracteres
if (anoCalendario.length != 4) {
throw ArgumentError('Ano calendário deve ter formato AAAA');
}
// Verifica se são apenas números
if (!RegExp(r'^\d{4}$').hasMatch(anoCalendario)) {
throw ArgumentError(
'Ano calendário deve conter apenas números no formato AAAA',
);
}
// Valida ano (1900-2099)
final ano = int.parse(anoCalendario);
if (ano < 1900 || ano > 2099) {
throw ArgumentError('Ano calendário deve estar entre 1900 e 2099');
}
// Verifica se não é ano muito futuro
final anoAtual = DateTime.now().year;
if (ano > anoAtual + 1) {
printW('Aviso: Ano calendário é futuro ($anoCalendario)');
}
// Criação dos dados de entrada
final requestData = ConsultarDividaAtivaRequest(
anoCalendario: anoCalendario,
);
// Montagem da requisição
final request = BaseRequest(
contribuinteNumero: resolvedCnpj,
pedidoDados: PedidoDados(
idSistema: 'PGMEI',
idServico: 'DIVIDAATIVA24',
versaoSistema: '1.0',
dados: requestData.toJsonString(),
),
);
// Chamada à API
final response = await _apiClient.post(
'/Consultar',
request,
contratanteNumero: contratanteNumero,
autorPedidoDadosNumero: autorPedidoDadosNumero,
);
return ConsultarDividaAtivaResponse.fromJson(response);
}