arpablos Posted May 19, 2015 Share Posted May 19, 2015 Buenas noches Estoy desarrollando un nuevo módulo para el BackOffice de PrestaShop 1.6. Tiene la peculiaridad de que a mi backoffice acceden varios vendedores. Se trata de un módulo de información personal del vendedor asociado a su usuario, donde aparecerá la ubicación de su tienda física, sus datos de contacto, nombre de su tienda, etc. Esa información irá ligada al usuario que se loga en el backoffice. He visto que la mayor parte de configuración de los módulos se guarda en la tabla ps_configuration, pero al tratarse de una entrada (tupla) por cada vendedor, entiendo que convendría crear una tabla para almacenar los datos de los vendedores en el método install, pero me gustaría que alguien con experiencia me diera su opinión. Por otra parte, se puede asociar un módulo a otro? Me explico, cuando dé de alta un usuario con un rol determinado (en este caso mis vendedores) puedo indicarle de alguna forma que se debe completar de forma adicional otra información para mi módulo personalizado? Si alguien me aporta un poco de luz se lo agradecería... Un saludo Link to comment Share on other sites More sharing options...
jesa Posted May 20, 2015 Share Posted May 20, 2015 Hola arpablos, Si son varios campos nuevos los que quieres introducir puedes crear una tabla nueva donde guardes también el id del empleado para que lo puedas relacionar. Si que es cierto que si no te quieres complicar la vida pon los campos en la tabla ps_employe ya que te ahorras mucho código al estar ya toda esa funcionalidad diseñada. En cuanto a vincular, lo mejor sería que dentro de la ficha del empleado pongas esos nuevos campos, según dices creo que lo que estás intentando es que se registre el empleado y después tener los nuevos datos en un módulo a parte... Al final lo más cómodo posiblemente no será hacer un módulo, sino cambiar las 2-3 clases que necesitas y listo. Link to comment Share on other sites More sharing options...
arpablos Posted May 20, 2015 Author Share Posted May 20, 2015 Hola arpablos, Si son varios campos nuevos los que quieres introducir puedes crear una tabla nueva donde guardes también el id del empleado para que lo puedas relacionar. Si que es cierto que si no te quieres complicar la vida pon los campos en la tabla ps_employe ya que te ahorras mucho código al estar ya toda esa funcionalidad diseñada. En cuanto a vincular, lo mejor sería que dentro de la ficha del empleado pongas esos nuevos campos, según dices creo que lo que estás intentando es que se registre el empleado y después tener los nuevos datos en un módulo a parte... Al final lo más cómodo posiblemente no será hacer un módulo, sino cambiar las 2-3 clases que necesitas y listo. Muchas gracias jesa! Seguramente meterlo en la tabla de empleado me simplifique el trabajo, pero igualmente debo crear un módulo adicional para mostrar los datos en el DashBoard, aunque tire de la tabla ps_employee o de una nueva que cree, debe dar lo mismo, entiendo. Luego pruebo y te comento. Un saludo y gracias Link to comment Share on other sites More sharing options...
ventura Posted May 20, 2015 Share Posted May 20, 2015 En la medida de lo posible como te indica jesa trata de utilizar funciones (con sus correspondientes consultas) que ya existen en vez de crear nuevas que utilicen los mismos registros Link to comment Share on other sites More sharing options...
arpablos Posted May 20, 2015 Author Share Posted May 20, 2015 (edited) En la medida de lo posible como te indica jesa trata de utilizar funciones (con sus correspondientes consultas) que ya existen en vez de crear nuevas que utilicen los mismos registros Ya que estáis...¿Podríais indicarme qué modulo exactamente controla toda la información del Empleado? O es en el core? Edito: Parece que tendría que tocar en classes/employee.php ... No me gusta tocar directamente el core...esto me puede traer más de un quebradero de cabeza para actualizaciones, no creéis? Lo voy a intentar con un módulo anexo, si no editaré el código directamente en el core...ya os cuento Edited May 20, 2015 by arpablos (see edit history) Link to comment Share on other sites More sharing options...
ventura Posted May 20, 2015 Share Posted May 20, 2015 Puedes acceder a ella desde el objeto $employee = new Employee(Tools::getValue('id_employee')); De donde tendras ->id ->id_profile ->id_lang ->lastname ->firstname ->email ->passwd ->last_passwd_gen ->stats_date_from ->stats_date_to ->stats_compare_from ->stats_compare_to ->stats_compare_option ->preselect_date_range ->bo_color ->default_tab ->bo_theme ->bo_width ->bo_menu ->bo_show_screencast ->active ->optin ->remote_addr ->id_last_order ->id_last_customer_message ->id_last_customer ->id_shop_list ->force_id Link to comment Share on other sites More sharing options...
jesa Posted May 22, 2015 Share Posted May 22, 2015 Como indica Ventura, tienes acceso a los datos del empleado creandote una instancia de empleado. Dicho esto, ten en cuenta que no todo se arregla con un módulo. Si necesitas modificar una clase o un controller, tienes la opción de hacerlo en el override. Si te haces un módulo te va a tocar posiblemente recontruir lo que ya existe y pierdes mucho tiempo. Te paso un enlace del manual de prestashop donde te dice como sobreescribir clases, controller, etc http://doc.prestashop.com/display/PS16/Overriding+default+behaviors Link to comment Share on other sites More sharing options...
arpablos Posted May 23, 2015 Author Share Posted May 23, 2015 Como indica Ventura, tienes acceso a los datos del empleado creandote una instancia de empleado. Dicho esto, ten en cuenta que no todo se arregla con un módulo. Si necesitas modificar una clase o un controller, tienes la opción de hacerlo en el override. Si te haces un módulo te va a tocar posiblemente recontruir lo que ya existe y pierdes mucho tiempo. Te paso un enlace del manual de prestashop donde te dice como sobreescribir clases, controller, etc http://doc.prestashop.com/display/PS16/Overriding+default+behaviors Gracias jesa y Ventura! Os cuento lo que he pensado, a ver si estoy en lo cierto. Voy a hacer un override de la clase y controlador del empleado, para que en el formulario de alta del nuevo empleado me pida los datos y guardarlos. Voy a crear un módulo a parte para poder mostrar en el DashBoard los datos adicionales del empleado, creando una instancia de empleado y obteniéndolos, por tanto, no necesito crear una nueva tabla. Tengo dos pequeñas dudas: Todo el código de Employee.php y de AdminEmployeesController.php debe aparecer en el Override? Entiendo que si pongo todo y modifico lo que quiera no habría problema... Cuando haga actualizaciones (además de las copias de seguridad habituales), la tabla ps_employee no me daría problemas? Las carpetas del override no se verían afectadas? Muchas gracias por vuestra ayuda Link to comment Share on other sites More sharing options...
jesa Posted May 23, 2015 Share Posted May 23, 2015 Al hacer el override dependerá de lo que tengas que hacer, hay veces que tienes que copiar el método entero y realizar los cambios y otras que solo tienes que realizar las modificaciones necesarias y llamar a su padre. Depende de cada caso... Cuando actualices hazte una copia de la bbdd también pero en principio no deberías perder los campos que has creado nuevos porque lo normal es que te añada campos o te borre, pero no elimina la tabla completa y la vuelve a crear por lo que no te afectaría a tus campos. Link to comment Share on other sites More sharing options...
arpablos Posted May 28, 2015 Author Share Posted May 28, 2015 Al hacer el override dependerá de lo que tengas que hacer, hay veces que tienes que copiar el método entero y realizar los cambios y otras que solo tienes que realizar las modificaciones necesarias y llamar a su padre. Depende de cada caso... Cuando actualices hazte una copia de la bbdd también pero en principio no deberías perder los campos que has creado nuevos porque lo normal es que te añada campos o te borre, pero no elimina la tabla completa y la vuelve a crear por lo que no te afectaría a tus campos. Muchas gracias jesa y ventura! Esta parte la doy por resuelta, porque ya he conseguido encontrarme. Ahora tengo nuevas dudas...si os pasáis por este nuevo post y me echáis una mano os lo agradecería. Lo he puesto a parte, porque aunque relacionado es una pregunta diferente. Infinitas gracias! 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