consultarXmlETransmitir method
Consulta XML e transmite declaração em um fluxo completo
ATENÇÃO: Este método requer que você implemente a assinatura digital externamente.
O parâmetro assinadorXml deve ser uma função que recebe o XML em Base64
e retorna o mesmo XML assinado digitalmente.
contribuinteNumero CPF ou CNPJ do contribuinte
categoria Categoria da declaração
anoPA Ano do período de apuração
mesPA Mês do período de apuração
diaPA Dia do período de apuração - apenas para espetáculo desportivo
numProcReclamatoria Número do processo - apenas para reclamatória trabalhista
assinadorXml Função que assina digitalmente o XML
contratanteNumero CPF ou CNPJ do contratante do serviço
autorPedidoDadosNumero CPF ou CNPJ do autor do pedido de dados
Implementation
Future<TransmitirDeclaracaoDctfResponse> consultarXmlETransmitir({
String? contribuinteNumero,
required CategoriaDctf categoria,
required String anoPA,
String? mesPA,
String? diaPA,
String? numProcReclamatoria,
required Future<String> Function(String xmlBase64) assinadorXml,
String? contratanteNumero,
String? autorPedidoDadosNumero,
}) async {
// 1. Consultar/Gerar XML
final xmlResponse = await consultarXmlDeclaracao(
contribuinteNumero: contribuinteNumero,
categoria: categoria,
anoPA: anoPA,
mesPA: mesPA,
diaPA: diaPA,
numProcReclamatoria: numProcReclamatoria,
contratanteNumero: contratanteNumero,
autorPedidoDadosNumero: autorPedidoDadosNumero,
);
if (!xmlResponse.sucesso || xmlResponse.xmlBase64 == null) {
throw Exception(
'Falha ao obter XML: ${xmlResponse.mensagemErro ?? "XML não disponível"}',
);
}
// 2. Assinar XML externamente
final xmlAssinado = await assinadorXml(xmlResponse.xmlBase64!);
// 3. Transmitir declaração
return transmitirDeclaracao(
contribuinteNumero: contribuinteNumero,
categoria: categoria,
anoPA: anoPA,
mesPA: mesPA,
diaPA: diaPA,
numProcReclamatoria: numProcReclamatoria,
xmlAssinadoBase64: xmlAssinado,
contratanteNumero: contratanteNumero,
autorPedidoDadosNumero: autorPedidoDadosNumero,
);
}