atualizarBeneficio method

Future<AtualizarBeneficioResponse> atualizarBeneficio({
  1. String? cnpj,
  2. required int anoCalendario,
  3. required List<InfoBeneficio> beneficios,
  4. String? contratanteNumero,
  5. String? autorPedidoDadosNumero,
})

ATUBENEFICIO23 - Atualizar Benefício

Permite registrar benefício para determinada apuração do PGMEI

cnpj CNPJ do contribuinte MEI anoCalendario Ano calendário no formato AAAA beneficios Lista de informações de benefícios por período contratanteNumero CNPJ da empresa contratante (opcional) autorPedidoDadosNumero CPF/CNPJ do autor (opcional)

Implementation

Future<AtualizarBeneficioResponse> atualizarBeneficio({
  String? cnpj,
  required int anoCalendario,
  required List<InfoBeneficio> beneficios,
  String? contratanteNumero,
  String? autorPedidoDadosNumero,
}) async {
  final resolvedCnpj =
      cnpj ??
      _apiClient.contribuinteNumero ??
      (throw ArgumentError('CNPJ do contribuinte é obrigatório'));
  // Validações de entrada
  ValidacoesUtils.validateCNPJ(resolvedCnpj);
  // Valida ano (1900-2099)
  if (anoCalendario < 1900 || anoCalendario > 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 (anoCalendario > anoAtual + 1) {
    printW('Aviso: Ano calendário é futuro ($anoCalendario)');
  }
  final validacaoBeneficios = PgmeiValidations.validarInfoBeneficio(
    beneficios,
  );
  if (validacaoBeneficios != null) throw ArgumentError(validacaoBeneficios);

  // Criação dos dados de entrada
  final requestData = AtualizarBeneficioRequest(
    anoCalendario: anoCalendario,
    infoBeneficio: beneficios,
  );

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

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

  return AtualizarBeneficioResponse.fromJson(response);
}