argonzalez Posted December 26, 2012 Share Posted December 26, 2012 (edited) Buenos días, estoy haciendo una tabla intermedia en Prestashop para un requisito que quiero para mi página, que relaciona ps_cart con ps_address, pero tengo miedo de que Prestashop pueda limpiar la tabla ps_cart y perder las referencias que quiero guardar, ¿sabeis si por algún motivo de ahorro de memoria o similar Prestashop puede limpiar esta tabla de manera automática? También saber si el autoincrement de esta tabla se reinicia en algún momento, porque de ser así tendría las mismas. Muchas gracias de antemano y un cordial saludo. Edited December 27, 2012 by argonzalez (see edit history) Link to comment Share on other sites More sharing options...
jesa Posted December 26, 2012 Share Posted December 26, 2012 Creo que a todas tus preguntas, la respuesta es NO. Tampoco estoy seguro al 100% xq no llevo tanto tiempo con páginas en producción como para que te ocurra algo así, pero no entendería que lo hiciera automático. En cuanto al incremet, dependerá del volumen de carritos que esperes para tu tienda, estamos hablando de 2 147 483 647....osea que tienes un margen bastante amplio para generar carritos. El mayor curro que te tocará será toda la gestión una vez que se crea o elimina el carrito o las direcciones. Por otra parte, desconozco que búscas, pero no te serviría el pedido? Lo digo xq seguro que tienes menos pedidos que carritos y en la mayoría no sabrás la dirección xq hasta que no guarden el pedido... 1 Link to comment Share on other sites More sharing options...
argonzalez Posted December 27, 2012 Author Share Posted December 27, 2012 Creo que a todas tus preguntas, la respuesta es NO. Tampoco estoy seguro al 100% xq no llevo tanto tiempo con páginas en producción como para que te ocurra algo así, pero no entendería que lo hiciera automático. En cuanto al incremet, dependerá del volumen de carritos que esperes para tu tienda, estamos hablando de 2 147 483 647....osea que tienes un margen bastante amplio para generar carritos. El mayor curro que te tocará será toda la gestión una vez que se crea o elimina el carrito o las direcciones. Por otra parte, desconozco que búscas, pero no te serviría el pedido? Lo digo xq seguro que tienes menos pedidos que carritos y en la mayoría no sabrás la dirección xq hasta que no guarden el pedido... Lo primero, muchas gracias por tu respuesta, te voy contando. Si, es un margen muy amplio, pero lo que te decía, me da miedo en algun momento perder las referencias, pero mientras siga ese margen es un problema que seguramente aborde más tarde. No puedo usar el pedido, es posible que por ignorancia de que me ofrece Prestashop, porque esa tabla la relleno con unos campos adicionales que meto en la parte de guardar "Su dirección de facturación", y ahí, através de los campos $this->context->cart->id y $address->id (AddressController.php) puedo guardar en la tabla intermedia los campos añadidos y esos dos para relacionar, y como al final del pedido mete el id del carro en ps_orders, desde ahí puedo relacionarlo perfectamente. O lo que te comentaba, es posible que me esté equicovando y el id del pedido lo genere antes y no al final y pueda usarlo. Si más adelante veo que me va a hacer falta y no encontramos la forma idonea, seguramente cree un trigger para cambiar el id_cart por el id_order al hacer un insert en ps_orders Link to comment Share on other sites More sharing options...
jesa Posted December 27, 2012 Share Posted December 27, 2012 Por lo que me comentas, estás en lo cierto que a la hora de elegir la dirección de facturación no tienes creado todavía el id del pedido. Entiendo que lo que quieres es que cuando un cliente hace un pedido, rellene unos datos adiccionales asociados a ese pedido. Si te das cuenta, el pedido no se guarda hasta que no se paga o finaliza el pedido, por lo que todos los datos que vas seleccionando(dirección, transportista, forma de pago,...) se van manteniendo y el insert se hace al final. Posiblemente puedas hacer lo mismo con tus campos y que el insert en tu nueva tabla se haga cuando el pedido se ha finalizado, de esta manera te evitarías tener basura en tu tabla y posiblemente te resulte mas sencillo al seguir la lógica que usa prestashop. 1 Link to comment Share on other sites More sharing options...
argonzalez Posted December 27, 2012 Author Share Posted December 27, 2012 Gracias por la rapidez de tu respuesta jesa. Esa solución se me había ocurrido, pero como estoy verde verde en prestahop me da miedo que en algún paso no pueda ir arrastrando la información por todas las pantallas, por si el usuario vuelve al menu principal, entra en un opción que no controle yo de la página o lo que sea donde se me haya escapado ir pasando esas variables. Por eso y porque como no se aun los tipos de pago que voy a implementar he preferido no ponerlo así, porque entiendo que según el tipo de pago habría que guardarlo desde un php o desde otro, y si se meten módulos y tal sería tocar el código más de lo que me gustaria, ¿o me equivoco con esto? ¿Como ves lo del trigger en la base de datos? Muchas gracias! Link to comment Share on other sites More sharing options...
jesa Posted December 27, 2012 Share Posted December 27, 2012 Si tienes conocimientos de programación no creo que te sea muy complicado... Si tienes el pago por pasos, en realidad lo que hace es recargar la misma página pero mostrando unos datos u otros según el paso en el que estás... En todo caso, si tienes libertad para definir el modo de pago, lo tienes mucho más fácil, cambia en el BO la forma de pedido para que sea en un único paso y así te ahorras todo lo demás. En cuanto a insertar esa información cuando pagas, por suerte tiene solución... En la clase PaymentModule hay un método que se llama validateOrder, este método es el que crea el pedido o lo modifica de estado en bbdd. Por lo tanto te vale con lo siguiente: Sobreescribe este método en la carpeta override. comprueba que tus métodos de pago llaman a este método(Por asegurarte, pero yo todos los que he probado lo hacen). Una vez modificado el pedido, metes tú tu código en el método que sobreescribes en el override. 1 Link to comment Share on other sites More sharing options...
argonzalez Posted December 27, 2012 Author Share Posted December 27, 2012 Muchas gracias jesa, me apunto todo Por mi parte se puede dar por solucionado este post, un saludo! Link to comment Share on other sites More sharing options...
jesa Posted December 27, 2012 Share Posted December 27, 2012 ok, me alegro y espero que te sirva. Si lo ves resuelto, tienes que editar el título y añadir (Solucionado) como puedes ver en otros hilos. Link to comment Share on other sites More sharing options...
argonzalez Posted December 27, 2012 Author Share Posted December 27, 2012 ok, me alegro y espero que te sirva. Si lo ves resuelto, tienes que editar el título y añadir (Solucionado) como puedes ver en otros hilos. Le intenté pero no vi como se editaba, por eso dejé el mensaje por si eran los administradores los que tenían que tocar, si me dices donde es lo apaño en un momento, gracias! Link to comment Share on other sites More sharing options...
Sergio Ruiz Posted December 27, 2012 Share Posted December 27, 2012 (edited) Le intenté pero no vi como se editaba, por eso dejé el mensaje por si eran los administradores los que tenían que tocar, si me dices donde es lo apaño en un momento, gracias! Para editar el titulo del tema, tienes que editar el primer mensaje del tema, pulsando en "editar" y despues en "usar editor completo" en ese momento podras editar el titulo del tema y añadir la palabra "Solucionado" al titulo. Saludos desde Pekin Edited December 27, 2012 by Rubalcaba (see edit history) 1 Link to comment Share on other sites More sharing options...
Recommended Posts