feat(F-125): completed feature
This commit is contained in:
@@ -33,26 +33,39 @@ const ALLOWED_TRANSITIONS: Record<OrderState, OrderState[]> = {
|
||||
PENDING: ['AWAITING_PAYMENT', 'CANCELLED'],
|
||||
AWAITING_PAYMENT: ['PAID', 'CANCELLED'],
|
||||
PAID: ['PROCESSING', 'CANCELLED', 'REFUNDED'],
|
||||
PROCESSING: ['SHIPPED', 'CANCELLED', 'REFUNDED'],
|
||||
SHIPPED: ['DELIVERED', 'PARTIALLY_REFUNDED'],
|
||||
DELIVERED: ['PARTIALLY_REFUNDED'],
|
||||
PROCESSING: ['PAID', 'SHIPPED', 'CANCELLED', 'REFUNDED'],
|
||||
SHIPPED: ['PROCESSING', 'DELIVERED', 'PARTIALLY_REFUNDED'],
|
||||
DELIVERED: ['SHIPPED', 'PARTIALLY_REFUNDED'],
|
||||
CANCELLED: [],
|
||||
REFUNDED: [],
|
||||
PARTIALLY_REFUNDED: [],
|
||||
};
|
||||
|
||||
const ACTION_LABELS: Record<OrderState, string> = {
|
||||
AWAITING_PAYMENT: 'Marcar como Pagado',
|
||||
PAID: 'Procesar pedido',
|
||||
PROCESSING: 'Marcar como Enviado',
|
||||
SHIPPED: 'Marcar como Entregado',
|
||||
DELIVERED: 'Reembolso parcial',
|
||||
CANCELLED: 'Cancelar pedido',
|
||||
PENDING: 'Marcar como Pagado',
|
||||
REFUNDED: 'Reembolsar',
|
||||
PARTIALLY_REFUNDED: 'Reembolso parcial',
|
||||
// F-125: labels por par (origen, destino) — mismo target puede tener label distinto
|
||||
// según venga de un estado anterior (avance) o posterior (reversión).
|
||||
const ACTION_LABELS_BY_TRANSITION: Record<string, string> = {
|
||||
'PENDING>AWAITING_PAYMENT': 'Pasar a Esperando pago',
|
||||
'PENDING>CANCELLED': 'Cancelar pedido',
|
||||
'AWAITING_PAYMENT>PAID': 'Marcar como Pagado',
|
||||
'AWAITING_PAYMENT>CANCELLED': 'Cancelar pedido',
|
||||
'PAID>PROCESSING': 'Procesar pedido',
|
||||
'PAID>CANCELLED': 'Cancelar pedido',
|
||||
'PAID>REFUNDED': 'Reembolsar',
|
||||
'PROCESSING>PAID': 'Revertir a Pagado',
|
||||
'PROCESSING>SHIPPED': 'Marcar como Enviado',
|
||||
'PROCESSING>CANCELLED': 'Cancelar pedido',
|
||||
'PROCESSING>REFUNDED': 'Reembolsar',
|
||||
'SHIPPED>PROCESSING': 'Revertir a En preparación',
|
||||
'SHIPPED>DELIVERED': 'Marcar como Entregado',
|
||||
'SHIPPED>PARTIALLY_REFUNDED': 'Reembolso parcial',
|
||||
'DELIVERED>SHIPPED': 'Revertir a Enviado',
|
||||
'DELIVERED>PARTIALLY_REFUNDED': 'Reembolso parcial',
|
||||
};
|
||||
|
||||
function actionLabel(from: OrderState, to: OrderState): string {
|
||||
return ACTION_LABELS_BY_TRANSITION[`${from}>${to}`] ?? `Pasar a ${to}`;
|
||||
}
|
||||
|
||||
interface DraftItem {
|
||||
variantId: string;
|
||||
productId: string;
|
||||
@@ -369,7 +382,7 @@ export default function OrderDetailPage() {
|
||||
disabled={transitioning}
|
||||
className="px-4 py-2 bg-[#2D6A4F] hover:bg-[#1B4332] disabled:opacity-50 text-white text-sm font-semibold rounded-xl transition-colors"
|
||||
>
|
||||
{ACTION_LABELS[next] ?? next}
|
||||
{actionLabel(currentState, next)}
|
||||
</button>
|
||||
))}
|
||||
</div>
|
||||
@@ -635,7 +648,7 @@ export default function OrderDetailPage() {
|
||||
Confirmar cambio de estado
|
||||
</h3>
|
||||
<p className="text-sm text-gray-600 mb-4">
|
||||
¿{ACTION_LABELS[showConfirm] ?? showConfirm}? Se notificará al cliente por email.
|
||||
¿{actionLabel(currentState, showConfirm)}? Se notificará al cliente por email.
|
||||
</p>
|
||||
{showConfirm === 'SHIPPED' && (
|
||||
<div className="mb-4">
|
||||
|
||||
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user