feat(frontend): fulfillment split, API-driven topics, hub-and-spoke nav, stock-count modal, FOUND ceiling, semantic colors
- bug1: quote header fulfillment counter («رسید: X از Y قلم» amber / «تکمیل شد» green / «در راه»); expanded line items visually split into the received part (رسید شده ✓ + date + target warehouse from the receipt allocations) and the in-transit remainder — quantities always sum to the original line (invariant D holds, display-only split) - bug2: 8-topic grids (suppliers/wizard/units) now come from /material-categories via the store (new lib/topics.ts; fixed the mismatched «ابزار و تجهیزات ساخت» label); suppliers topic->category resolution no longer falls back to an arbitrary category; duplicate month/status lists reuse the shared dictionaries; TopicGrid gained a loading EmptyState - bug3: hub-and-spoke — the tab strip renders only on the warehouse dashboard; sub-views hide it and navigate back via «بازگشت به داشبورد»; «افزایش موجود» became the «تغییر موجودی» entry button - bug4: stock count goes through a confirmation modal (current vs counted vs variance with کسری/مازاد badges) before posting STOCK_COUNT; numbers parsed defensively - bug5: found qty is capped client-side (red input + inline warning, submit disabled) and backend returns 422 when exceeding the missing balance; fully-recovered losses drop off the pending list - bug6+7: quantities render as absolute values with semantic color coding (emerald inflow / rose outflow / blue neutral) across dashboard timeline, daily control and the change-inventory form
This commit is contained in:
@@ -14,6 +14,7 @@ import type {
|
||||
StandardConversion,
|
||||
Store,
|
||||
Supplier,
|
||||
Topic,
|
||||
UnitConversion,
|
||||
} from "../lib/types";
|
||||
|
||||
@@ -26,6 +27,7 @@ interface AppStore {
|
||||
categoryUnits: CategoryUnit[];
|
||||
unitConversions: UnitConversion[];
|
||||
standardConversions: StandardConversion[];
|
||||
topics: Topic[]; // دستهبندیهای ۸گانه — از /material-categories
|
||||
|
||||
// UI state
|
||||
expandedQuoteIds: Set<string>;
|
||||
@@ -63,6 +65,7 @@ export const useAppStore = create<AppStore>()((set) => ({
|
||||
categoryUnits: [],
|
||||
unitConversions: [],
|
||||
standardConversions: [],
|
||||
topics: [],
|
||||
|
||||
expandedQuoteIds: new Set<string>(),
|
||||
wizardStep: 1,
|
||||
@@ -77,6 +80,7 @@ export const useAppStore = create<AppStore>()((set) => ({
|
||||
categoryUnits: store.categoryUnits,
|
||||
unitConversions: store.unitConversions,
|
||||
standardConversions: store.standardConversions,
|
||||
topics: store.topics,
|
||||
}),
|
||||
addQuote: (q) => set((s) => ({ quotes: [...s.quotes, q] })),
|
||||
updateQuote: (id, patch) =>
|
||||
|
||||
Reference in New Issue
Block a user