/** Batches resource – Production BC. */ import type { AxiosInstance } from 'axios'; import type { BatchDTO, BatchSummaryDTO, ConsumptionDTO, PlanBatchRequest, CompleteBatchRequest, RecordConsumptionRequest, CancelBatchRequest, } from '@effigenix/types'; export type BatchStatus = 'PLANNED' | 'IN_PRODUCTION' | 'COMPLETED' | 'CANCELLED'; export const BATCH_STATUS_LABELS: Record = { PLANNED: 'Geplant', IN_PRODUCTION: 'In Produktion', COMPLETED: 'Abgeschlossen', CANCELLED: 'Storniert', }; export type { BatchDTO, BatchSummaryDTO, ConsumptionDTO, PlanBatchRequest, CompleteBatchRequest, RecordConsumptionRequest, CancelBatchRequest, }; const BASE = '/api/production/batches'; export function createBatchesResource(client: AxiosInstance) { return { async list(status?: BatchStatus): Promise { const params: Record = {}; if (status) params.status = status; const res = await client.get(BASE, { params }); return res.data; }, async getById(id: string): Promise { const res = await client.get(`${BASE}/${id}`); return res.data; }, async getByNumber(batchNumber: string): Promise { const res = await client.get(`${BASE}/by-number/${batchNumber}`); return res.data; }, async plan(request: PlanBatchRequest): Promise { const res = await client.post(BASE, request); return res.data; }, async start(id: string): Promise { const res = await client.post(`${BASE}/${id}/start`); return res.data; }, async recordConsumption(id: string, request: RecordConsumptionRequest): Promise { const res = await client.post(`${BASE}/${id}/consumptions`, request); return res.data; }, async complete(id: string, request: CompleteBatchRequest): Promise { const res = await client.post(`${BASE}/${id}/complete`, request); return res.data; }, async cancel(id: string, request: CancelBatchRequest): Promise { const res = await client.post(`${BASE}/${id}/cancel`, request); return res.data; }, }; } export type BatchesResource = ReturnType;