1
0
Fork 0
mirror of https://github.com/s-frick/effigenix.git synced 2026-03-28 17:04:49 +01:00

feat(tui): TUI für Produktionsauftrag-Freigabe, Bestandsreservierung und Reservierungs-Freigabe

- ProductionOrderCreateScreen: Nach Anlage Freigabe per [F] mit Statusanzeige
- StockDetailScreen: Reservierungen-Tabelle, Menü für Reservieren/Freigeben
- ReserveStockScreen: Neues Formular (Referenztyp, Referenz-ID, Menge, Einheit, Priorität)
- API-Client: release(), reserveStock(), releaseReservation() Methoden
- Hooks: releaseProductionOrder(), reserveStock(), releaseReservation()
- Types: ReservationDTO, StockBatchAllocationDTO, ReserveStockRequest exportiert
- DB: Migration 027 erweitert chk_production_order_status um RELEASED
This commit is contained in:
Sebastian Frick 2026-02-24 00:57:40 +01:00
parent fb8387c10e
commit 376557925a
15 changed files with 585 additions and 13 deletions

View file

@ -6,6 +6,7 @@ import type {
CreateStockRequest,
UpdateStockRequest,
StockFilter,
ReserveStockRequest,
} from '@effigenix/api-client';
import { client } from '../utils/api-client.js';
@ -123,6 +124,32 @@ export function useStocks() {
}
}, []);
const reserveStock = useCallback(async (stockId: string, request: ReserveStockRequest) => {
setState((s) => ({ ...s, loading: true, error: null }));
try {
const reservation = await client.stocks.reserveStock(stockId, request);
const stock = await client.stocks.getById(stockId);
setState((s) => ({ ...s, stock, loading: false, error: null }));
return reservation;
} catch (err) {
setState((s) => ({ ...s, loading: false, error: errorMessage(err) }));
return null;
}
}, []);
const releaseReservation = useCallback(async (stockId: string, reservationId: string) => {
setState((s) => ({ ...s, loading: true, error: null }));
try {
await client.stocks.releaseReservation(stockId, reservationId);
const stock = await client.stocks.getById(stockId);
setState((s) => ({ ...s, stock, loading: false, error: null }));
return true;
} catch (err) {
setState((s) => ({ ...s, loading: false, error: errorMessage(err) }));
return false;
}
}, []);
const clearError = useCallback(() => {
setState((s) => ({ ...s, error: null }));
}, []);
@ -137,6 +164,8 @@ export function useStocks() {
removeBatch,
blockBatch,
unblockBatch,
reserveStock,
releaseReservation,
clearError,
};
}