mirror of
https://github.com/s-frick/effigenix.git
synced 2026-03-28 17:49:57 +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:
parent
fb8387c10e
commit
376557925a
15 changed files with 585 additions and 13 deletions
|
|
@ -31,6 +31,18 @@ export function useProductionOrders() {
|
|||
}
|
||||
}, []);
|
||||
|
||||
const releaseProductionOrder = useCallback(async (id: string) => {
|
||||
setState((s) => ({ ...s, loading: true, error: null }));
|
||||
try {
|
||||
const productionOrder = await client.productionOrders.release(id);
|
||||
setState({ productionOrder, loading: false, error: null });
|
||||
return productionOrder;
|
||||
} catch (err) {
|
||||
setState((s) => ({ ...s, loading: false, error: errorMessage(err) }));
|
||||
return null;
|
||||
}
|
||||
}, []);
|
||||
|
||||
const clearError = useCallback(() => {
|
||||
setState((s) => ({ ...s, error: null }));
|
||||
}, []);
|
||||
|
|
@ -38,6 +50,7 @@ export function useProductionOrders() {
|
|||
return {
|
||||
...state,
|
||||
createProductionOrder,
|
||||
releaseProductionOrder,
|
||||
clearError,
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
};
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue