/** * @file numberAutomat.js * @description Manages cached document numbering sequences (`GET /api/number`) * (e.g. delivery, entity) for the active company. Built via `createListAutomat`. * * Upstream Triggers: * - `authAutomat`: Via `createListAutomat` — triggers `load()` on `'authed'` with * a `selectedCompanyId`, and `reset()` on `'anon'`. * - UI / Routes: Manual calls to `load()` or `reload()`. */ import { number as numberApi } from '../api'; import { createListAutomat } from './createListAutomat'; /** * @typedef {Object} NumberSequence * @property {string|number} id Sequence id. * @property {string} type Document type key (e.g. `delivery`, `entity`). * @property {string} prefix Prefix rendered before the counter. * @property {number} padding Zero-padding width. * @property {number} next Next counter value. */ /** * Company document number sequences (`GET /api/number`). * * @type {import('react-automat').Automat} */ export const numberAutomat = createListAutomat({ name: 'number', fetch: async () => { const data = await numberApi.list(); return data.numbers ?? []; }, sort: (items) => [...items].sort((a, b) => String(a.type ?? '').localeCompare(String(b.type ?? ''), 'de'), ), }); export default numberAutomat;