- 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
21 lines
884 B
TypeScript
21 lines
884 B
TypeScript
// ============================================================
|
|
// ثابتهای سراسری — برچسبهای UI ثابت (وضعیتها و ...)
|
|
// تاپیکها/دستهها اینجا نیستند — از API میآیند (lib/topics.ts)
|
|
// ============================================================
|
|
|
|
export const STATUS_LABEL: Record<string, string> = {
|
|
offered: "پیشنهاد شده",
|
|
accepted: "پذیرفته شده",
|
|
arrived: "رسیده",
|
|
rejected: "رد شده",
|
|
expired: "منقضی شده",
|
|
};
|
|
|
|
export const STATUS_ORDER = ["offered", "accepted", "arrived"];
|
|
|
|
// در ویرایش، وضعیت فقط میتواند به مراحل قبلی برگردد
|
|
export function statusOptionsFor(current: string): string[] {
|
|
const idx = STATUS_ORDER.indexOf(current);
|
|
return idx < 0 ? STATUS_ORDER : STATUS_ORDER.slice(0, idx + 1);
|
|
}
|