F4 WEB: add Inventory function API client

This commit is contained in:
2026-09-07 21:45:09 -03:00
parent f20cc28045
commit 4caf6216de
+86
View File
@@ -0,0 +1,86 @@
import { apiRequest } from './api';
export interface InventoryFunction {
id: string;
code: string;
name: string;
description: string | null;
isActive: boolean;
sortOrder: number;
createdAt: string;
updatedAt: string;
}
export interface InventoryFunctionAssignment {
id: string;
assetId: string;
functionId: string;
functionCode: string;
functionName: string;
validFrom: string;
validUntil: string | null;
reason: string | null;
changedBy: string | null;
changedByUsername: string | null;
createdAt: string;
}
export interface InventoryFunctionHistory {
asset: {
id: string;
code: string;
name: string;
typeCode: string;
typeName: string;
familyCode: string | null;
familyName: string | null;
};
currentFunction: InventoryFunctionAssignment | null;
history: InventoryFunctionAssignment[];
}
export async function listInventoryFunctions(includeInactive = false) {
const query = includeInactive ? '?includeInactive=true' : '';
return (await apiRequest<{ data: InventoryFunction[] }>(`/inventory-functions${query}`)).data;
}
export function getInventoryFunctionHistory(assetId: string) {
return apiRequest<InventoryFunctionHistory>(`/assets/${assetId}/function-history`);
}
export function changeInventoryFunction(
assetId: string,
input: { functionId: string; effectiveAt?: string; reason?: string | null },
) {
return apiRequest<InventoryFunctionHistory>(`/assets/${assetId}/function`, {
method: 'POST',
body: JSON.stringify(input),
});
}
export function createInventoryFunction(input: {
code: string;
name: string;
description?: string | null;
sortOrder?: number;
}) {
return apiRequest<InventoryFunction>('/inventory-functions', {
method: 'POST',
body: JSON.stringify(input),
});
}
export function updateInventoryFunction(
id: string,
input: {
name?: string;
description?: string | null;
isActive?: boolean;
sortOrder?: number;
},
) {
return apiRequest<InventoryFunction>(`/inventory-functions/${id}`, {
method: 'PATCH',
body: JSON.stringify(input),
});
}