import { apiClient } from '@/lib/api/client'; import { buildQuery, type PaginatedResult } from '@/lib/api/types'; export type ItemTipo = 'produto' | 'servico'; /** Espelha o model `products_services`. */ export interface ProductService { id: string; tipo: ItemTipo; nome: string; descricao: string | null; sku: string | null; valor_venda: string; valor_custo: string | null; unidade: string; recorrente: boolean; ativo: boolean; criado_em: string; atualizado_em: string; } /** Espelha `CreateProductDto`/`UpdateProductDto` — `ativo` fica de fora (só via desativar). */ export interface ProductInput { tipo: ItemTipo; nome: string; descricao?: string; sku?: string; valor_venda: number; valor_custo?: number; unidade?: string; recorrente?: boolean; } export interface ListProductsParams { tipo?: ItemTipo; busca?: string; ativo?: boolean; page?: number; limit?: number; } export function listProducts(params: ListProductsParams) { return apiClient.get>(`/tenant/produtos${buildQuery(params)}`); } export function getProduct(id: string) { return apiClient.get(`/tenant/produtos/${id}`); } export function createProduct(input: ProductInput) { return apiClient.post('/tenant/produtos', input); } export function updateProduct(id: string, input: Partial) { return apiClient.put(`/tenant/produtos/${id}`, input); } /** Soft delete (`ativo: false`). */ export function deactivateProduct(id: string) { return apiClient.delete(`/tenant/produtos/${id}`); }