O método getExtratoAnchorFinanceiroAnalitico é responsável por fazer uma requisição HTTP para obter ou exportar um relatório analítico de transações financeiras de um estabelecimento. Ele aceita vários parâmetros, como o id do estabelecimento, datas de início e fim, filtros de busca, e opções de exportação. Inicialmente, o método valida o id, e se for inválido, retorna um erro. Em seguida, constrói o objeto params que contém os parâmetros da requisição, como projeção, status, offset, e outros parâmetros relevantes. Caso a operação seja uma exportação (isExport for true), ele ajusta a URL para o endpoint de exportação e adiciona o tipo de exportação 'anchor', enquanto o parâmetro limit é excluído dos parâmetros. No caso contrário (não exportação), o limite de registros (limit) é incluído. O método também permite a aplicação de filtros opcionais, como número de pedido, bandeira do cartão, e status de transação, personalizando a busca conforme as necessidades. O bloco de requisição HTTP muda dependendo se é uma exportação ou não. Se for exportação, o retorno é tratado como um arquivo Blob (para download). Caso contrário, o método processa a resposta como um objeto de dados, aplicando um filtro adicional na resposta recebida. A modificação principal feita foi mover a linha params['limit'] = limit para fora da condição de exportação, garantindo que o parâmetro limit seja incluído apenas em requisições que não sejam de exportação. Isso evita o envio desnecessário do parâmetro em operações de exportação. public getExtratoAnchorFinanceiroAnalitico( id, selectedSubSeller, dataInicialP, dataFinalP, offset, limit, projection, filters?, isExport?: boolean ): Observable<any> { console.log("POSSIBILIDADE 01"); if (id == null) { return observableThrowError(messages.erro_ec_invalido); } const params = this.crieParametroData(dataInicialP, dataFinalP); params['projection'] = projection; params['status'] = 0; params['offset'] = offset; // Adiciona o limite apenas se não for uma exportação if (!isExport) { params['limit'] = limit; } let url = `/api/v1/estabelecimento/${id}/extratos/split-payment/financeiro/transacoes/analitico`; if (isExport) { console.log("POSSIBILIDADE 01 AQUI"); url = `/api/v1/estabelecimento/${id}/extratos/split-payment/financeiro/transacoes/exportar/analitico`; params['exportType'] = 'anchor'; } if (selectedSubSeller) { params['subsellerId'] = selectedSubSeller.id; } if (typeof filters != 'undefined' && filters != null) { if (filters.aut) { params['nsu'] = filters.aut; } if (filters.numeroPedido) { params['orderNumber'] = filters.numeroPedido; } if (filters.bandeiras && filters.bandeiras.length > 0) { params['brandId'] = filters.bandeiras; } if (filters.idParceiro) { params['subsellerId'] = filters.idParceiro; } if (filters.status) { params['status'] = filters.status; if (filters.status == 'chargeback') { params['status'] = 'approved'; params['include'] = 'adjustments'; } } if (filters.modalidade) { params['methodId'] = filters.modalidade; } } console.log(params, 'parametros prontos'); const requestOptions: Object = { headers: new HttpHeaders({ 'Content-Type': 'text' }), params: params, responseType: 'blob' }; if (isExport) { return this.http.get<Blob>(pathValues.mcExtratos + url, requestOptions).pipe( map((response: Blob) => { return response; }), catchError((error: any) => { throw this.handleError(error); }) ); } else { return this.http.get<DefaultResponse>(pathValues.mcExtratos + url, { params: params }).pipe( retry(1), map(response => { return this.filter(response); }), catchError((error: any) => { throw this.handleError(error); }) ); } } Continue reading...