fix: duplicate shared/constants/ into client repo
This commit is contained in:
Executable
+38
@@ -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);
|
||||
}
|
||||
Reference in New Issue
Block a user