gerarDas method

Future<PgmeiGerarDasResponse> gerarDas({
  1. String? cnpj,
  2. required String periodoApuracao,
  3. String? dataConsolidacao,
  4. String? contratanteNumero,
  5. String? autorPedidoDadosNumero,
})

GERARDASPDF21 - Gerar DAS com PDF completo

Gera o Documento de Arrecadação do Simples Nacional com PDF completo para contribuintes MEI (Microempreendedor Individual)

cnpj CNPJ do contribuinte MEI periodoApuracao Período no formato AAAAMM dataConsolidacao Data de consolidação no formato AAAAMMDD (opcional) contratanteNumero CNPJ da empresa contratante (opcional) autorPedidoDadosNumero CPF/CNPJ do autor (opcional)

Implementation

Future<PgmeiGerarDasResponse> gerarDas({
  String? cnpj,
  required String periodoApuracao,
  String? dataConsolidacao,
  String? contratanteNumero,
  String? autorPedidoDadosNumero,
}) async {
  final resolvedCnpj =
      cnpj ??
      _apiClient.contribuinteNumero ??
      (throw ArgumentError('CNPJ do contribuinte é obrigatório'));
  // Validações de entrada
  ValidacoesUtils.validateCNPJ(resolvedCnpj);
  final validacaoPeriodo = PgmeiValidations.validarPeriodoApuracao(
    periodoApuracao,
  );
  if (validacaoPeriodo != null) throw ArgumentError(validacaoPeriodo);
  if (dataConsolidacao != null) {
    final validacao = PgmeiValidations.validarDataConsolidacao(
      dataConsolidacao,
    );
    if (validacao != null) throw ArgumentError(validacao);
  }

  // Criação dos dados de entrada
  final requestData = GerarDasRequest(
    periodoApuracao: periodoApuracao,
    dataConsolidacao: dataConsolidacao,
  );

  // Montagem da requisição
  final request = BaseRequest(
    contribuinteNumero: resolvedCnpj,
    pedidoDados: PedidoDados(
      idSistema: 'PGMEI',
      idServico: 'GERARDASPDF21',
      versaoSistema: '1.0',
      dados: requestData.toJsonString(),
    ),
  );

  // Chamada à API
  final response = await _apiClient.post(
    '/Emitir',
    request,
    contratanteNumero: contratanteNumero,
    autorPedidoDadosNumero: autorPedidoDadosNumero,
  );

  return PgmeiGerarDasResponse.fromJson(response);
}