Sistema de quejas/disputas y reembolsos manuales en Zonix Eats. Penalizaciones por cancelación y reglas de resolución.
disputesCampos recomendados:
| Campo | Descripción |
|---|---|
order_id | Orden asociada |
opened_by | buyer |
reason | Motivo principal |
details | Descripción extendida (texto largo) |
status | open |
resolution | Texto con la decisión tomada |
refund_amount | Monto de reembolso (si aplica) |
penalty_amount | Penalización al comercio (si aplica) |
Relación:
class Dispute extends Model
{
public function order()
{
return $this->belongsTo(Order::class);
}
}
1. Buyer crea disputa sobre una orden entregada o cancelada.
2. Admin revisa evidencia (mensajes, fotos, historial de estado).
3. Admin decide:
- Reembolso total/parcial al Buyer.
- Penalización al Commerce.
- Sin acción (disputa rechazada).
4. Se actualiza Dispute y, si aplica, se registra Refund manual.
Modelo sugerido refunds:
| Campo | Descripción |
|---|---|
order_id | Orden asociada |
dispute_id | Disputa origen (nullable) |
amount | Monto devuelto |
method | Texto (transferencia, reverso tarjeta…) |
processed_by | Admin responsable |
notes | Detalles adicionales |
Reglas (ver README backend, sección penalizaciones):
paid o processing con justificación.cancellation_penalty en la orden.Campos en orders (ver zonix-order-lifecycle § 5):
$order->update([
'status' => 'cancelled',
'cancelled_by' => 'buyer|commerce|admin',
'cancellation_reason' => 'Razón',
'cancellation_penalty' => 0.00, // Penalidad si aplica
]);
GET /api/buyer/disputes → Ver mis disputas
POST /api/buyer/disputes → Crear disputa para una orden
GET /api/admin/disputes → Listar todas las disputas
GET /api/admin/disputes/{id} → Ver detalle
POST /api/admin/disputes/{id}/resolve → Resolver (refund/penalty/close)
zonix-order-lifecycle § 3-5.zonix-payments § 5-6.