Jump to content

benjamindiazg

Members
  • Posts

    6
  • Joined

  • Last visited

Profile Information

  • First Name
    Benjamin
  • Last Name
    Diaz

benjamindiazg's Achievements

  1. Finalmente he conseguido que funcione. Cuando un cliente realiza el pago de un pedido, o cuando lo hacemos desde el backoffice, se genera automáticamente la factura en una determinada ruta (en mi caso, en una carpeta nueva llamada pdf_order_invoices dentro de docs. Para ello he sobreescrito el método validateOrder de clase PaymentModule cambiándolo ligeramente, y he situado este nuevo fichero en override/classes/PaymentModule.php Él código es el siguiente: abstract class PaymentModule extends PaymentModuleCore { public function validateOrder($id_cart, $id_order_state, $amount_paid, $payment_method = 'Unknown', $message = null, $extra_vars = array(), $currency_special = null, $dont_touch_amount = false, $secure_key = false, Shop $shop = null) { //Código de PaymentModuleCore.validateOrder() hasta el bloque que viene comentado con "// Join PDF invoice" //Tras ese bloque, metemos el siguiente código //Para generar la factura y guardarla físicamente al realizarse el pago de un pedido, tanto en el frontoffice como en el backoffice // Creamos el registro de la factura en BD, en la tabla ps_order_invoice $order->setInvoice(true); //Obtenemos los datos de la factura $order_invoice_list_aux = $order->getInvoicesCollection(); //Instanciamos el objeto PDF con los datos de la factura $pdfAux = new PDF($order_invoice_list_aux, PDF::TEMPLATE_INVOICE, $this->context->smarty); //Generamos la factura $file_attachementAux = $pdfAux->render(false); //Damos el nombre al pdf que vamos a generar $nombreFicheroSalida = 'oi_'.str_pad((string)$order->id, 10,"0",STR_PAD_LEFT).'.pdf'; //Guardamos la factura en la ruta correspondiente file_put_contents(_PS_ROOT_DIR_."/docs/pdf_order_invoices/".$nombreFicheroSalida, $file_attachementAux); // FIN Codigo Añadido //Resto de código de validateOrder } }
  2. No consigo hacerlo. Estoy metiendo el siguiente codigo dentro de AdminPdfController, en la función generatePDF public function generatePDF($object, $template) { $pdf = new PDF($object, $template, Context::getContext()->smarty); $pdf->render(); // Añadido por mi $file_attachement['content'] = $pdf->render(false); $file_attachement['mime'] = 'application/pdf'; file_put_contents(_PS_ROOT_DIR_."/pdf_order_invoices/order.pdf", file_get_contents($file_attachement)); } Tengo que decir que soy nuevo en el mundo de Prestashop, así que es posible que esté poniendo alguna tonteria. Este código se lanza cuando generamos un fichero PDF, por ejemplo cuando pulsamos sobre la factura de un pedido. Evidentemente estoy haciendo algo mal, pero no consigo solucionarlo...
  3. Hola a todos! me gustaría poder guardar las facturas que se generan de los pedidos. Siempre que se genere un factura (por ejemplo al cambiar el pedido de estado), que se guarde dicho PDF físicamente en una carpeta. Lo necesito para después con un proceso externo, obtener dicha factura por FTP. ¿Alguien sabe como puedo hacerlo? Muchas gracias!
  4. Muchas gracias ventura, aunque al final no lo he hecho exactamente como dices, me has dado la pista. Hay una manera sencilla de quitar cabecera, pie, etc, y es al indicarle en el initContent que muestre la pantilla, asignarle una variable mediante smarty: class miModuloModuleFrontController extends ModuleFrontController { public function init() { parent::init(); } public function initContent() { parent::initContent(); $this->context->smarty->assign( array( 'content_only' => 1 ) ); $this->setTemplate('display.tpl'); } } content_only le indica directamente que no muestre nada más que lo indicado en display.tpl. Muchas gracias
  5. Hola a todos, soy nuevo en este foro y también en desarrollar módulos para prestashop 1.6. Lo que necesito hacer es algo en principio sencillo, pero no soy capaz de dar con ello. Mediante un módulo, estoy intentando meter una nueva página sencilla, que tenga un texto y un enlace que nos dirija a la home de la tienda. Realmente la manera de funcionar es la siguiente: - El módulo pone un determinado template en la home mediante hookDisplayHome. - En dicho template, habrá un enlace que nos lleve a la página que comentaba antes. - Dicha página, es la que tendrá el texto y un enlace a la home de la tienda. Pues este tercer punto es el que no consigo hacer. No quiero que aparezca ni header ni footer ni nada, tan sólo mi texto y el enlace en una página en blanco. Supongo que no debe ser muy complicado, pero no doy con ello. Espero haberme explicado bien... Gracias!
×
×
  • Create New...