Hola @lorena_web30, @javierdeco tiene razón, el AdminOrdersController es uno de los controllers más delicados para tocar con overrides, precisamente porque es muy amplio y cualquier cambio puede generar inconsistencias o romperse con una actualización menor. La aproximación de añadir una acción directamente es posible, pero requiere mucho más trabajo en el front-end del BO para que sea usable, y el exit; que usas, como bien dices, es problemático porque interrumpe la ejecución del framework.
Para una funcionalidad de impresión tan específica y compleja como la generación de vales o cartas, que implica lógica de negocio, maquetación (HTML/PDF) y quizás gestión de plantillas, lo más recomendable es evitar los overrides directos en el core. Esto te garantiza que tu tienda seguirá funcionando sin problemas en futuras actualizaciones, incluso si migras a PrestaShop 9 con PHP 8.2 o superior.
Una forma más limpia de enfocar esto sería mediante un módulo propio con un ModuleAdminController dedicado. Así, tu lógica estaría encapsulada y podrías llamar a esta acción desde un botón en la vista de pedidos sin afectar el core. Aquí te dejo un ejemplo de cómo podrías estructurar la base de un controlador de módulo para manejar una acción de impresión:
// En /modules/mimpresora/controllers/admin/AdminMiImpresoraController.php
class AdminMiImpresoraController extends ModuleAdminController
{
public function __construct()
{
$this->bootstrap = true;
parent::__construct();
$this->table = 'order';
$this->className = 'Order';
$this->lang = false;
Este código crea un controlador de administración aislado para tu módulo. En lugar del exit;, rediriges al usuario de vuelta al pedido, o a una página de confirmación. La lógica para generar el PDF o el HTML del vale sería considerablemente más compleja y requeriría librerías o clases específicas. Por eso, para gestionar impresora de vales y sin tocar el código core, mi recomendación es utilizar un módulo ya desarrollado que se encargue de toda esta complejidad de forma robusta y mantenible, sin que tengas que programar desde cero y lidiar con los riesgos de los overrides.