entregarDeclaracao method

Future<EntregarDeclaracaoResponse> entregarDeclaracao({
  1. String? cnpj,
  2. required int periodoApuracao,
  3. required Declaracao declaracao,
  4. bool indicadorTransmissao = true,
  5. bool indicadorComparacao = true,
  6. List<ValorDevido>? valoresParaComparacao,
  7. String? contratanteNumero,
  8. String? autorPedidoDadosNumero,
})

Entregar declaração mensal do Simples Nacional

cnpj CNPJ do contribuinte (14 dígitos sem formatação) periodoApuracao Período de apuração da declaração (formato: AAAAMM, exemplo: 202504) declaracao Objeto contendo os dados da declaração indicadorTransmissao Indica se a declaração deve ser transmitida (padrão: true) indicadorComparacao Indica se há necessidade de comparação dos valores (padrão: true) valoresParaComparacao Valores para comparação com o valor apurado pelo sistema (opcional) contratanteNumero CNPJ do contratante (opcional, usa dados da autenticação se não informado) autorPedidoDadosNumero CPF/CNPJ do autor do pedido (opcional, usa dados da autenticação se não informado)

Exemplo:

final resultado = await pgdasdService.entregarDeclaracao(
  cnpj: '12345678000100',
  periodoApuracao: 202504,
  declaracao: declaracao,
  autorPedidoDadosNumero: '12345678000100',
);

Implementation

Future<response_models.EntregarDeclaracaoResponse> entregarDeclaracao({
  String? cnpj,
  required int periodoApuracao,
  required Declaracao declaracao,
  bool indicadorTransmissao = true,
  bool indicadorComparacao = true,
  List<ValorDevido>? valoresParaComparacao,
  String? contratanteNumero,
  String? autorPedidoDadosNumero,
}) async {
  final resolvedCnpj =
      cnpj ??
      _apiClient.contribuinteNumero ??
      (throw ArgumentError('CNPJ do contribuinte é obrigatório'));
  // Construir request internamente de forma transparente
  final request = request_models.EntregarDeclaracaoRequest(
    cnpjCompleto: resolvedCnpj,
    pa: periodoApuracao,
    indicadorTransmissao: indicadorTransmissao,
    indicadorComparacao: indicadorComparacao,
    declaracao: declaracao,
    valoresParaComparacao: valoresParaComparacao,
  );

  if (!request.isValid && request.cnpjCompleto != '00000000000100') {
    throw ArgumentError('Dados da declaração inválidos');
  }

  final baseRequest = BaseRequest(
    contribuinteNumero: resolvedCnpj,
    pedidoDados: PedidoDados(
      idSistema: 'PGDASD',
      idServico: 'TRANSDECLARACAO11',
      versaoSistema: '1.0',
      dados: request.toJson().toString(),
    ),
  );

  final response = await _apiClient.post(
    '/Declarar',
    baseRequest,
    contratanteNumero: contratanteNumero,
    autorPedidoDadosNumero: autorPedidoDadosNumero,
  );
  return response_models.EntregarDeclaracaoResponse.fromJson(response);
}