consultarDetalhesPagamento method

Future<ConsultarDetalhesPagamentoResponse> consultarDetalhesPagamento(
  1. String? contribuinteNumero,
  2. int numeroParcelamento,
  3. int anoMesParcela
)

Consulta detalhes de pagamento na modalidade PERTMEI

contribuinteNumero - CNPJ do contribuinte (obrigatório) numeroParcelamento - Número do parcelamento (obrigatório) anoMesParcela - Mês da parcela paga no formato AAAAMM (obrigatório)

Retorna informações detalhadas de pagamento de uma parcela ou erro detalhado

Implementation

Future<ConsultarDetalhesPagamentoResponse> consultarDetalhesPagamento(
  String? contribuinteNumero,
  int numeroParcelamento,
  int anoMesParcela,
) async {
  try {
    final resolvedContribuinte =
        contribuinteNumero ?? _apiClient.contribuinteNumero;
    // Validação dos dados obrigatórios
    if (resolvedContribuinte == null || resolvedContribuinte.isEmpty) {
      return ConsultarDetalhesPagamentoResponse(
        status: '400',
        mensagens: [
          Mensagem(
            codigo: '[Erro-PERTMEI-VALIDATION]',
            texto: 'CNPJ do contribuinte é obrigatório',
          ),
        ],
        dados: null,
      );
    }

    if (numeroParcelamento <= 0) {
      return ConsultarDetalhesPagamentoResponse(
        status: '400',
        mensagens: [
          Mensagem(
            codigo: '[Erro-PERTMEI-VALIDATION]',
            texto: 'Número do parcelamento deve ser maior que zero',
          ),
        ],
        dados: null,
      );
    }

    if (anoMesParcela < 202001 || anoMesParcela > 209912) {
      return ConsultarDetalhesPagamentoResponse(
        status: '400',
        mensagens: [
          Mensagem(
            codigo: '[Erro-PERTMEI-VALIDATION]',
            texto:
                'Ano/mês da parcela deve estar no formato AAAAMM (ex: 202306)',
          ),
        ],
        dados: null,
      );
    }

    final request = BaseRequest(
      contribuinteNumero: resolvedContribuinte,
      pedidoDados: PedidoDados(
        idSistema: 'PERTMEI',
        idServico: 'DETPAGTOPARC225',
        versaoSistema: '1.0',
        dados: jsonEncode({
          'numeroParcelamento': numeroParcelamento,
          'anoMesParcela': anoMesParcela,
        }),
      ),
    );

    final response = await _apiClient.post('/Consultar', request);
    return ConsultarDetalhesPagamentoResponse.fromJson(response);
  } catch (e) {
    return ConsultarDetalhesPagamentoResponse(
      status: '500',
      mensagens: [
        Mensagem(
          codigo: '[Erro-PERTMEI-INTERNAL]',
          texto: 'Erro interno: $e',
        ),
      ],
      dados: null,
    );
  }
}