fix inventory

This commit is contained in:
root
2026-06-11 11:06:41 -04:00
parent e8d1b8c1c7
commit 7365c14506
6 changed files with 635 additions and 3 deletions
+60 -3
View File
@@ -4,7 +4,7 @@
*/
import { apiFetch } from './http'
const BASE = '/api/v1/administrator/inventory'
const BASE = '/api/v1/inventory'
function q(searchParams: URLSearchParams): string {
const s = searchParams.toString()
@@ -18,7 +18,9 @@ export async function fetchInventoryIndex(
kind: InventoryKind,
searchParams: URLSearchParams,
): Promise<unknown> {
return apiFetch(`${BASE}/${kind}${q(searchParams)}`)
const params = new URLSearchParams(searchParams)
params.set('type', kind)
return apiFetch(`${BASE}/items?${params.toString()}`)
}
export async function postInventoryCategory(body: Record<string, unknown>): Promise<unknown> {
@@ -92,7 +94,11 @@ export async function postClassroomAudit(
}
export async function fetchInventorySummary(searchParams: URLSearchParams): Promise<unknown> {
return apiFetch(`${BASE}/summary${q(searchParams)}`)
const type = searchParams.get('type') || 'classroom'
const params = new URLSearchParams(searchParams)
params.delete('type')
const qs = params.toString()
return apiFetch(`${BASE}/summary/${type}${qs ? `?${qs}` : ''}`)
}
export async function fetchMovements(searchParams: URLSearchParams): Promise<unknown> {
@@ -156,3 +162,54 @@ export async function postTeacherBookDistribute(body: Record<string, unknown>):
body: JSON.stringify(body),
})
}
/* ─── New Inventory Improvement API Calls ─── */
/** Fetch low-stock items (quantity <= reorder_point). */
export async function fetchLowStock(): Promise<unknown> {
return apiFetch(`${BASE}/low-stock`)
}
/** Fetch reorder suggestions for low-stock items. */
export async function fetchReorderSuggestions(): Promise<unknown> {
return apiFetch(`${BASE}/reorder-suggestions`)
}
/** Fetch stock status for all items (ok/low_stock/out_of_stock). */
export async function fetchStockStatus(
searchParams: URLSearchParams,
): Promise<unknown> {
return apiFetch(`${BASE}/stock-status${q(searchParams)}`)
}
/** Fetch inventory dashboard summary counts. */
export async function fetchInventoryDashboard(
searchParams: URLSearchParams,
): Promise<unknown> {
return apiFetch(`${BASE}/dashboard${q(searchParams)}`)
}
/** Void a movement (append-only correction with reverse entry). */
export async function voidMovement(
movementId: string | number,
reason: string,
): Promise<unknown> {
return apiFetch(`${BASE}/movements/${movementId}/void`, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ reason }),
})
}
/** Create a correction movement linked to an existing movement. */
export async function correctMovement(
movementId: string | number,
qtyChange: number,
reason: string,
): Promise<unknown> {
return apiFetch(`${BASE}/movements/${movementId}/correct`, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ qty_change: qtyChange, reason }),
})
}