consultarXmlETransmitir method

Future<TransmitirDeclaracaoDctfResponse> consultarXmlETransmitir({
  1. String? contribuinteNumero,
  2. required CategoriaDctf categoria,
  3. required String anoPA,
  4. String? mesPA,
  5. String? diaPA,
  6. String? numProcReclamatoria,
  7. required Future<String> assinadorXml(
    1. String xmlBase64
    ),
  8. String? contratanteNumero,
  9. String? autorPedidoDadosNumero,
})

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,
  );
}