Cambiar estado de pedido según método de pago seleccionado

Cuando realizas un pedido en PrestaShop, dependiendo del método de pago seleccionado al confirmar se le asignará un estado por defecto al pedido, la mayoría de estados están pensados para que tengan sentido dentro del flujo de preparación y pago del pedido y no suelen requerir cambios.

No obstante puede haber casos en los que se quiera personalizar el estado del pedido tras confirmar la orden, para este fin sería necesario editar el fichero controllers/front/validation.php del módulo del método de pago a personalizar.

Por ejemplo, el módulo de pago contrareembolso (cash on delivery) define que cuando se realiza el pedido, el estado pasa a "Preparación en progreso", si prefieres cambiar este por otro, editarías el fichero:

ps_cashondelivery/controllers/front/validation.php

Locaza la llamada a la función validateOrder donde tendremos algo similar a:

$this->module->validateOrder(
    (int)$this->context->cart->id, 
    Configuration::get('PS_OS_PREPARATION'), 
    $total, 
    $this->module->displayName, 
    null, 
    array() , 
    null, 
    false, 
    $customer->secure_key
);

El estado se define en el segundo argumento pasado a la función, concretamente PS_OS_PREPARATION que modificaremos por el estado deseado dentro de los permitidos:

  • PS_OS_CHEQUE: En espera de pago por cheque
  • PS_OS_PAYMENT: Pago aceptado
  • PS_OS_PREPARATION: Preparación en curso
  • PS_OS_SHIPPING: Enviado
  • PS_OS_DELIVERED: Entregado
  • PS_OS_CANCELED: Cancelado
  • PS_OS_REFUND: Reembosado
  • PS_OS_ERROR: Error de pago
  • PS_OS_OUTOFSTOCK: Pedido pendiente por falta de stock (pagado)
  • PS_OS_BANKWIRE: En espero de pago por transferencia bancaria
  • PS_OS_WS_PAYMENT: Pago remoto aceptado
  • PS_OS_OUTOFSTOCK_PAID:Pedido pendiente por falta de stock (pagado)
  • PS_OS_OUTOFSTOCK_UNPAID: Pedido pendiente por falta de stock (no pagado)
  • PS_OS_COD_VALIDATION: En espera por validación de contra-reembolso

Importante recordar ante cualquier cambio de código, que estos se perderían al actualizar, por lo que es clave llevar un registro que te permita reproducir cualquier personalización tras actualizar.