1
0
Fork 0
mirror of https://github.com/s-frick/effigenix.git synced 2026-03-28 11:59:35 +01:00

feat(tui): Bestandsbewegungen und Produktionsaufträge anbinden

- StockMovement: API-Client, Hook, List/Detail/Record-Screens mit Typ-Filter
- ProductionOrder: list/getById/start im API-Client, List/Detail-Screens mit Freigabe- und Start-Aktion
- Inventar-Menü um Bestandsbewegungen erweitert
- Produktionsmenü zeigt jetzt Auftragsliste statt direkt Create
- OpenAPI-Typen regeneriert (StockMovementResponse, StartProductionOrderRequest, batchId in ProductionOrderResponse)
This commit is contained in:
Sebastian Frick 2026-02-25 12:36:42 +01:00
parent 0474b5fa93
commit 7d721f9ef0
18 changed files with 1279 additions and 9 deletions

View file

@ -452,6 +452,22 @@ export interface paths {
patch?: never;
trace?: never;
};
"/api/production/production-orders/{id}/start": {
parameters: {
query?: never;
header?: never;
path?: never;
cookie?: never;
};
get?: never;
put?: never;
post: operations["startProductionOrder"];
delete?: never;
options?: never;
head?: never;
patch?: never;
trace?: never;
};
"/api/production/production-orders/{id}/release": {
parameters: {
query?: never;
@ -660,6 +676,26 @@ export interface paths {
patch?: never;
trace?: never;
};
"/api/inventory/stock-movements": {
parameters: {
query?: never;
header?: never;
path?: never;
cookie?: never;
};
/**
* List stock movements
* @description Filter priority (only one filter applied): stockId > articleId > batchReference > movementType > from/to
*/
get: operations["listMovements"];
put?: never;
post: operations["recordMovement"];
delete?: never;
options?: never;
head?: never;
patch?: never;
trace?: never;
};
"/api/customers": {
parameters: {
query?: never;
@ -996,6 +1032,38 @@ export interface paths {
patch?: never;
trace?: never;
};
"/api/inventory/stock-movements/{id}": {
parameters: {
query?: never;
header?: never;
path?: never;
cookie?: never;
};
get: operations["getMovement"];
put?: never;
post?: never;
delete?: never;
options?: never;
head?: never;
patch?: never;
trace?: never;
};
"/api/countries": {
parameters: {
query?: never;
header?: never;
path?: never;
cookie?: never;
};
get: operations["search"];
put?: never;
post?: never;
delete?: never;
options?: never;
head?: never;
patch?: never;
trace?: never;
};
"/api/users/{id}/roles/{roleName}": {
parameters: {
query?: never;
@ -1553,6 +1621,7 @@ export interface components {
id?: string;
recipeId?: string;
status?: string;
batchId?: string;
plannedQuantity?: string;
plannedQuantityUnit?: string;
/** Format: date */
@ -1564,6 +1633,9 @@ export interface components {
/** Format: date-time */
updatedAt?: string;
};
StartProductionOrderRequest: {
batchId: string;
};
PlanBatchRequest: {
recipeId: string;
plannedQuantity: string;
@ -1668,6 +1740,36 @@ export interface components {
BlockStockBatchRequest: {
reason: string;
};
RecordStockMovementRequest: {
stockId: string;
articleId: string;
stockBatchId: string;
batchId: string;
batchType: string;
movementType: string;
direction?: string;
quantityAmount: string;
quantityUnit: string;
reason?: string;
referenceDocumentId?: string;
};
StockMovementResponse: {
id: string;
stockId: string;
articleId: string;
stockBatchId: string;
batchId: string;
batchType: string;
movementType: string;
direction: string;
quantityAmount: number;
quantityUnit: string;
reason?: string | null;
referenceDocumentId?: string | null;
performedBy: string;
/** Format: date-time */
performedAt: string;
};
CreateCustomerRequest: {
name: string;
/** @enum {string} */
@ -1802,6 +1904,10 @@ export interface components {
/** Format: date-time */
updatedAt?: string;
};
CountryResponse: {
code?: string;
name?: string;
};
RemoveCertificateRequest: {
certificateType: string;
issuer?: string;
@ -2891,6 +2997,32 @@ export interface operations {
};
};
};
startProductionOrder: {
parameters: {
query?: never;
header?: never;
path: {
id: string;
};
cookie?: never;
};
requestBody: {
content: {
"application/json": components["schemas"]["StartProductionOrderRequest"];
};
};
responses: {
/** @description OK */
200: {
headers: {
[name: string]: unknown;
};
content: {
"*/*": components["schemas"]["ProductionOrderResponse"];
};
};
};
};
releaseProductionOrder: {
parameters: {
query?: never;
@ -3278,6 +3410,57 @@ export interface operations {
};
};
};
listMovements: {
parameters: {
query?: {
stockId?: string;
articleId?: string;
movementType?: string;
batchReference?: string;
from?: string;
to?: string;
};
header?: never;
path?: never;
cookie?: never;
};
requestBody?: never;
responses: {
/** @description OK */
200: {
headers: {
[name: string]: unknown;
};
content: {
"*/*": components["schemas"]["StockMovementResponse"][];
};
};
};
};
recordMovement: {
parameters: {
query?: never;
header?: never;
path?: never;
cookie?: never;
};
requestBody: {
content: {
"application/json": components["schemas"]["RecordStockMovementRequest"];
};
};
responses: {
/** @description OK */
200: {
headers: {
[name: string]: unknown;
};
content: {
"*/*": components["schemas"]["StockMovementResponse"];
};
};
};
};
listCustomers: {
parameters: {
query?: {
@ -3850,6 +4033,50 @@ export interface operations {
};
};
};
getMovement: {
parameters: {
query?: never;
header?: never;
path: {
id: string;
};
cookie?: never;
};
requestBody?: never;
responses: {
/** @description OK */
200: {
headers: {
[name: string]: unknown;
};
content: {
"*/*": components["schemas"]["StockMovementResponse"];
};
};
};
};
search: {
parameters: {
query?: {
q?: string;
};
header?: never;
path?: never;
cookie?: never;
};
requestBody?: never;
responses: {
/** @description OK */
200: {
headers: {
[name: string]: unknown;
};
content: {
"*/*": components["schemas"]["CountryResponse"][];
};
};
};
};
removeRole: {
parameters: {
query?: never;

View file

@ -30,3 +30,7 @@ export type BlockStockBatchRequest = components['schemas']['BlockStockBatchReque
export type ReservationDTO = components['schemas']['ReservationResponse'];
export type StockBatchAllocationDTO = components['schemas']['StockBatchAllocationResponse'];
export type ReserveStockRequest = components['schemas']['ReserveStockRequest'];
// Stock Movement types
export type StockMovementDTO = components['schemas']['StockMovementResponse'];
export type RecordStockMovementRequest = components['schemas']['RecordStockMovementRequest'];

View file

@ -30,3 +30,4 @@ export type CancelBatchRequest = components['schemas']['CancelBatchRequest'];
// Production Order types
export type ProductionOrderDTO = components['schemas']['ProductionOrderResponse'];
export type CreateProductionOrderRequest = components['schemas']['CreateProductionOrderRequest'];
export type StartProductionOrderRequest = components['schemas']['StartProductionOrderRequest'];