fix: duplicate shared/constants/ into client repo

This commit is contained in:
mpak
2026-06-11 14:35:28 +05:00
parent 17a93dde6b
commit 30c6969a9a
19 changed files with 494 additions and 142 deletions
+38
View File
@@ -0,0 +1,38 @@
export const ORDER_STATUSES = Object.freeze([
"DRAFT",
"PENDING_PAYMENT",
"PAID",
"IN_PROGRESS",
"SHIPPED",
"READY_FOR_PICKUP",
"DONE",
"CANCELLED",
]);
/**
* Допустимые переходы статусов, доступные админу.
* Значение — массив из next-статусов.
* Для IN_PROGRESS: объект с ключами по deliveryType.
*/
export const ADMIN_ORDER_TRANSITIONS = Object.freeze({
DRAFT: ["PENDING_PAYMENT", "CANCELLED"],
PENDING_PAYMENT: ["PAID", "CANCELLED"],
PAID: ["IN_PROGRESS", "CANCELLED"],
IN_PROGRESS: Object.freeze({
delivery: ["SHIPPED", "CANCELLED"],
pickup: ["READY_FOR_PICKUP", "CANCELLED"],
}),
});
export function getNextAdminStatuses(from, deliveryType) {
const transition = ADMIN_ORDER_TRANSITIONS[from];
if (!transition) return [];
if (Array.isArray(transition)) return [...transition];
return transition[deliveryType] ? [...transition[deliveryType]] : [];
}
export function canTransitionAdminOrderStatus(order, next) {
const from = order.status;
if (from === next) return true;
return getNextAdminStatuses(from, order.deliveryType).includes(next);
}