OperationTypeService
Visão Geral
O OperationTypeService fornece acesso aos tipos de operação configurados na API (ex: venda, compra, transferência, devolução). Ele suporta busca remota paginada, sincronização (sync) para armazenamento local e leitura do cache local.
Localização: services/operation-type/operation-type.service.ts
Endpoints
| Método | Endpoint | Descrição |
|---|---|---|
| GET | /tipoOperacao | Busca lista paginada de tipos |
Métodos
fetchRemote(params)
Busca tipos de operação na API remota com paginação e suporte a filtro por data.
Parâmetros
| Nome | Tipo | Obrigatório |
|---|---|---|
page | number | Não |
size | number | Não |
dataHora | string | Não |
Retorno: Promise<OperationType[]>
Exemplo
const types = await operationTypeService.fetchRemote({ page: 0, size: 50 });
Erros
| Status | Descrição |
|---|---|
| 5xx | Lança Error: OperationTypeService.fetchRemote failed: {status} |
sync(params)
Realiza fetchRemote, persiste o resultado no armazenamento local e retorna os dados.
Parâmetros
| Nome | Tipo | Obrigatório |
|---|---|---|
page | number | Não |
size | number | Não |
dataHora | string | Não |
Retorno: Promise<{ data: OperationType[] }>
Exemplo
const { data } = await operationTypeService.sync();
console.log(data.length);
list()
Retorna os OperationType armazenados localmente (cache/storage).
Parâmetros: nenhum
Retorno: Promise<OperationType[]>
Exemplo
const cached = await operationTypeService.list();
Estruturas de Dados
OperationType
interface OperationType {
id: string;
idOrganization: string;
idExterno: string | null;
idGrupoDeOperacao?: string | null;
grupoDeOperacao?: string | null;
nome: string;
nomeAlternativo?: string;
dhAlter: string;
value: string;
dhTipOper: string;
atualFin: "S" | "N";
nufop: string;
usarPrecoCusto: "S" | "N";
validaAgrupMin: "S" | "N";
provisEntrega: "S" | "N";
ipiEmbut: "S" | "N";
tempIpi: "S" | "N";
temIcms: "S" | "N";
formasDePagamentoProibidas: any[];
grupoProdutosProibidos: any[];
empresasProibidas: any[];
locaisProibidos: any[];
}
Nota: types relacionados (Company, PaymentMethod, etc.) aparecem como arrays na resposta.
Componentes Relacionados
| Componente | Descrição |
|---|---|
buildQueryParams | Serializa os parâmetros de query para a requisição |
apiWithoutAccessToken | Instância Axios sem token de acesso utilizada nas chamadas |
api | Instância Axios com configuração de autenticação |
PageResponse<T> | Tipo genérico de resposta paginada da API |
operation-type.storage | Helpers getOperationTypesStorage / setOperationTypesStorage para cache |
Casos de Uso
Buscar tipos remotos:
const types = await operationTypeService.fetchRemote();
Sincronizar tipos e gravar no storage:
await operationTypeService.sync({ size: 99999 });
Ler tipos do cache local:
const cached = await operationTypeService.list();
Testes
Localização: services/operation-type/operation-type.service.test.ts
| Cenário | Resultado esperado |
|---|---|
fetchRemote com status 200 | Retorna operationTypeResponseMock.content |
fetchRemote com status 500 | Lança Error: OperationTypeService.fetchRemote failed |
Mocks
Localização: __mocks__/operation-type.mock.ts
operationTypeResponseMock— objeto paginado comcontent(lista deOperationType) e metadados.
Exemplo de uso em testes:
import { operationTypeResponseMock } from "@/__mocks__/operation-type.mock";
const api: any = {
get: jest.fn(async () => ({ status: 200, data: operationTypeResponseMock })),
};
const service = new OperationTypeService({ apiWithoutAccessToken: api });
const result = await service.fetchRemote();
expect(result).toStrictEqual(operationTypeResponseMock.content);