DropNix.com Posted April 22, 2013 Share Posted April 22, 2013 Existe algún módulo que funcione para 1.5.4 o almenos para 1.5, que permita actualizar precios o stock via csv, con la referencia o id del producto? He encontrado este módulo para otras versiones, y me da miedo actualizarlo en mi versión. Alguien sabe si funciona? importarcsvporcampo.zip 1 Link to comment Share on other sites More sharing options...
donpablito Posted April 29, 2013 Share Posted April 29, 2013 (edited) hola yo he modificado el siguiente script y funciona (no me responsabilizo) <?php // este php necesita en entrada un fichero update.csv con 4 campos // Referencia producto; Precio Mayorista (costo); Stock; Precio de venta sin iva (PVP) // los numero en formado ingles (ej 2.55) // el programa funciona así: // lee el fichero y accede a la base de datos con la REFERENCIA del producto y recupera la ID del producto // actualiza stock, precio mayorista, precio de venta sin iva. $dir = opendir('.'); //$dir = opendir('./updater'); echo "Conectamos a la bb.dd." . '<br>'; flush(); mysql_connect("dirección servidor", "xxxxxxx_bbdd", "password") or die(mysql_error()); mysql_select_db("nombre database") or die(mysql_error()); // Como la primera fila son los nombres de las columnas: $fila = 1; // Tenemos que actualizar en dos tablas: $update_table = "ps_product inner join ps_stock_available on (ps_product.id_product = ps_stock_available.id_product)"; //antes que nada, stock de todo a 0 para no tener descatalogados con stock: mysql_query ("UPDATE $update_table SET ps_stock_available.quantity=0"); echo "Abrimos el fichero." . '<br>'; flush(); $handle = fopen("update.csv", "r"); $falta = fopen("falta.txt", "w"); echo "Recorremos el CSV..." . '<br>'; flush(); while (($data = fgetcsv($handle, 0, ";")) !== FALSE) { $num = count($data); echo "<p>" . '<br>'; flush(); echo "( $fila )" . '<br>'; flush(); $fila++; for ($c=0; $c < $num; $c++) { if ($c = 1) { //Referencia producto $reference = $data[($c - 1)]; $row = mysql_query("SELECT * FROM ps_product WHERE reference='$reference'") or die (mysql_error()); // $existe = mysql_num_rows($row); // if ($existe == 0) {fwrite ($falta, "La referencia $reference no existe en bb.dd." . PHP_EOL);} // echo $reference . " - Referencia Producto" . '<br>'; flush(); $buscaid = mysql_query("SELECT id_product FROM ps_product WHERE reference='$reference'") or die (mysql_error()); // $id_product = mysql_result($buscaid, 0); echo $id_product . " - Referencia Producto" . '<br>'; flush(); } if ($c = 2) { //precio de compra $compra = $data[($c - 1)]; mysql_query("UPDATE $update_table SET wholesale_price='$compra' WHERE reference='$reference'") or die(mysql_error()); echo $compra . " - Coste actualizado tabla ps:_product" . '<br>'; flush(); mysql_query("UPDATE ps_product_shop SET wholesale_price='$compra' WHERE id_product='$id_product'") or die(mysql_error()); echo $compra . " - Coste actualizado tabla ps:_product_shop" . '<br>'; flush(); } if ($c = 3) { //Precio PVP $price = $data[($c - 1)]; mysql_query("UPDATE $update_table SET price='$price' WHERE reference='$reference'") or die(mysql_error()); echo $price . " - PVP tabla ps_product actualizado" . '<br>'; flush(); mysql_query("UPDATE ps_product_shop SET price='$price' WHERE id_product='$id_product'") or die(mysql_error()); echo $price . " - PVP tabla ps_product.shop actualizado" . '<br>'; flush(); } if ($c = 4) { //Stock $quantity = $data[($c - 1)]; mysql_query("UPDATE $update_table SET ps_stock_available.quantity='$quantity' WHERE reference='$reference'") or die(mysql_error()); echo $quantity . " - stock actualizado" . '<br>'; flush(); } echo "_____________________________________________________<p>"; } } fclose($handle); fclose($falta); //mandamos el archivo por mail # Leer el contenido del archivo $archivo = file_get_contents("falta.txt"); # De quien $nombre_from = 'Nombre de quien envia'; $email_from = "[email protected]"; # Para quien $email_to = "[email protected]"; # Asunto $asunto = "Articulos faltantes"; # Encabezado del E-mail $header = "From: ".$nombre_from." <".$email_from.">\r\n"; # Envio del email $ok = mail($email_to,$asunto,$archivo,$header); # Si el email se envío, se imprime... echo ($ok) ? "Enviado..." : "Falló el envío"; echo " <p>" . '<br>'; flush(); echo " - - - ACTUALIZACION COMPLETADA - - - <p>" . '<br>'; flush(); //Borro los archivos viejos para no tener problema al renombrar o descargar //unlink('update.csv'); echo "Archivos temporales eliminados" . '<br>'; flush(); echo "Todo hecho" . '<br>'; flush(); ?> Edited May 4, 2013 by donpablito (see edit history) 3 Link to comment Share on other sites More sharing options...
Sergio Ruiz Posted April 29, 2013 Share Posted April 29, 2013 (edited) hola yo he modificado el siguiente script y funciona (no me responsabilizo) <?php // este php necesita en entrada un fichero update.csv con 4 campos // Referencia producto, Precio Mayorista (costo), Stock, Precio de venta sin iva (PVP) // los numero en formado ingles (ej 2.55) // el programa funciona así: // lee el fichero y accede a la base de datos con la REFERENCIA del producto y recupera la ID del producto // actualiza stock, precio mayorista, precio de venta sin iva. $dir = opendir('.'); //$dir = opendir('./updater'); echo "Conectamos a la bb.dd." . '<br>'; flush(); mysql_connect("dirección servidor", "xxxxxxx_bbdd", "password") or die(mysql_error()); mysql_select_db("nombre database") or die(mysql_error()); // Como la primera fila son los nombres de las columnas: $fila = 1; // Tenemos que actualizar en dos tablas: $update_table = "ps_product inner join ps_stock_available on (ps_product.id_product = ps_stock_available.id_product)"; //antes que nada, stock de todo a 0 para no tener descatalogados con stock: mysql_query ("UPDATE $update_table SET ps_stock_available.quantity=0"); echo "Abrimos el fichero." . '<br>'; flush(); $handle = fopen("update.csv", "r"); $falta = fopen("falta.txt", "w"); echo "Recorremos el CSV..." . '<br>'; flush(); while (($data = fgetcsv($handle, 0, ";")) !== FALSE) { $num = count($data); echo "<p>" . '<br>'; flush(); echo "( $fila )" . '<br>'; flush(); $fila++; for ($c=0; $c < $num; $c++) { if ($c = 1) { //Referencia producto $reference = $data[($c - 1)]; $row = mysql_query("SELECT * FROM ps_product WHERE reference='$reference'") or die (mysql_error()); // $existe = mysql_num_rows($row); // if ($existe == 0) {fwrite ($falta, "La referencia $reference no existe en bb.dd." . PHP_EOL);} // echo $reference . " - Referencia Producto" . '<br>'; flush(); $buscaid = mysql_query("SELECT id_product FROM ps_product WHERE reference='$reference'") or die (mysql_error()); // $id_product = mysql_result($buscaid, 0); echo $id_product . " - Referencia Producto" . '<br>'; flush(); } if ($c = 2) { //precio de compra $compra = $data[($c - 1)]; mysql_query("UPDATE $update_table SET wholesale_price='$compra' WHERE reference='$reference'") or die(mysql_error()); echo $compra . " - Coste actualizado tabla ps:_product" . '<br>'; flush(); mysql_query("UPDATE ps_product_shop SET wholesale_price='$compra' WHERE id_product='$id_product'") or die(mysql_error()); echo $compra . " - Coste actualizado tabla ps:_product_shop" . '<br>'; flush(); } if ($c = 3) { //Precio PVP $price = $data[($c - 1)]; mysql_query("UPDATE $update_table SET price='$price' WHERE reference='$reference'") or die(mysql_error()); echo $price . " - PVP tabla ps_product actualizado" . '<br>'; flush(); mysql_query("UPDATE ps_product_shop SET price='$price' WHERE id_product='$id_product'") or die(mysql_error()); echo $price . " - PVP tabla ps_product.shop actualizado" . '<br>'; flush(); } if ($c = 4) { //Stock $quantity = $data[($c - 1)]; mysql_query("UPDATE $update_table SET ps_stock_available.quantity='$quantity' WHERE reference='$reference'") or die(mysql_error()); echo $quantity . " - stock actualizado" . '<br>'; flush(); } echo "_____________________________________________________<p>"; } } fclose($handle); fclose($falta); //mandamos el archivo por mail # Leer el contenido del archivo $archivo = file_get_contents("falta.txt"); # De quien $nombre_from = 'Nombre de quien envia'; $email_from = "[email protected]"; # Para quien $email_to = "[email protected]"; # Asunto $asunto = "Articulos faltantes"; # Encabezado del E-mail $header = "From: ".$nombre_from." <".$email_from.">\r\n"; # Envio del email $ok = mail($email_to,$asunto,$archivo,$header); # Si el email se envío, se imprime... echo ($ok) ? "Enviado..." : "Falló el envío"; echo " <p>" . '<br>'; flush(); echo " - - - ACTUALIZACION COMPLETADA - - - <p>" . '<br>'; flush(); //Borro los archivos viejos para no tener problema al renombrar o descargar //unlink('update.csv'); echo "Archivos temporales eliminados" . '<br>'; flush(); echo "Todo hecho" . '<br>'; flush(); ?> Hola, Voy a probarlo. Edited April 29, 2013 by Rubalcaba (see edit history) Link to comment Share on other sites More sharing options...
Informaticaelec.com Posted May 1, 2013 Share Posted May 1, 2013 (edited) Rubalcaba, buenas noches, has probado esta forma? Es justo lo que andaba buscando hace unos días, que puse la comparación de productos por CSV, me puedes echar una manita y decirme si funciona por favor? Gracias Compañeros Saludos Edited May 1, 2013 by Informaticaelec.com (see edit history) 1 Link to comment Share on other sites More sharing options...
Informaticaelec.com Posted May 1, 2013 Share Posted May 1, 2013 (edited) Ojala hayas podido probarlo Rubalcaba y puedas decirme algo, llevo un monton de días buscando esta solución. Espero tu respuesta pronto Rubal por favor. Saludos Gracias a todos PD: A ver si tengo suerte y el gran Victor ha podido probar el modulo o ese gran Script. Saludos Y Gracias de nuevo chicos Edited May 1, 2013 by Informaticaelec.com (see edit history) Link to comment Share on other sites More sharing options...
Informaticaelec.com Posted May 2, 2013 Share Posted May 2, 2013 Hola buenos días comunidad, por favor, alguien sabe algo? Jaumitus, has podido probar el modulo a ver si funciona correctamente? Saludos muchísimas gracias Link to comment Share on other sites More sharing options...
donpablito Posted May 2, 2013 Share Posted May 2, 2013 (edited) hola este script funciona perfectamente. lo utilizo yo desde una semana con 850 productos..... Antes hacer la prueba con 1 solo articulo. Ejemplo del fichero update.csv Acc001;3.500000;4.000000;8.000000 Prestashop utiliza 6 decimales así yo preparo un csv igual. Acc001 = referencia producto 3.50 = costo mayorista 4 = stock 8 = venta sin iva! Edited May 4, 2013 by donpablito (see edit history) 1 Link to comment Share on other sites More sharing options...
Informaticaelec.com Posted May 2, 2013 Share Posted May 2, 2013 hola este script funciona perfectamente. lo utilizo yo desde una semana con 850 productos..... Antes hacer la prueba con 1 solo articulo. Ejemplo del fichero update.csv Acc001,3.500000,4.000000,8.000000 Prestashop utiliza 6 decimales así yo preparo un csv igual. Acc001 = referencia producto 3.50 = costo mayorista 4 = stock 8 = venta sin iva! Gracias compañero, es que no tengo muchos conocimientos para todo esto, me puedes enviar un CSV de prueba para que pueda intentar hacerlo? Gracias donpablito Link to comment Share on other sites More sharing options...
Informaticaelec.com Posted May 2, 2013 Share Posted May 2, 2013 (edited) Y una preguntilla mas compañero, ese script donde tengo que ponerlo? Es que no tengo ni idea... Gracias por todo Pablo Ojala puedas ayudarme... por esta tonteria de los productos, llevo mas de 15 dias de retraso para abrir la web... Saludos Edited May 2, 2013 by Informaticaelec.com (see edit history) Link to comment Share on other sites More sharing options...
donpablito Posted May 2, 2013 Share Posted May 2, 2013 ok,, con el block de notas, creas un fichero .php y lo pegas tal como esta! imaginate que lo llamas actualiza.php Lo sube en tu servidor ejemplo www.tuservidor.com sube tambien el fichero update.csv en la misma carpeta del programa... despues vas al explorer o otro browser y escribes: www.tuservidor.com/actualiza.php y va.... AH. no te olvides modificar los parametros iniciales del script para acceder a tus bade de datos! 1 Link to comment Share on other sites More sharing options...
Informaticaelec.com Posted May 2, 2013 Share Posted May 2, 2013 ok,, con el block de notas, creas un fichero .php y lo pegas tal como esta! imaginate que lo llamas actualiza.php Lo sube en tu servidor ejemplo www.tuservidor.com sube tambien el fichero update.csv en la misma carpeta del programa... despues vas al explorer o otro browser y escribes: www.tuservidor.com/actualiza.php y va.... AH. no te olvides modificar los parametros iniciales del script para acceder a tus bade de datos! Voy a intentarlo a ver si funciona, sería mi salvación la verdad... Muchas gracias por todo Pablo. Link to comment Share on other sites More sharing options...
Informaticaelec.com Posted May 2, 2013 Share Posted May 2, 2013 Veo otra cosa... hay que poner todo el stock a 0... eso es un problema... hay alguna forma para no tener que poner todo el stock a 0? Saludos Link to comment Share on other sites More sharing options...
donpablito Posted May 2, 2013 Share Posted May 2, 2013 el mismo programa lo pone a 0 (todo el stock de todos los articulos). aunque pruebe con 1 solo articulo, el programma pone todo el stock = 0 1 Link to comment Share on other sites More sharing options...
Informaticaelec.com Posted May 2, 2013 Share Posted May 2, 2013 Y si no están los articulos dentro del csv update? Es decir, no toca las ID de otros productos verdad? Gracias Pablo Saludos Link to comment Share on other sites More sharing options...
Informaticaelec.com Posted May 2, 2013 Share Posted May 2, 2013 El modulo parece ser que no funciona... :( Seguimos a la desesperada por encontrar algo que sea mas simple... Saludos Gracias A Todos Link to comment Share on other sites More sharing options...
donpablito Posted May 2, 2013 Share Posted May 2, 2013 El script funciona perfectament en prestashop 1.5.4, si a ti no funciona, será porque algo haces mal..... El programa toca solo los ID de articulos que hay en la referencias escritas del CSV!!! Link to comment Share on other sites More sharing options...
Informaticaelec.com Posted May 2, 2013 Share Posted May 2, 2013 El script funciona perfectament en prestashop 1.5.4, si a ti no funciona, será porque algo haces mal..... El programa toca solo los ID de articulos que hay en la referencias escritas del CSV!!! Compañero, me refiero al modulo, no al script que tu pusistes. Saludos Link to comment Share on other sites More sharing options...
Informaticaelec.com Posted May 2, 2013 Share Posted May 2, 2013 Donde tendría que poner ese script? Es que no me queda claro la verdad... Por favor ayudarme Link to comment Share on other sites More sharing options...
Informaticaelec.com Posted May 2, 2013 Share Posted May 2, 2013 Vale, ya está creado todo, ahora como creo exactamente un CSV? Porque querría actualizar de 500 en 500, tengo 5380 productos y si creo unos 6 o 7 CSV, cada vez que actualice del 1 al 2 por ejemplo se pondrá todos los del 1 en 0 no? Espero vuestra ayuda chicos, muchísimas gracias pablo, parece que funciona lo que nos has puesto mas arriba, lo que pasa que hasta que no me quede claro lo de los CSV no me puedo arriesgar a meterlos... Gracias por todo Link to comment Share on other sites More sharing options...
donpablito Posted May 2, 2013 Share Posted May 2, 2013 efectivamente es como tu dices....... no puedes hacerlo en 5-6 veces.... tiene que ser de golpe. Si no tienes que COMENTAR el comando que pone stock = 0 es decir ponle // delante de mysql_query ("UPDATE $update_table SET ps_stock_available.quantity=0"); es decir // mysql_query ("UPDATE $update_table SET ps_stock_available.quantity=0"); así ya nunca te limpia el stock. Para crear un CSV, yo por ejemplo que utilizo FACTUSOL, hago la exportación de datos en excel, y despues Guardo como .CSV Saludos 1 Link to comment Share on other sites More sharing options...
Informaticaelec.com Posted May 2, 2013 Share Posted May 2, 2013 efectivamente es como tu dices....... no puedes hacerlo en 5-6 veces.... tiene que ser de golpe. Si no tienes que COMENTAR el comando que pone stock = 0 es decir ponle // delante de mysql_query ("UPDATE $update_table SET ps_stock_available.quantity=0"); es decir // mysql_query ("UPDATE $update_table SET ps_stock_available.quantity=0"); así ya nunca te limpia el stock. Para crear un CSV, yo por ejemplo que utilizo FACTUSOL, hago la exportación de datos en excel, y despues Guardo como .CSV Saludos Estupendo compañero, muchísimas gracias, factusol es un software de windows, pero en mi caso... yo tengo un CSV ya echo por otro proveedor, por lo cual no está en el mismo formato que lo que exige prestashop, podría valer igualmente? O tiene que cumplir lo que dijistes anteriormente: Ejemplo del fichero update.csv Acc001,3.500000,4.000000,8.000000 Prestashop utiliza 6 decimales así yo preparo un csv igual. Acc001 = referencia producto 3.50 = costo mayorista 4 = stock 8 = venta sin iva! Saludos muchísimas gracias Pablo, me estás ayudando muchísimo Link to comment Share on other sites More sharing options...
leomazz Posted May 3, 2013 Share Posted May 3, 2013 Hola gente! Estoy siguiendo este tema porque la verdad que me urge lograr actualizar los 4230 articulos que tengo en la tienda de una manera mas agil... El tema es que copio el script en un php, lo subo a una carpeta del servidor con el archivo csv segun las indicaciones y me tira un hermoso error 500... Alguien pudo avanzar un poco mas? Uso la version 1.5.1 Link to comment Share on other sites More sharing options...
jotacee Posted May 3, 2013 Share Posted May 3, 2013 Quizá me perdí algo de la conversación pero ¿el módulo normal de prestashop para importar no te funciona para lo que necesitas? Te permite elegir qué columnas importar, actualiza los datos según el ID del producto... Requiere importar en dos pasadas, pero es casi mejor si después tienes que ir actualizando solo stocks y precios una vez subidos todos los artículos. En prestashop lo encontrarás en "Importar", y lo que quieres importar son "combinaciones". En tu CSV indica el ID del artículo, la talla-medida-color, el precio si varía respecto del artículo normal... No es complicado pero piensa que lo que pretendes es el tiempo de ahorrarte tener que introducir todo eso a mano. Requiere el esfuerzo de aprender a hacer importaciones correctamente (nosotros realizamos formaciones sobre esto a nuestros clientes y necesitamos habitualmente 2 días para que dominen cómo hacerlo... y la clave está en el excel más que en el prestashop). Link to comment Share on other sites More sharing options...
leomazz Posted May 3, 2013 Share Posted May 3, 2013 Quizá me perdí algo de la conversación pero ¿el módulo normal de prestashop para importar no te funciona para lo que necesitas? Te permite elegir qué columnas importar, actualiza los datos según el ID del producto... Requiere importar en dos pasadas, pero es casi mejor si después tienes que ir actualizando solo stocks y precios una vez subidos todos los artículos. En prestashop lo encontrarás en "Importar", y lo que quieres importar son "combinaciones". En tu CSV indica el ID del artículo, la talla-medida-color, el precio si varía respecto del artículo normal... No es complicado pero piensa que lo que pretendes es el tiempo de ahorrarte tener que introducir todo eso a mano. Requiere el esfuerzo de aprender a hacer importaciones correctamente (nosotros realizamos formaciones sobre esto a nuestros clientes y necesitamos habitualmente 2 días para que dominen cómo hacerlo... y la clave está en el excel más que en el prestashop). Volvi para decir exactamente lo que acabas de escribir... Cree otro dominio de prueba en el servidor, otra tienda de presta e importe 99 articulos desde el archivo excel guardado como csv. Luego modifique groseramente precios y stock de 3 productos salteados en el mismo archivo y lo guarde con otro nombre, Volvi a la seccion de "importar csv" de los parametros avanzados y lo subi al servidor. Deje tildado "Usar la referencia como key" y "Forzar all ID durante la importacion" Cuando se abre la ventana con las columnas del archivo csv, seleccione "Referencia#" "Nombre" "Cantidad" "Precio" Y volvi a subir el archivo con los 99 articulos originales, pero con solo 3 productos modificados como escribi anteriormente. Todo OK. Voy a la solapa de catalogo, voy a productos y alli estaban todos mis 99 articulos intactos, a excepcion de los 3 que modifique adrede para chequear todo esto. La verdad que me saque un peso de encima con esta forma de importar productos o modificaciones. Tengo que seguir haciendo pruebas pero creo que encontre el camino. Lo unico que me asusta un poco (y parte desde que no hice nunca una restauracion de la dB) es como estar seguro de que un backup de la dB esta bien hecho... Saludos! Link to comment Share on other sites More sharing options...
Informaticaelec.com Posted May 3, 2013 Share Posted May 3, 2013 hola comunidad, la verdad compañeros, veo que unos saben, otros no sabemos, pero veo que falta información para novatos, alguien con idea de esto, puede hacer un tutorial de como actualizar los productos, el stock, el precio y las cantidades a poder ser? Por favor, porque unos saben y otros no, ( yo entre ellos ) y me imagino que muchos mas como yo, hacer un tutorial por favor. Saludos Esperamos con paciencia todo esto... Link to comment Share on other sites More sharing options...
Informaticaelec.com Posted May 4, 2013 Share Posted May 4, 2013 Estoy intentando actualizar los precios y el stock con el script que se menciono DonPablito... me es imposible... Por favor, alguien puede ayudarme? :( Gracias de antemano a todos Link to comment Share on other sites More sharing options...
donpablito Posted May 4, 2013 Share Posted May 4, 2013 que te pasa? que problemas tienes? Link to comment Share on other sites More sharing options...
Informaticaelec.com Posted May 4, 2013 Share Posted May 4, 2013 Gracias por contestar compañero, pongo los datos como indicas pero nada... no hay suerte lo he puesto así, porque es para una prueba. 51079,3.500000,4.000000,8.000000 Esa es la referencia de un producto de mi web, lo pongo en un archivo de notepad, y luego al guardar lo pongo como: update.csv, lo meto a la carpeta del modulo, voy a la dirección en el navegador de actualizar.php y pone que lo ha echo correctamente pero no hay cambios... Espero ver luz a este asunto... porque estoy a 2 días de abrir la tienda y lo mas importante... no lo tengo. Gracias de veras compañero Saludos Link to comment Share on other sites More sharing options...
donpablito Posted May 4, 2013 Share Posted May 4, 2013 cuando termina el programa, que te aparece en video, nada? a mi me sale siempre una venta descirptiva con lo que ha hecho!!! Link to comment Share on other sites More sharing options...
Informaticaelec.com Posted May 4, 2013 Share Posted May 4, 2013 Te lo pongo ahora mismo compañero Gracias!!! Link to comment Share on other sites More sharing options...
Informaticaelec.com Posted May 4, 2013 Share Posted May 4, 2013 Conectamos a la bb.dd. Abrimos el fichero. Recorremos el CSV... ( 1 ) 51079,106.61,25,129 - Referencia Producto Warning: mysql_result() [function.mysql-result]: Unable to jump to row 0 on MySQL result index 7 in /home3/informa2/public_html/actualiza/actualiza.php on line 47 - Referencia Producto - Coste actualizado tabla ps:_product - Coste actualizado tabla ps:_product_shop - PVP tabla ps_product actualizado - PVP tabla ps_product.shop actualizado - stock actualizado _____________________________________________________ Enviado... - - - ACTUALIZACION COMPLETADA - - - Archivos temporales eliminados Todo hecho Esto me indica compañero. Saludos Gracias Link to comment Share on other sites More sharing options...
Rubén Posted May 4, 2013 Share Posted May 4, 2013 Te lo pongo ahora mismo compañero Gracias!!! Se que no te puedes gastar pasta y tal, pero sabías que este programa es gratis y te sube los precios masivamente ya sea mediante porcentaje o precio fijo? http://www.storecommander.com/ De nada Link to comment Share on other sites More sharing options...
donpablito Posted May 4, 2013 Share Posted May 4, 2013 hay un error en la linea 47 del programa. que hay en la linea 47? Link to comment Share on other sites More sharing options...
Informaticaelec.com Posted May 4, 2013 Share Posted May 4, 2013 Se que no te puedes gastar pasta y tal, pero sabías que este programa es gratis y te sube los precios masivamente ya sea mediante porcentaje o precio fijo? http://www.storecommander.com/ De nada Gracias Guindos, pero esto es un modulo? Porque me he bajado el zip y lo he metido para instalarlo en modulos y me da error.... Espero pronto terminar esta pesadilla... Gracias a todos Link to comment Share on other sites More sharing options...
Informaticaelec.com Posted May 4, 2013 Share Posted May 4, 2013 hay un error en la linea 47 del programa. que hay en la linea 47? Supuestamente indica esta linea: $id_product = mysql_result($buscaid, 0); Gracias Pablo Link to comment Share on other sites More sharing options...
donpablito Posted May 4, 2013 Share Posted May 4, 2013 mira el problema está en el fichero .csv el programma está leyendo "51079,106.61,25,129" como Referencia pasame un correo electronico tuyo. Link to comment Share on other sites More sharing options...
Informaticaelec.com Posted May 4, 2013 Share Posted May 4, 2013 MP enviado. Gracias Pablo... Link to comment Share on other sites More sharing options...
Rubén Posted May 4, 2013 Share Posted May 4, 2013 creo que es un programa para el pc, mira a ver Link to comment Share on other sites More sharing options...
donpablito Posted May 4, 2013 Share Posted May 4, 2013 ya sé tu problema y perdona ha sido culpa mia.... SEPARA LOS CAMPOS con ; no con , perdon! Link to comment Share on other sites More sharing options...
Informaticaelec.com Posted May 4, 2013 Share Posted May 4, 2013 Ahhh!! Jeje vale, voy a ver si ahora funciona, pero una pregunta Pablo, la hago por aquí porque podrá ayudar a muchos. En mi caso yo quiero hacer lo siguiente: 1- Referencia del producto 2- Precio Neto del producto con Iva 3- Precio Sin Iva 4- Stock Eso es lo que querría modificar, aunque sería genial tambien poder modificar el texto de mostrar cuando un articulo está disponible o sin stock. Es posible por lo menos los 4 puntos que necesito hacer? Gracias Pablo no sabes cuanto te lo agradezco, es el ultimo paso para abrir la web. Link to comment Share on other sites More sharing options...
donpablito Posted May 4, 2013 Share Posted May 4, 2013 pues todo se puede hacer en informatica....... lo que tienes que saber es que tablas tienes que tocar..... Link to comment Share on other sites More sharing options...
donpablito Posted May 4, 2013 Share Posted May 4, 2013 lamentablemente el precio neto con iva no está en las tablas o por lo menos no lo he visto!!!!! Link to comment Share on other sites More sharing options...
Informaticaelec.com Posted May 4, 2013 Share Posted May 4, 2013 Ohh... entonces solo se podría modificar el precio sin iva verdad? Porque yo no tengo necesidad de poner el precio mayorista... Aunque el Iva se pondrá solo una vez esté metida la actualización, no? Saludos gracias Pablo Link to comment Share on other sites More sharing options...
Informaticaelec.com Posted May 4, 2013 Share Posted May 4, 2013 Por cierto me sigue tirando el mismo error... siento muchisimo las molestias Pablo... Saludos Link to comment Share on other sites More sharing options...
donpablito Posted May 4, 2013 Share Posted May 4, 2013 (edited) 1) ha funcionado? 2) con este programa tu modificas el precios de compra y precio de venta (ambos sin iva). pero el prestashop automaticamente te mostrará tambien el precio de venta con iva actualizado! saludos Edited May 4, 2013 by donpablito (see edit history) Link to comment Share on other sites More sharing options...
Informaticaelec.com Posted May 4, 2013 Share Posted May 4, 2013 (edited) 1) ha funcionado? 2) con este programa tu modificas el precios de compra y precio de venta (ambos sin iva). pero el prestashop automaticamente te mostrará tambien el precio de venta con iva actualizado! saludos entonces podría valer para poner los nuevos precios sin iva, ya que el prestashop lo pondrá mas tarde, en ese aspecto genial. Entonces como habrá que dejar el CSV si no quiero poner precio de mayorista? Solo referencia del producto, precio y stock? Gracias de antemano Pablo PD: No me ha funcionado... el mismo error ;( Edited May 4, 2013 by Informaticaelec.com (see edit history) Link to comment Share on other sites More sharing options...
donpablito Posted May 4, 2013 Share Posted May 4, 2013 te he enviado un correo.... no puede darte el mismo error!!!! Link to comment Share on other sites More sharing options...
donpablito Posted May 4, 2013 Share Posted May 4, 2013 mandame lo que te sale en pantalla!!!! Link to comment Share on other sites More sharing options...
Informaticaelec.com Posted May 4, 2013 Share Posted May 4, 2013 Sigo haciendo pruebas comunidad, ya os cuento. Gracias por todo Link to comment Share on other sites More sharing options...
tabletpp Posted May 31, 2013 Share Posted May 31, 2013 hola yo he modificado el siguiente script y funciona (no me responsabilizo) <?php // este php necesita en entrada un fichero update.csv con 4 campos // Referencia producto; Precio Mayorista (costo); Stock; Precio de venta sin iva (PVP) // los numero en formado ingles (ej 2.55) // el programa funciona así: // lee el fichero y accede a la base de datos con la REFERENCIA del producto y recupera la ID del producto // actualiza stock, precio mayorista, precio de venta sin iva. $dir = opendir('.'); //$dir = opendir('./updater'); echo "Conectamos a la bb.dd." . '<br>'; flush(); mysql_connect("dirección servidor", "xxxxxxx_bbdd", "password") or die(mysql_error()); mysql_select_db("nombre database") or die(mysql_error()); // Como la primera fila son los nombres de las columnas: $fila = 1; // Tenemos que actualizar en dos tablas: $update_table = "ps_product inner join ps_stock_available on (ps_product.id_product = ps_stock_available.id_product)"; //antes que nada, stock de todo a 0 para no tener descatalogados con stock: mysql_query ("UPDATE $update_table SET ps_stock_available.quantity=0"); echo "Abrimos el fichero." . '<br>'; flush(); $handle = fopen("update.csv", "r"); $falta = fopen("falta.txt", "w"); echo "Recorremos el CSV..." . '<br>'; flush(); while (($data = fgetcsv($handle, 0, ";")) !== FALSE) { $num = count($data); echo "<p>" . '<br>'; flush(); echo "( $fila )" . '<br>'; flush(); $fila++; for ($c=0; $c < $num; $c++) { if ($c = 1) { //Referencia producto $reference = $data[($c - 1)]; $row = mysql_query("SELECT * FROM ps_product WHERE reference='$reference'") or die (mysql_error()); // $existe = mysql_num_rows($row); // if ($existe == 0) {fwrite ($falta, "La referencia $reference no existe en bb.dd." . PHP_EOL);} // echo $reference . " - Referencia Producto" . '<br>'; flush(); $buscaid = mysql_query("SELECT id_product FROM ps_product WHERE reference='$reference'") or die (mysql_error()); // $id_product = mysql_result($buscaid, 0); echo $id_product . " - Referencia Producto" . '<br>'; flush(); } if ($c = 2) { //precio de compra $compra = $data[($c - 1)]; mysql_query("UPDATE $update_table SET wholesale_price='$compra' WHERE reference='$reference'") or die(mysql_error()); echo $compra . " - Coste actualizado tabla ps:_product" . '<br>'; flush(); mysql_query("UPDATE ps_product_shop SET wholesale_price='$compra' WHERE id_product='$id_product'") or die(mysql_error()); echo $compra . " - Coste actualizado tabla ps:_product_shop" . '<br>'; flush(); } if ($c = 3) { //Precio PVP $price = $data[($c - 1)]; mysql_query("UPDATE $update_table SET price='$price' WHERE reference='$reference'") or die(mysql_error()); echo $price . " - PVP tabla ps_product actualizado" . '<br>'; flush(); mysql_query("UPDATE ps_product_shop SET price='$price' WHERE id_product='$id_product'") or die(mysql_error()); echo $price . " - PVP tabla ps_product.shop actualizado" . '<br>'; flush(); } if ($c = 4) { //Stock $quantity = $data[($c - 1)]; mysql_query("UPDATE $update_table SET ps_stock_available.quantity='$quantity' WHERE reference='$reference'") or die(mysql_error()); echo $quantity . " - stock actualizado" . '<br>'; flush(); } echo "_____________________________________________________<p>"; } } fclose($handle); fclose($falta); //mandamos el archivo por mail # Leer el contenido del archivo $archivo = file_get_contents("falta.txt"); # De quien $nombre_from = 'Nombre de quien envia'; $email_from = "[email protected]"; # Para quien $email_to = "[email protected]"; # Asunto $asunto = "Articulos faltantes"; # Encabezado del E-mail $header = "From: ".$nombre_from." <".$email_from.">\r\n"; # Envio del email $ok = mail($email_to,$asunto,$archivo,$header); # Si el email se envío, se imprime... echo ($ok) ? "Enviado..." : "Falló el envío"; echo " <p>" . '<br>'; flush(); echo " - - - ACTUALIZACION COMPLETADA - - - <p>" . '<br>'; flush(); //Borro los archivos viejos para no tener problema al renombrar o descargar //unlink('update.csv'); echo "Archivos temporales eliminados" . '<br>'; flush(); echo "Todo hecho" . '<br>'; flush(); ?> Modulo estupendo , ¿pero habría la posibilidad de que este escript se ejecutase solo todos los dias dos veces? De esa manera mantendría el stock de la tienda fisica con el de la web actualizado sin necesidad de tener que estar ejecutando el escript , un saludo y gracias Link to comment Share on other sites More sharing options...
erikmlb Posted June 1, 2013 Share Posted June 1, 2013 Hola buenos dias he encontrado este tema, estoy interesado en aprender sobre esto y poder hacerlo realidad... Quisiera pedir su ayuda para hacerlo bien... entonces acorde a lo que leo aqui intento hacer lo que indican... 1. Crear un Archivo (lo he hecho con Notepad++) y lo he llamado Actualizar.php Con el siguiente Codigo <?php // este php necesita en entrada un fichero update.csv con 4 campos // Referencia producto; Precio Mayorista (costo); Stock; Precio de venta sin iva (PVP) // los numero en formado ingles (ej 2.55) // el programa funciona así: // lee el fichero y accede a la base de datos con la REFERENCIA del producto y recupera la ID del producto // actualiza stock, precio mayorista, precio de venta sin iva. $dir = opendir('.'); //$dir = opendir('./updater'); echo "Conectamos a la bb.dd." . '<br>'; flush(); mysql_connect("dirección servidor", "xxxxxxx_bbdd", "password") or die(mysql_error()); mysql_select_db("nombre database") or die(mysql_error()); // Como la primera fila son los nombres de las columnas: $fila = 1; // Tenemos que actualizar en dos tablas: $update_table = "ps_product inner join ps_stock_available on (ps_product.id_product = ps_stock_available.id_product)"; //antes que nada, stock de todo a 0 para no tener descatalogados con stock: mysql_query ("UPDATE $update_table SET ps_stock_available.quantity=0"); echo "Abrimos el fichero." . '<br>'; flush(); $handle = fopen("update.csv", "r"); $falta = fopen("falta.txt", "w"); echo "Recorremos el CSV..." . '<br>'; flush(); while (($data = fgetcsv($handle, 0, ";")) !== FALSE) { $num = count($data); echo "<p>" . '<br>'; flush(); echo "( $fila )" . '<br>'; flush(); $fila++; for ($c=0; $c < $num; $c++) { if ($c = 1) { //Referencia producto $reference = $data[($c - 1)]; $row = mysql_query("SELECT * FROM ps_product WHERE reference='$reference'") or die (mysql_error()); // $existe = mysql_num_rows($row); // if ($existe == 0) {fwrite ($falta, "La referencia $reference no existe en bb.dd." . PHP_EOL);} // echo $reference . " - Referencia Producto" . '<br>'; flush(); $buscaid = mysql_query("SELECT id_product FROM ps_product WHERE reference='$reference'") or die (mysql_error()); // $id_product = mysql_result($buscaid, 0); echo $id_product . " - Referencia Producto" . '<br>'; flush(); } if ($c = 2) { //precio de compra $compra = $data[($c - 1)]; mysql_query("UPDATE $update_table SET wholesale_price='$compra' WHERE reference='$reference'") or die(mysql_error()); echo $compra . " - Coste actualizado tabla ps:_product" . '<br>'; flush(); mysql_query("UPDATE ps_product_shop SET wholesale_price='$compra' WHERE id_product='$id_product'") or die(mysql_error()); echo $compra . " - Coste actualizado tabla ps:_product_shop" . '<br>'; flush(); } if ($c = 3) { //Precio PVP $price = $data[($c - 1)]; mysql_query("UPDATE $update_table SET price='$price' WHERE reference='$reference'") or die(mysql_error()); echo $price . " - PVP tabla ps_product actualizado" . '<br>'; flush(); mysql_query("UPDATE ps_product_shop SET price='$price' WHERE id_product='$id_product'") or die(mysql_error()); echo $price . " - PVP tabla ps_product.shop actualizado" . '<br>'; flush(); } if ($c = 4) { //Stock $quantity = $data[($c - 1)]; mysql_query("UPDATE $update_table SET ps_stock_available.quantity='$quantity' WHERE reference='$reference'") or die(mysql_error()); echo $quantity . " - stock actualizado" . '<br>'; flush(); } echo "_____________________________________________________<p>"; } } fclose($handle); fclose($falta); //mandamos el archivo por mail # Leer el contenido del archivo $archivo = file_get_contents("falta.txt"); # De quien $nombre_from = 'Nombre de quien envia'; $email_from = "[email protected]"; # Para quien $email_to = "[email protected]"; # Asunto $asunto = "Articulos faltantes"; # Encabezado del E-mail $header = "From: ".$nombre_from." <".$email_from.">\r\n"; # Envio del email $ok = mail($email_to,$asunto,$archivo,$header); # Si el email se envío, se imprime... echo ($ok) ? "Enviado..." : "Falló el envío"; echo " <p>" . '<br>'; flush(); echo " - - - ACTUALIZACION COMPLETADA - - - <p>" . '<br>'; flush(); //Borro los archivos viejos para no tener problema al renombrar o descargar //unlink('update.csv'); echo "Archivos temporales eliminados" . '<br>'; flush(); echo "Todo hecho" . '<br>'; flush(); ?> En este espacio entiendo que deberia poner los datos del sitio en el que trabajo (cambios en rojo) $dir = opendir('.'); //$dir = opendir('./updater'); echo "Conectamos a la bb.dd." . '<br>'; flush(); mysql_connect("http://americas.gratishosting.cl/", "xxxxxxx_bbdd", "12345qwerty") or die(mysql_error()); mysql_select_db("grati_13156476_Americas") or die(mysql_error()); Esto es correcto ? he colocado los cambios bien de la informacion ? 2. Luego he creado otro archivo llamado Update.csv (En notepad regular) con la siguiente informacion FNEONO4;0.000000;5.000000;470.000000 FNEONG4;0.000000;10.000000;470.000000 FNEONO4 <--- Codigo/Referencia 0.000000 <--- Precio Mayorista (no tengo por eso 0) 5.000000 <--- Stock 470.000000 <--- Precio PvP Entonces he subido ambos archivos en htdocs/ (he subido los archivos a la carpeta correcta ?) Al intentar abrir http://americas.gratishosting.cl/Actualizar.php Porfavor Solicito su ayuda seguramente he cometido algun error colocando la informacion o siguiendo los pasos espero puedan ayudarme. Saludos y Gracias Link to comment Share on other sites More sharing options...
donpablito Posted June 4, 2013 Share Posted June 4, 2013 hola erikmlb, el fichero actualizar.php y update.txt deben de estar en el mismo sitio, da igual donde los pongas... Link to comment Share on other sites More sharing options...
moroni85 Posted June 6, 2013 Share Posted June 6, 2013 Hola a todos, Gracias por el aporte, va de lujo, lo unico que le veo es que no actualiza las referencias de cada combinacion. Mi ejemplo es una tienda de gafas y cada modelo de gafa tiene mas o menos 3 o 4 tallas, cada talla con su referencia (el modelo en si tiene una referencia mas corta), el script va de lujo para los modelos que no tienen tallas diferentes, es decir que no tienen otras combinaciones, por que si le pongo en la columna la referencia de la combinacion dice que no encuentra la fila... salu2 Link to comment Share on other sites More sharing options...
pmgpresta Posted June 24, 2013 Share Posted June 24, 2013 Hola a todos, Gracias por tu post Pablo, he probado la consulta del UPDATE en la base de datos MySQL de Prestashop, y lo que es relacionar las dos tablas mediante el INNER JOIN no me lo realiza dado que no actualiza ningun dato. Mi Prestashop es el 1.5.4.1 Si puedes aclararme un poco como funciona las consultas y actualizaciones de este script te estaría muy agradecido. Un saludo. Pedro. Link to comment Share on other sites More sharing options...
hbchugo Posted June 25, 2013 Share Posted June 25, 2013 (edited) Bueno yo también estuve días pensando en una solución para actualizar el precio y el stock en presta shop y trabajar con CSV no me pareció muy seguro en cuanto a la errores de importación, por otro lado una solución a nivel de programador no parecía ser razonable para un cliente final. Así que analice las tablas de productos y desdí desarrollarme un aplicativo, que sea seguro y de fácil uso para poder actualizar el stock y precio. Edited June 25, 2013 by hbchugo (see edit history) Link to comment Share on other sites More sharing options...
hbchugo Posted June 25, 2013 Share Posted June 25, 2013 Es cierto que tienes que codificar y manipular la base de datos, pero para un operador de PC, ellos no deben saber estos temas, es mejor para ellos que una solución. It is true that you have to encode and manipulate the database, but for a PC operator, they should not know these issues, it is better for them than a solution. Link to comment Share on other sites More sharing options...
mitiendaintima Posted June 25, 2013 Share Posted June 25, 2013 Hola a todos ante todo comentar que veo que aquí en el foro habéis miembros con mucho nivel, yo acabo de empezar con la tienda de prestashop 1.5.4.1 apenas tengo conocimientos de informática mas que como usuario y me cuesta mucho trabajo entender lo que ponéis en el foro hasta el punto de que no se por donde meterle mano, lo poco que se lo he aprendido en plan autodidacta he estado leyendo muchos tutoriales de los que los miembros del foro han ido haciendo para conseguir que mi tienda este en funcionamiento, dispongo de aproximadamente unos 700 productos que he insertado manualmente uno a uno con sus correspondientes fotos y combinaciones de tallas en el caso de la ropa. Ahora me veo impotente para gestionar los stocks y los precios de la tienda, el proveedor que me sirve me facilita diferentes archivos en varios formatos .txt, .mdb, .xml, .csv, .jpg, .flv, .swf,con datos de stock, productos descatalogados, precios, etc. Pero yo he intentando meterlos en prestashop y me da siempre error, agradecería que si alguien de los presentes a conseguido poder solucionar estos problemas o como he leído a conseguido hacer algún programa que facilite este asunto, lo pusiese a disposición de los miembros, con un tutorial para gente inexperta como yo, que nos hemos embarcado en este tema para salir adelante en estos tiempos difíciles que corren. Gracias. Link to comment Share on other sites More sharing options...
hbchugo Posted June 26, 2013 Share Posted June 26, 2013 (edited) Hola mch46025, me llamo Hugo Bonilla de www.2aswebperu.com. me podrias enviar tu correo. Estoy desarrollando un programa para esta funcionalidad y me esta dando resultado, es un entorno desktop y maneja los acceso a la base de datos más algunos registros en el server y DB. Aquí los datos: http://guiachimbote....Inversiones.air user: [email protected] pass: 123456789 Archivo a subir: http://guiachimbote....a/productos.xls y la tienda de prueba donde actualiza es http://guiachimbote.com/tienda/ Edited June 26, 2013 by hbchugo (see edit history) Link to comment Share on other sites More sharing options...
Recommended Posts