f855568687
- Add deliveryFeeLocked field to Order model - Remove DELIVERY_FEE_ADJUSTMENT and PAYMENT_VERIFICATION statuses (11→8) - 3 order paths: delivery+online (locked→unlocked→paid), pickup+online (unlocked→paid), pickup+on_pickup (direct to in_progress) - Update checkout to use PENDING_PAYMENT + deliveryFeeLocked - Update payment flow to stay in PENDING_PAYMENT until admin confirms - Update admin UI to use deliveryFeeLocked instead of status check - Update client payment UI with new deliveryFeeLocked logic
38 lines
1.3 KiB
JavaScript
38 lines
1.3 KiB
JavaScript
export { ORDER_STATUSES } from '../../../shared/constants/order-status.js'
|
|
|
|
/**
|
|
* Переходы, которые делает админ через PATCH /api/admin/orders/:id/status
|
|
* (подтверждение получения пользователем — отдельный эндпоинт).
|
|
*/
|
|
export function canTransitionAdminOrderStatus(order, next) {
|
|
const from = order.status
|
|
const dt = order.deliveryType
|
|
if (from === next) return true
|
|
|
|
switch (from) {
|
|
case 'DRAFT':
|
|
return next === 'PENDING_PAYMENT' || next === 'CANCELLED'
|
|
case 'PENDING_PAYMENT':
|
|
return next === 'PAID' || next === 'CANCELLED'
|
|
case 'PAID':
|
|
return next === 'IN_PROGRESS' || next === 'CANCELLED'
|
|
case 'IN_PROGRESS':
|
|
if (next === 'CANCELLED') return true
|
|
if (dt === 'delivery') return next === 'SHIPPED'
|
|
if (dt === 'pickup') return next === 'READY_FOR_PICKUP'
|
|
return false
|
|
case 'SHIPPED':
|
|
case 'READY_FOR_PICKUP':
|
|
case 'DONE':
|
|
case 'CANCELLED':
|
|
return false
|
|
default:
|
|
return false
|
|
}
|
|
}
|
|
|
|
/** @deprecated используйте canTransitionAdminOrderStatus */
|
|
export function canTransitionOrderStatus(from, to) {
|
|
return canTransitionAdminOrderStatus({ status: from, deliveryType: 'delivery' }, to)
|
|
}
|