Pular para o conteúdo principal

AlternativeUnitService

Visao Geral

O AlternativeUnitService fornece operacoes para buscar unidades alternativas de medida para produtos no backend de forma paginada.

Localizacao: services/alternative-unit/alternative-unit.service.ts

Endpoints

MetodoEndpointDescricao
GET/unidadeAlternativaLista unidades alternativas com paginacao

Metodos

fetchAlternativeUnitsRemote(params)

Busca unidades alternativas de medida de forma paginada, com opcao de filtro por produto.

Parametros

NomeTipoObrigatorio
params{ page?: number; size?: number; dataHora?: string; idProd?: string }Nao

Retorno: Promise<AlternativeUnit[]>

Exemplo

const alternativeUnits =
await alternativeUnitInstance.fetchAlternativeUnitsRemote({
page: 0,
size: 10,
});

console.log(alternativeUnits[0].produto); // "Parafuso"
console.log(alternativeUnits[0].unidadeMedida); // "Caixa"
console.log(alternativeUnits[0].quantidade); // 10

Com filtro por produto

const productUnits = await alternativeUnitInstance.fetchAlternativeUnitsRemote({
page: 0,
size: 10,
idProd: "PROD001",
});

console.log(productUnits.length); // Unidades alternativas do produto PROD001

Erros

StatusDescricao
4xx/5xxLanca Error: AlternativeUnitService.fetchAlternativeUnitsRemote failed: {status}

Estruturas de Dados

AlternativeUnit

interface AlternativeUnit {
id: string;
quantidade: number;
multipVlr: number;
divideMultiplica: string;
idUniMed: string;
unidadeMedida: string;
sigla: string;
idProduto: string;
produto: string;
idExterno: string;
idOrganization: string;
organization: string;
dhCriacao: string;
dhAlteracao: string;
}

PageResponse<T>

interface PageResponse<T> {
content: T[];
page?: number;
size?: number;
totalElements?: number;
}

Componentes Relacionados

ComponenteDescricao
MeasurementUnitServiceServico para buscar unidades de medida padrao
buildQueryParamsHelper para serializar parametros de query em requisicoes GET
apiWithoutAccessTokenInstancia Axios sem token de autenticacao

Casos de Uso

  • Buscar unidades alternativas de um produto para exibir em formularios de vendas
  • Sincronizar dados de unidades alternativas para uso offline
  • Converter quantidades entre unidades padroes e alternativas (usando multipVlr e divideMultiplica)

Testes

Localizacao: services/alternative-unit/alternative-unit.service.test.ts

Principais cenarios

CenarioResultado esperado
fetchAlternativeUnitsRemote status 200Retorna alternativeUnitResponseMock.content
fetchAlternativeUnitsRemote status 400Lanca AlternativeUnitService.fetchAlternativeUnitsRemote failed

Mocks

Localizacao: __mocks__/alternative-unit.mock.ts

  • alternativeUnitResponseMock - resposta paginada mockada com unidades alternativas (Caixa, Pacote, Unidade, Litro, Quilo, Metro, Peca, Saco, Galao)

Instancia

Localizacao: services/alternative-unit/alternative-unit.service.instance.ts

import { alternativeUnitInstance } from "@/services/alternative-unit/alternative-unit.service.instance";