Pular para o conteúdo principal

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étodoEndpointDescrição
GET/tipoOperacaoBusca 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

NomeTipoObrigatório
pagenumberNão
sizenumberNão
dataHorastringNão

Retorno: Promise<OperationType[]>

Exemplo

const types = await operationTypeService.fetchRemote({ page: 0, size: 50 });

Erros

StatusDescrição
5xxLança Error: OperationTypeService.fetchRemote failed: {status}

sync(params)

Realiza fetchRemote, persiste o resultado no armazenamento local e retorna os dados.

Parâmetros

NomeTipoObrigatório
pagenumberNão
sizenumberNão
dataHorastringNã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

ComponenteDescrição
buildQueryParamsSerializa os parâmetros de query para a requisição
apiWithoutAccessTokenInstância Axios sem token de acesso utilizada nas chamadas
apiInstância Axios com configuração de autenticação
PageResponse<T>Tipo genérico de resposta paginada da API
operation-type.storageHelpers 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árioResultado esperado
fetchRemote com status 200Retorna operationTypeResponseMock.content
fetchRemote com status 500Lança Error: OperationTypeService.fetchRemote failed

Mocks

Localização: __mocks__/operation-type.mock.ts

  • operationTypeResponseMock — objeto paginado com content (lista de OperationType) 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);