Adrian Posted September 24, 2019 Share Posted September 24, 2019 Hola. Hay alguna manera de editar la factura PDF para que me salga otro campo? Necesito lo siguiente. Ahora me sale esto: Y donde dice producto necesito que salga el campo c贸digo ISBN. Es esto posible? 聽 Link to comment Share on other sites More sharing options...
Prestafan33 Posted September 24, 2019 Share Posted September 24, 2019 En principio s铆 que es posible. Mira en /classes/pdf/HTMLTemplateInvoice.php. Seguramente ah铆 puedas modificarlo. 1 Link to comment Share on other sites More sharing options...
Adrian Posted September 24, 2019 Author Share Posted September 24, 2019 Gracias! Ma帽ana lo miro y te digo algo. Link to comment Share on other sites More sharing options...
Adrian Posted September 25, 2019 Author Share Posted September 25, 2019 (edited) Sabrias que parte tengo que editar @prestafan33? Veo mucho c贸digo y no se si sustituir todo los "product" por "isbn" o como ser铆a.聽 Edited September 25, 2019 by Adrian (see edit history) Link to comment Share on other sites More sharing options...
Prestafan33 Posted September 25, 2019 Share Posted September 25, 2019 (edited) Bien, lo he estado mirando con m谩s detenimiento. Creo que el archivo que hay que modificar no es el que te he puesto, sino que es la plantilla PDF, que estar铆a en /pdf/invoice.product-tab.tpl. Es posible que dentro de tu tema tengas este mismo directorio. Si es as铆, las modificaciones deber铆as hacerlas ah铆 (en /theme/nombre-de-tu-tema/pdf/invoice.product-tab.tpl. Si no tienes ese directorio, deber铆as copiar聽el directorio /pdf/ con todo su contenido dentro de la carpeta de tu tema, y luego ya ah铆 modificar el archivo invoice.product-tab.tpl. Una vez lo tengas ubicado, alrededor de la l铆nea 30 tendr铆as: <th class="product header small" width="{$layout.product.width}%">{l s='Product' d='Shop.Pdf' pdf='true'}</th> ... y deber铆as cambiarlo por: <th class="product header small" width="{$layout.product.width}%">{l s='ISBN' d='Shop.Pdf' pdf='true'}</th> y luego en la l铆nea 54: {if $display_product_images} <table width="100%"> <tr> <td width="15%"> {if isset($order_detail.image) && $order_detail.image->id} {$order_detail.image_tag} {/if} </td> <td width="5%"> </td> <td width="80%"> {$order_detail.product_name} </td> </tr> </table> {else} {$order_detail.product_name} {/if} ... modificarlo as铆: {if $display_product_images} <table width="100%"> <tr> <td width="15%"> {if isset($order_detail.image) && $order_detail.image->id} {$order_detail.image_tag} {/if} </td> <td width="5%">聽</td> <td width="80%"> {$order_detail.product_isbn} </td> </tr> </table> {else} {$order_detail.product_isbn} {/if} No lo he probado, pero si en los productos de $order_detail va incluido el ISBN (que creo que s铆), deber铆a funcionar. Edited September 25, 2019 by Prestafan33 (see edit history) 1 Link to comment Share on other sites More sharing options...
Adrian Posted September 25, 2019 Author Share Posted September 25, 2019 Gracias聽Prestafan33. Ahora si que sale la columna ISBN pero por m谩s que pongo un c贸digo se queda en blanco. Es algo raro pero por lo menos ya es una avance. Te comento si me sale algo. Link to comment Share on other sites More sharing options...
Prestafan33 Posted September 25, 2019 Share Posted September 25, 2019 1 hour ago, Adrian said: Gracias聽Prestafan33. Ahora si que sale la columna ISBN pero por m谩s que pongo un c贸digo se queda en blanco. Es algo raro pero por lo menos ya es una avance. Te comento si me sale algo. Creo que el nombre del atributo en $order_detail es product_isbn en vez de "isbn" a secas. He actualizado el c贸digo arriba (el 煤ltimo bloque). S贸lo es cambiar donde hab铆a puesto "isbn" por "product_isbn". Mira a ver si as铆 te funciona. 1 Link to comment Share on other sites More sharing options...
Adrian Posted September 25, 2019 Author Share Posted September 25, 2019 (edited) Vale Prestafan33. Eso si que me ha servido!聽馃槄 Ahora una 煤ltima pregunta, espero no molestarte mucho >.< Sabes donde puedo tocar para poder poner letras en el c贸digo ISBN. Estoy intentando "enga帽ar" a prestashop porque en s铆 no es un c贸digo ISBN. Son c贸digos con n煤meros y letras. Sabrias donde modificarlo para que me permita hacer eso? Si me sale eso ya estar铆a todo 聽 Me estas ayudando un mont贸n 聽 Edited September 25, 2019 by Adrian (see edit history) Link to comment Share on other sites More sharing options...
Prestafan33 Posted September 25, 2019 Share Posted September 25, 2019 (edited) 15 minutes ago, Adrian said: Ahora una 煤ltima pregunta, espero no molestarte mucho >.< Sabes donde puedo tocar para poder poner letras en el c贸digo ISBN. Estoy intentando "enga帽ar" a prestashop porque en s铆 no es un c贸digo ISBN. Son c贸digos con n煤meros y letras. Sabrias donde modificarlo para que me permita hacer eso? Si me sale eso ya estar铆a todo En /classes/Product.php, hacia la l铆nea 316, tienes la validaci贸n de los campos que componen la clase "producto", concretamente el ISBN est谩 en la l铆nea 335 (en la versi贸n 1.7.5, que es donde lo estoy mirando): 'isbn' => array('type' => self::TYPE_STRING, 'validate' => 'isIsbn', 'size' => 32), si vas a meter algo que sea texto, se podr铆a poner que simplemente validase que sea una cadena alfanum茅rica y nada m谩s: 'isbn' => array('type' => self::TYPE_STRING, 'validate' => 'isString', 'size' => 32), Si quieres variar la longitud m谩xima tambi茅n puedes cambiar el valor de "size". Ten en cuenta que esta modificaci贸n se perder谩 si haces luego una actualizaci贸n de Prestashop a otra versi贸n. Para que no fuera as铆 habr铆a que hacer un override, extendiendo la clase Product, pero eso ya es un poco m谩s complicado. Edited September 25, 2019 by Prestafan33 (see edit history) 1 Link to comment Share on other sites More sharing options...
Adrian Posted September 25, 2019 Author Share Posted September 25, 2019 Bueno, de momento no tengo pensado hacer ninguna actualizaci贸n ya que estoy en la version 1.7.4.3 y estoy bastante c贸modo y sin problemas. Voy a probar y te digo. Link to comment Share on other sites More sharing options...
Adrian Posted September 25, 2019 Author Share Posted September 25, 2019 De momento me sigue diciendo que no se puede. En mi versi贸n tengo lo mismo que t煤 pero no en la 300 y pico si no en la l铆nea 100 m谩s o menos. Link to comment Share on other sites More sharing options...
Prestafan33 Posted September 25, 2019 Share Posted September 25, 2019 (edited) Veo que la validaci贸n la realiza en m谩s sitios, como en los controladores, y no solo en la clase Product. De modo que tal vez lo m谩s sencillo sea modificar la funci贸n "isIsbn", que es la que creo que se utiliza en todas partes. Para ello en /classes/Validate.php, tienes esa funci贸n: public static function isIsbn($isbn) { return !$isbn || preg_match('/^[0-9-]{0,32}$/', $isbn); } Lo que hace es comprobar que la cadena s贸lo contiene n煤meros o guiones y que tiene entre 0 y 32 caracteres. Habr铆a que modificar la regex para que realice la validaci贸n que quieras. Por ejemplo, si quieres poder incluir tambi茅n letras (may煤sculas y min煤sculas): public static function isIsbn($isbn) { return !$isbn || preg_match('/^[a-zA-Z0-9-]{0,32}$/', $isbn); } Una vez hayas hecho esa modificaci贸n, la anterior que te coment茅 en la clase Product la聽puedes quitar y dejarlo como estaba. Edited September 25, 2019 by Prestafan33 (see edit history) 1 Link to comment Share on other sites More sharing options...
Adrian Posted September 25, 2019 Author Share Posted September 25, 2019 (edited) Mmmmm parece que no funciona. Me dice que es invalido. Sigo buscando. 聽 PD: Me acabo de dar cuenta de que tampoco est谩 detectando que le he puesto 120 car谩cteres聽馃槩 Edited September 25, 2019 by Adrian (see edit history) Link to comment Share on other sites More sharing options...
Adrian Posted September 25, 2019 Author Share Posted September 25, 2019 return !$isbn || preg_match('/^[a-zA-Z0-9-]{0,120}$/', $isbn); Eso es lo que tengo actualmente Link to comment Share on other sites More sharing options...
Prestafan33 Posted September 25, 2019 Share Posted September 25, 2019 (edited) Los 120 caracteres no te los va a coger a menos que modifiques el campo "isbn" en la tabla de productos de la base de datos, porque tendr谩 la longitud limitada a 32. Lo de poder introducir letras, con eso que has puesto deber铆a pasar la validaci贸n, aunque no s茅 si en alg煤n otro sitio habr谩 m谩s comprobaciones adicionales. Edited September 25, 2019 by Prestafan33 (see edit history) 1 Link to comment Share on other sites More sharing options...
Adrian Posted September 25, 2019 Author Share Posted September 25, 2019 Vale, muchas gracias.聽Mirar茅 que puedo hacer y lo comentar茅 por aqu铆. Link to comment Share on other sites More sharing options...
Adrian Posted September 25, 2019 Author Share Posted September 25, 2019 Donde encontraste esa tabla? Disculpas las molestias @Prestafan33聽pero es que todos estos temas de "programaci贸n" se me escapan por todos lados... Link to comment Share on other sites More sharing options...
Prestafan33 Posted September 25, 2019 Share Posted September 25, 2019 Esa tabla est谩 en la base de datos, es la que se llama ps_product (es posible que tenga otro prefijo diferente de "ps_", eso se elige durante la instalaci贸n). 1 Link to comment Share on other sites More sharing options...
Adrian Posted September 25, 2019 Author Share Posted September 25, 2019 (edited) Culpa mia... Estaba buscando en una sola p谩gina sin darme cuenta que tenia 7 m谩s. Eso ya esta hecho. Voy a ver si funciona. 聽 Sigue sin funcionar. No lo entiendo. Estoy gafado... Y... 聽 Tambi茅n he visto que hay m谩s tablas con "isbn" y las estoy cambiando. Veremos. Edited September 25, 2019 by Adrian (see edit history) Link to comment Share on other sites More sharing options...
Adrian Posted September 26, 2019 Author Share Posted September 26, 2019 Pues de momento nada. No lo entiendo Link to comment Share on other sites More sharing options...
Adrian Posted September 26, 2019 Author Share Posted September 26, 2019 (edited) Vale. Si que me funciona desde ayer pero me he equivocado. Yo quiero que me funcione el ISBN de cada combinaci贸n. Ahora me funciona el del producto.聽 Producto: (funciona) Combinaci贸n: (no funciona) Edited September 26, 2019 by Adrian (see edit history) Link to comment Share on other sites More sharing options...
Prestafan33 Posted September 26, 2019 Share Posted September 26, 2019 Para las combinaciones, tienes que modificar el tama帽o del campo "isbn" en la tabla ps_product_attribute. La funci贸n de validaci贸n que use supongo que sea la misma, por lo que con los cambios de ayer ah铆 ser铆a suficiente. 1 Link to comment Share on other sites More sharing options...
Adrian Posted September 26, 2019 Author Share Posted September 26, 2019 Mmmmm no, en esa ya lo cambi茅 ayer :s Link to comment Share on other sites More sharing options...
Adrian Posted September 27, 2019 Author Share Posted September 27, 2019 (edited) Vale! Por fin! Solo tenia que cambiar la siguiente configuraci贸n! No hacia falta entrar a la BD. src/PrestaShopBundle/Form/Admin/Product/ProductCombination.php Muchas gracias por la ayuda @Prestafan33, de verdad. Edited September 27, 2019 by Adrian (see edit history) Link to comment Share on other sites More sharing options...
Prestafan33 Posted September 27, 2019 Share Posted September 27, 2019 Me alegro que lo hayas resuelto. Ya imaginaba que la validaci贸n la estaba realizando en el formulario, ayer estuve mirando los archivos JS del tema admin pensando que estaba ah铆, pero no lo localizaba. Pero al final lo has encontrado t煤 solo, enhorabuena. 1 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