PepeFernandez Posted June 11 Share Posted June 11 Buenas os escribo porque en mi empresa quieren sacar los albaranes Antes que las facturas. El problema es que cuando se crea el albaran, se crea el registro en order_invoice y cuando generan la factura sale a fecha de albarán. para intentar paliar con esto he hecho unas funciones en un override de orderInvocie que quiero llamar en el archivo que genera la factura ubicado en src/PrestaShopBundle/Controller/Admin/Sell/Order/OrderController.php /** * @AdminSecurity( * "is_granted('update', request.get('_legacy_controller'))", * message="You do not have permission to generate this." * ) * * Generates invoice for given order * * @param int $orderId * * @return RedirectResponse */ public function generateInvoiceAction(int $orderId): RedirectResponse { OrderInvoice::checkInvoiceDate($orderId); try { $this->getCommandBus()->handle(new GenerateInvoiceCommand($orderId)); $this->addFlash('success', $this->trans('Successful update.', 'Admin.Notifications.Success')); } catch (Exception $e) { $this->addFlash('error', $this->getErrorMessageForException($e, $this->getErrorMessages($e))); } return $this->redirectToRoute('admin_orders_view', [ 'orderId' => $orderId, ]); } y aquí llega mi problema, que no me lee OrderInvoice::checkInvoiceDate y no se como importar las funciones dentro del override de esa clase en este fichero. alguien sabe como importar la clase? o algún metodo mejor que no precise combiar este fichero? Link to comment Share on other sites More sharing options...
Eutanasio Posted June 25 Share Posted June 25 La forma más fácil en tu caso es no intentar llamar directamente a OrderInvoice::checkInvoiceDate() desde ese controlador moderno, porque no reconoce los overrides. En vez de eso, puedes hacer algo así dentro del método, justo antes de generar la factura: $order = new Order($orderId); $invoices = $order->getInvoicesCollection(); foreach ($invoices as $invoice) { if (method_exists($invoice, 'checkInvoiceDate')) { $invoice->checkInvoiceDate(); } } Así estarás usando la clase OrderInvoice con tu override activado, y puedes llamar tus funciones sin problemas. No necesitas importar nada raro ni tocar más ficheros. Solo asegúrate de q tu override esté bien escrito y en la carpeta correcta (override/classes/order/OrderInvoice.php). Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now