ctapia Posted March 29, 2019 Share Posted March 29, 2019 (edited) Buenas Estoy usando Prestashop 1.6.1.23, con cPanel y quisiera hacer lo siguiente: Mi idea: Hacer un módulo (mymodule.php), que lea los archivos .csv para modificar el estado de los pedidos. Aún no lo tengo muy claro como hacerlo, pero sí que se usa principalmente en PHP, MYSQL, html, queria saber que pasos seguir, ya se puede modificar el estado de un pedido la base de datos directamente en Codigo MYSQL, pero quisiera que este código ej. se ejecuta automáticamente. (La solución junto con el módulo para que lo descargues esta al final del post) Edited April 4, 2019 by ctapia (see edit history) Link to comment Share on other sites More sharing options...
burrots Posted March 30, 2019 Share Posted March 30, 2019 (edited) 5 hours ago, ctapia said: Aun no lo tengo muy claro como hacerlo, pero se que se usa principalmente PHP, MYSQL, html, Suerte amigo. Lo que necesitas no es algo q se pueda explicar en unas pocas linias, una cosa es hacer una update simple en la base d datos y otra es programar un modulo sin saber código. PD: para q utilziar id y reference? UPDATE ps_orders SET current_state = 2 WHERE id_order = xxxxxx Edited March 30, 2019 by burrots (see edit history) 1 Link to comment Share on other sites More sharing options...
gusman126 Posted March 30, 2019 Share Posted March 30, 2019 Si quieres que se ejecute una orden cada X tiempo (ordenes cron o tareas programadas), necesitas desarrollo en PHP y añadir el codigo en un fichero PHP , por ejemplo la orden que te ha dado burrots, obviamente faltan muchas lineas de codigo. Luego debes añadir la url de ese php a una orden cron y programarla para que lo haga cada X tiempo. Ademas si siempre sera el mismo pedido ok, pero si el pedido es diferente deberas añadir mas codigo al desarrollo para poder cambiar de alguna manera el id_order. El Prestashop tiene opciones y codigo interno que puedes llamar para no cambiar directamente en la base de datos la información, de esa manera si existe algun modulo o hook relacionado a ese cambio en el pedido o en su estado se ejecutara, por ej: enviar un email al cambiar el estado a enviado. Link to comment Share on other sites More sharing options...
Rodrigo B Laurindo Posted March 30, 2019 Share Posted March 30, 2019 (edited) @ctapia, como ha dicho @gusman126, debes usar las funciones nativas de PrestaShop para cambiar informaciones en la BD. Tendrás problemas si cambias directamente por MySQL. Por ejemplo, con el comando que has hecho, los emails no serán enviados, los pedidos no serán validados (fallarán las estadísticas), no tendrás el historial de estados de pedidos, y otras cosas más. Si quieres, llámame por PM y te hago um presupuesto para un módulo. Edited March 30, 2019 by Rodrigo B Laurindo (see edit history) 1 Link to comment Share on other sites More sharing options...
ctapia Posted April 3, 2019 Author Share Posted April 3, 2019 @burrotsEl id lo usaria para encontrar el pedido que quiero modificar su estado, y con la referencia mas seria mas seguro de que no falle el UPDATE. @gusman126No entiendo muy bien como hacer esas tareas programadas, pero parece ser una solucion, no sera el mismo pedido cada vez, sino sera el mismo archivo pero con diferentes datos que seran usados como parametros para que se actualicen en la base de datos con ese script, tendras algun link sobre esto?. @Rodrigo B LaurindoEn seguida te hablo, pero quisiera hacer el codigo para aprender tambien, cuales serian esas funciones nativas? Gracias por su ayuda. Link to comment Share on other sites More sharing options...
Rodrigo B Laurindo Posted April 3, 2019 Share Posted April 3, 2019 @ctapia, tienes que hacer todas las operaciones con las clases nativas de PrestaShop, como StockAvailable, Products, Order, OrderHistory... Lleva tiempo te especificar el código, pero seguro que encuentras en Google. 2 Link to comment Share on other sites More sharing options...
gusman126 Posted April 3, 2019 Share Posted April 3, 2019 Aqui una lista, la hice para mi, puedes copiarla y guardarla en tu propia pagina, o donde quieras. https://gmartos.es/indice-de-classes-y-metodos-de-prestashop/ 1 Link to comment Share on other sites More sharing options...
burrots Posted April 3, 2019 Share Posted April 3, 2019 55 minutes ago, gusman126 said: Aqui una lista, la hice para mi, puedes copiarla y guardarla en tu propia pagina, o donde quieras. https://gmartos.es/indice-de-classes-y-metodos-de-prestashop/ osti muy completa. creo q es la primera vez en un mismo lugar todos los metodos disponibles. estan los d PS 1.7? genial 1 Link to comment Share on other sites More sharing options...
gusman126 Posted April 3, 2019 Share Posted April 3, 2019 (edited) hace 34 minutos, burrots dijo: osti muy completa. creo q es la primera vez en un mismo lugar todos los metodos disponibles. estan los d PS 1.7? genial A mi me va de PM , la suelo consultar cada dia, ademas del fichero que tengo llamado "codigo muy usado", supongo que todos tenemos uno de estos. Pues los nuevos de PS 1.7 no, Deberia añadirlos en una pagina independiente, a ver si me decido un dia y los busco y añado. Gracias Edited April 3, 2019 by gusman126 (see edit history) Link to comment Share on other sites More sharing options...
ctapia Posted April 3, 2019 Author Share Posted April 3, 2019 @gusman126Gracias por el aporte man, por si acaso no sabes que otros archivos debo tocar para hacer el modulo?, porque hasta donde tengo el modulo, se ve la parte de html,pero cuando hago click sobre el boton me dirige a una pagina en php que le asigne pero no se ejecuta el script que escribi, no se si sea la conexion con la base de datos o es que debo darle algun persmiso para que se ejecute el codigo en php. Link to comment Share on other sites More sharing options...
burrots Posted April 3, 2019 Share Posted April 3, 2019 copia el codigo de los archivos php y tpl y te lo arreglamos todo. Somos asi de majos. 😁 1 Link to comment Share on other sites More sharing options...
burrots Posted April 3, 2019 Share Posted April 3, 2019 (edited) 1 hour ago, gusman126 said: A mi me va de PM , la suelo consultar cada dia, ademas del fichero que tengo llamado "codigo muy usado", supongo que todos tenemos uno de estos. Pues yo no. Cada vez q necesito algo miro directamente los archivos. soy asi d básico y rudimentario. 🤣 Edited April 3, 2019 by burrots (see edit history) 1 1 Link to comment Share on other sites More sharing options...
ctapia Posted April 3, 2019 Author Share Posted April 3, 2019 (edited) @burrotsEste es todo el codigo que tengo hasta el momento, le agradezco su ayuda. Lo que hice hasta el momento, agregue una pagina mas en el /Controllers/front es el archivo "MyUpdateController.php", enlazandolo con el archivo "my_update.tpl" que fue creado en /themes/default-bootstrap/. Los otros 2 archivos los uso para ejecutarlos en el cPanel de Mysql. De nuevo gracias por la ayuda. Aviseme si estoy omitiendo algo, o cometiendo algun error. Hastael momento no hace efecto la ejecucion del codigo .php para hacer UPDATE a la BD Formato del update en mysql para actualizar el estado(Funciona directamente en la base de datos) my_update.tpl MyUpdateController.php select para ver los pedidos con su estado Edited April 3, 2019 by ctapia (see edit history) Link to comment Share on other sites More sharing options...
burrots Posted April 3, 2019 Share Posted April 3, 2019 (edited) cambia este archivo y comprueba MyUpdateController.php No se actuliza al darle al boton, simplemente al acceder a la url Edited April 3, 2019 by burrots (see edit history) 2 Link to comment Share on other sites More sharing options...
burrots Posted April 3, 2019 Share Posted April 3, 2019 olvida ultimo post. tu planteamiento incial no era correcto. te preparado modulo: pporderstateassign.rar lo instalas creas un csv, dos columnas 1 - id_order 2 - id_order_state (decias la 2, pr bueno por si kieres ponerle otros estados) cargas csv en el modulo desdel backoffice y magia..... ya me peudes llenar d corazoncitos todas las respuestas mias q veas en este y otros posts 🤣🤣🤣🤣 PD: no lo he probado, no tengo PS 1.6 ahora instalado y me da pereza ponerlo, cualquier cosa me avisas 2 Link to comment Share on other sites More sharing options...
Rodrigo B Laurindo Posted April 3, 2019 Share Posted April 3, 2019 6 minutes ago, burrots said: ya me peudes llenar d corazoncitos todas las respuestas mias q veas en este y otros posts 🤣🤣🤣🤣 Por 150 corazoncitos te hago uno con cronjob y update por clases! 2 Link to comment Share on other sites More sharing options...
burrots Posted April 3, 2019 Share Posted April 3, 2019 (edited) 4 minutes ago, Rodrigo B Laurindo said: Por 150 corazoncitos te hago uno con cronjob y update por clases! haber si es verdad y me lo da, le he hecho modulillo altrusitamente. Seguro q le dado una alegria, es justo lo q pedia en el primer post. 😋 Edited April 3, 2019 by burrots (see edit history) 1 Link to comment Share on other sites More sharing options...
Rodrigo B Laurindo Posted April 3, 2019 Share Posted April 3, 2019 3 minutes ago, burrots said: haber si es verdad y me lo da. Seguro q le dado una alegria, es justo lo q pedia en el primer post. 😋 si si, pues te he puesto 3 corazoncitos y un thanks, que has hecho una buena acción 2 Link to comment Share on other sites More sharing options...
burrots Posted April 3, 2019 Share Posted April 3, 2019 (edited) 3 minutes ago, Rodrigo B Laurindo said: si si, pues te he puesto 3 corazoncitos y un thanks, que has hecho una buena acción te los he devuelto. hombre llevo ya unas cuantas, q hay mucho "feliz ignorante"... 😋 PD: nos banearan por trafico de corazones?? 🤣🤣🤣 Edited April 3, 2019 by burrots (see edit history) 1 1 Link to comment Share on other sites More sharing options...
ctapia Posted April 4, 2019 Author Share Posted April 4, 2019 @burrotsHe seguido tal como dices que lo haga pero me sale el siguiente msj que adjunto "separator csv required.png" Luego, intente hacerlo de la siguiente manera: 1. Asigne un caracter separador (la coma)en la 1er casilla "Select Caracter Separator": ","(sin comillas). 2. Al parecer lo guardo, aunque no mostro ningun mensaje seguí seleccionando el archivo .csv (es el que adjunto "prueba.csv") y me salio el mismo error. Asi que fui a verificar las extensiones del archivo, y al parecer todo va bien, se los adjunto en "archivo excel descripcion.png" Luego intente abrir en .txt y el excel .csv para ver si habia diferencia, entonces salio eso, tambien lo adjunto en "vistas excel csv y txt(mismo archivo).png" Cambie las ";" por "," guardando y volviendo a intentar el proceso para subirlo, y aun nada, el mismo error. Te agradezco mucho la ayuda y los consejos, quisiera saber si hay algo que estoy haciendo mal. De nuevo gracias por la ayuda @burrots prueba.csv Link to comment Share on other sites More sharing options...
Rodrigo B Laurindo Posted April 4, 2019 Share Posted April 4, 2019 Creo que es la línea 52: if (Tools::isSubmit('submitOrdersImport') || Tools::isSubmit('submitConfiguration')) Es eso @burrots? 1 Link to comment Share on other sites More sharing options...
ctapia Posted April 4, 2019 Author Share Posted April 4, 2019 @Rodrigo B LaurindoEso arreglo la primer casilla, gracias Aunque en la segunda me sale el error diciendo que "Not exist product id: 1", he revisado el codigo y creo que es en la linea 98 que no envia correctamente el dato del array [0] o que opinas? Link to comment Share on other sites More sharing options...
Rodrigo B Laurindo Posted April 4, 2019 Share Posted April 4, 2019 Pregunta tonta: tienes el producto de id 1? 1 Link to comment Share on other sites More sharing options...
Rodrigo B Laurindo Posted April 4, 2019 Share Posted April 4, 2019 No, porque no es un producto, es un pedido. Está buscando por productos. 1 Link to comment Share on other sites More sharing options...
ctapia Posted April 4, 2019 Author Share Posted April 4, 2019 claro que si haha Link to comment Share on other sites More sharing options...
ctapia Posted April 4, 2019 Author Share Posted April 4, 2019 Tambien note eso, pero crei que solo se equivoco con los mensajes de alerta Link to comment Share on other sites More sharing options...
Rodrigo B Laurindo Posted April 4, 2019 Share Posted April 4, 2019 (edited) Mira, si te funciona quiero 20 likes en mis mensajes y más 20 en los de @burrots $order = new Order((int)$data[0]); if (Validate::isLoadedObject($order)) { $order->setCurrentState((int)$data[1]); } Edited April 4, 2019 by Rodrigo B Laurindo (see edit history) 1 Link to comment Share on other sites More sharing options...
ctapia Posted April 4, 2019 Author Share Posted April 4, 2019 (edited) @Rodrigo B Laurindo Desde que linea pongo eso, debo sustituir alguna ? Edited April 4, 2019 by ctapia (see edit history) Link to comment Share on other sites More sharing options...
Rodrigo B Laurindo Posted April 4, 2019 Share Posted April 4, 2019 private function _postProcess() { if (Tools::isSubmit('submitConfiguration')) { Configuration::updateValue('PP_AA_SEPARATOR', Tools::getValue('PP_AA_SEPARATOR')); } elseif (Tools::isSubmit('submitOrders')) { if ($file_attachment = Tools::fileAttachment()) { $handle = fopen($file_attachment['tmp_name'], "r"); while (($data = fgetcsv($handle, 1000, Configuration::get('PP_AA_SEPARATOR'))) !== false) { $data = array_map("utf8_encode", $data); $order = new Order((int)$data[0]); if (Validate::isLoadedObject($order)) { if (! $order->setCurrentState((int)$data[1])) { $this->_errors[] = $this->l('Not exist product id: ' . $data[0]); } } } } } if ($this->_errors) foreach ($this->_errors as $error) $this->_html .= $this->displayError($this->l($error)); else { Tools::redirectAdmin('index.php?tab=AdminModules&configure='.$this->name.'&conf=6&token='.Tools::getAdminTokenLite('AdminModules')); } } 1 Link to comment Share on other sites More sharing options...
burrots Posted April 4, 2019 Share Posted April 4, 2019 (edited) 1 hour ago, Rodrigo B Laurindo said: No, porque no es un producto, es un pedido. Está buscando por productos. jajaja. vaya tela. las prisas. en todo momento hablamos de orders y le meto esto y me kedo tan ancho $product = new Product((int)$data[0]); 😵😵😵😵😵😵😵😵 Edited April 4, 2019 by burrots (see edit history) 1 1 Link to comment Share on other sites More sharing options...
burrots Posted April 4, 2019 Share Posted April 4, 2019 (edited) private function _postProcess() { if (Tools::isSubmit('submitConfiguration')) { Configuration::updateValue('PP_AA_SEPARATOR', Tools::getValue('PP_AA_SEPARATOR')); } elseif (Tools::isSubmit('submitOrders')) { if ($file_attachment = Tools::fileAttachment()) { $handle = fopen($file_attachment['tmp_name'], "r"); while (($data = fgetcsv($handle, 1000, Configuration::get('PP_AA_SEPARATOR'))) !== false) { $data = array_map("utf8_encode", $data); $order = new Order((int)$data[0]); if (Validate::isLoadedObject($order)) { if (!$order->setCurrentState((int)$data[1])) { $this->_errors[] = $this->l('Unable to update Orders State in id_order: ' . $data[0]); } } else { $this->_errors[] = $this->l('Not exists id_order: ' . $data[0]); } } } if ($this->_errors) foreach ($this->_errors as $error) $this->_html .= $this->displayError($this->l($error)); else { Tools::redirectAdmin('index.php?tab=AdminModules&configure='.$this->name.'&conf=6&token='.Tools::getAdminTokenLite('AdminModules')); } } Asi ahora especifica mas si hay error Edited April 4, 2019 by burrots (see edit history) 1 Link to comment Share on other sites More sharing options...
Rodrigo B Laurindo Posted April 4, 2019 Share Posted April 4, 2019 Si, que yo habia dejado el mensaje de producto 1 Link to comment Share on other sites More sharing options...
burrots Posted April 4, 2019 Share Posted April 4, 2019 'index.php?tab=AdminModules&configure='.$this->name.'&conf=6..........' @Rodrigo B Laurindo eb PS 1.6 para mostrar mnesaje confirmacion era conf=6?? Link to comment Share on other sites More sharing options...
burrots Posted April 4, 2019 Share Posted April 4, 2019 @Rodrigo B Laurindo eb PS 1.6 para mostrar mesaje confirmacion era conf=6?? Link to comment Share on other sites More sharing options...
ctapia Posted April 4, 2019 Author Share Posted April 4, 2019 Compas ya estuvo, muchas gracias a todos los que aportaron en el post Muchas Gracias @burrots Muchas Gracias @Rodrigo B Laurindo Por todo el aporte, en seguida adjunto el modulo hecho Likes a Full para ambos Gracias, cualquier cosa en un futuro nos estamos hablando🤘🤘 pporderstateassign.zip Link to comment Share on other sites More sharing options...
ctapia Posted April 4, 2019 Author Share Posted April 4, 2019 Estudiare el código para aprender bien las funciones de prestashop, Gracias a Ambos Link to comment Share on other sites More sharing options...
Rodrigo B Laurindo Posted April 4, 2019 Share Posted April 4, 2019 14 minutes ago, burrots said: @Rodrigo B Laurindo eb PS 1.6 para mostrar mesaje confirmacion era conf=6?? Si: 6 => $this->l('Settings update successful'), 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