Vote to Improve PrestaShop

PrestaShop Forum: Build a free online shop. Count on the Community!

The best place in the world to ask questions about PrestaShop and get advice from our passionate community!

PrestaShop Forum: Build a free online shop. Count on the Community!

Jump to content

 
Photo

[Aporte] Actualizar productos por referencia ¡Por fin!


  • This topic is locked This topic is locked
17 replies to this topic
soanix

    PrestaShop Apprentice

  • Members
  • PipPip
  • 167 posts

Posted 07 July 2011 - 05:26 PM

Saludos Compañeros de fatiga,

Se que muchos estan locos como yo lo estaba hace 5 minutos, por saber como actualizar productos por la referencia, y no por la id del producto.

Pues señores tengo la solución:

Un ingles de esos que pregunta afirmando, comentó que había modificado una cosa y le funcionó, pero si el producto no estaba en el csv, se lo borraba.

Pues gracias a ese codigo, que es verdad, no hacía del todo bien su funcion, saque lo que puede ser nuestra solución.

Aqui va:

Se necesitan unicamente 2 modificaciones:

Buscamos el siguiente texto en el archivo product.php de la carpeta classes:

public static function existsInDatabase($id_product)    {        $row = Db::getInstance()->getRow('        SELECT `id_product`        FROM '._DB_PREFIX_.'product p        WHERE p.`id_product` = '.(int)($id_product));        return isset($row['id_product']);    }


Justo después añadiremos esto otro:

public static function refInDatabase($ref)    {        $sql = 'SELECT id_product FROM '._DB_PREFIX_.'product WHERE reference = \''.$ref.'\'';        $tab = Db::getInstance()->getValue($sql);        return $tab;    }


Así que quedará de esta manera:

public static function existsInDatabase($id_product)    {        $row = Db::getInstance()->getRow('        SELECT `id_product`        FROM '._DB_PREFIX_.'product p        WHERE p.`id_product` = '.(int)($id_product));        return isset($row['id_product']);    }    public static function refInDatabase($ref)    {        $sql = 'SELECT id_product FROM '._DB_PREFIX_.'product WHERE reference = \''.$ref.'\'';        $tab = Db::getInstance()->getValue($sql);        return $tab;    }


Despues, buscaremos el archivo AdminImport.php el la carpeta /admin/tabs/

En este doccumento buscaremos el codigo:

if ($product->id AND Product::existsInDatabase((int)($product->id))){                    $datas = Db::getInstance()->getRow('SELECT `date_add` FROM `'._DB_PREFIX_.'product` WHERE `id_product` = '.(int)($product->id));                    $product->date_add = pSQL($datas['date_add']);                    $res = $product->update();}



Por encima de ese codigo añadiremos lo siguiente:

if ($product->reference AND Product::refInDatabase($product->reference))        {                                        $product->id = Product::refInDatabase($product->reference);         }


Así que quedará de esta manera:

if ($product->reference AND Product::refInDatabase($product->reference))                {                                        $product->id = Product::refInDatabase($product->reference);                 }                if ($product->id AND Product::existsInDatabase((int)($product->id)))                {                    $datas = Db::getInstance()->getRow('SELECT `date_add` FROM `'._DB_PREFIX_.'product` WHERE `id_product` = '.(int)($product->id));                    $product->date_add = pSQL($datas['date_add']);                    $res = $product->update();                }



Bueno señores a disfrutarlo.


por cierto, está probado en la version 4.1.
Clonic.org
--------------

Visita Nuestras tienda
ClonicShop

Veladecó

guillegm

    PrestaShop Newbie

  • Members
  • Pip
  • 17 posts

Posted 08 July 2011 - 10:27 PM

Muy interesante. ¿Funciona en 1.4.3?

Pero, ¿porque no es posible actualizar nativamente los precios por referencia?

soanix

    PrestaShop Apprentice

  • Members
  • PipPip
  • 167 posts

Posted 08 July 2011 - 10:50 PM

Mi version es la: PrestaShop™ 1.4.3

así que si que funciona (LOGICAL) jajaja


Eso me gustaría saber a mi, tamnpoco es cambiar medio prestashop, son 4 lineas en uno y 4 lineas en otro.
Clonic.org
--------------

Visita Nuestras tienda
ClonicShop

Veladecó

jaimemm

    PrestaShop Apprentice

  • Members
  • PipPip
  • 92 posts

Posted 09 July 2011 - 06:21 AM

Por qué tantas consultas SQL cuando sólo hace falta una? No sería muuuucho más fácil usar únicamente estas líneas?

if ($product->id)
{

$datas = Db::getInstance()->getRow('SELECT `date_add` FROM `'._DB_PREFIX_.'product` WHERE `reference`=$product->reference);
if (isset($datas['reference']))
{
$product->date_add = pSQL($datas['date_add']);
$res = $product->update();
}
}

soanix

    PrestaShop Apprentice

  • Members
  • PipPip
  • 167 posts

Posted 09 July 2011 - 12:29 PM

ese quit ala posivilidad de actualizar por id si quieres.
Clonic.org
--------------

Visita Nuestras tienda
ClonicShop

Veladecó

guillegm

    PrestaShop Newbie

  • Members
  • Pip
  • 17 posts

Posted 14 July 2011 - 03:54 PM

Gracias Soanix, lo he probado y funciona correctamente, ahora puedo actualizar los precios por referencia. Funciona!!!

Muchas gracias compañero!!

outblast

    PrestaShop Apprentice

  • Members
  • PipPip
  • 103 posts

Posted 17 July 2011 - 08:43 PM

The problem is that deletes the missing fields for example if i don’t put the description, suplier, producer… in the csv. file, after update the product description, suplier, producer from the website disappears, please tell me what is wrong. TXS

version 1.5.6.0
Termopane Timisoara


guillegm

    PrestaShop Newbie

  • Members
  • Pip
  • 17 posts

Posted 20 July 2011 - 08:24 AM

Referente a lo que dice el amigo anglosajón de arriba;

Si actualizo los productos por ID, ¿necesito volver a poner todos los campos (despripción, fabricante, meta tags, etc...)? Es que yo solo necesito actualizar los precios.

_____________________________________________________

If I update the items by ID, I need to fill in all fields? I only need update the price.



SAludos!!!

outblast

    PrestaShop Apprentice

  • Members
  • PipPip
  • 103 posts

Posted 20 July 2011 - 02:17 PM

if u update by ID i don't need to put all the fields, u can put only the id and the price, test first with 1 product, should work

version 1.5.6.0
Termopane Timisoara


raitiamine

    PrestaShop Newbie

  • Members
  • Pip
  • 17 posts

Posted 14 August 2011 - 03:56 PM

Hi,

After modification of Product.php file I have a blanck page and APACHE give me this error :

[Sun Aug 14 14:19:13 2011] [error] [client XX.XXX.XXX.XXX] PHP Parse error:  syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in /var/www/classes/Product.php on line 3012

error in this line :

$sql = 'SELECT id_product FROM '._DB_PREFIX_.'product WHERE reference = ''.$ref.''';

thank you

soanix

    PrestaShop Apprentice

  • Members
  • PipPip
  • 167 posts

Posted 30 August 2011 - 04:47 PM

fix:

$sql = "SELECT id_product FROM "._DB_PREFIX_."product WHERE reference = '".$ref."'";
Clonic.org
--------------

Visita Nuestras tienda
ClonicShop

Veladecó

pk2

    PrestaShop Apprentice

  • Members
  • PipPip
  • 42 posts

Posted 13 October 2011 - 02:23 PM

Hola buenas, me da error en la siguiente linea del products.php

$sql = 'SELECT id_product FROM '._DB_PREFIX_.'product WHERE reference = ''.$ref.''';

uso la version de ps 1.4.4.1

Puede ser devido a esto

pk2

    PrestaShop Apprentice

  • Members
  • PipPip
  • 42 posts

Posted 13 October 2011 - 02:35 PM

ok, la solucion la tengo un poco mas arriba, no me fije bien... graciaaaas

infsistemas

    PrestaShop Apprentice

  • Members
  • PipPip
  • 59 posts

Posted 18 October 2011 - 09:54 PM

la nueva versión 1.4.5 ya tiene implementado esto :P

Todo lo que he aprendido de Prestashop en mi blog: http://javierrguez.w...g/prestashop-2/


soanix

    PrestaShop Apprentice

  • Members
  • PipPip
  • 167 posts

Posted 24 October 2011 - 01:32 AM

la nueva versión 1.4.5 ya tiene implementado esto :P


Lo he provado y hace lo mismo que el mio, te manda todo a inicio y ale. Por suerte he creado un modulo que aun está en fase test, que hace lo mismo que el Admin Import, aparentemente casi igual, pero te actualiza unicamente aquello que eliges. Directamente por sql. Por lo que todo lo que no este en el csv ni seleccionado como columna ni lo tocará.


No se, me he llevado una desilusión con la actualización
Clonic.org
--------------

Visita Nuestras tienda
ClonicShop

Veladecó

pk2

    PrestaShop Apprentice

  • Members
  • PipPip
  • 42 posts

Posted 03 November 2011 - 05:36 PM


Lo he provado y hace lo mismo que el mio, te manda todo a inicio y ale. Por suerte he creado un modulo que aun está en fase test, que hace lo mismo que el Admin Import, aparentemente casi igual, pero te actualiza unicamente aquello que eliges. Directamente por sql. Por lo que todo lo que no este en el csv ni seleccionado como columna ni lo tocará.


No se, me he llevado una desilusión con la actualización

Como llevas el tema del modulo, eh actualizado a 1.4.5 y no se si actualizar productos sin que se me vaya al garete

soanix

    PrestaShop Apprentice

  • Members
  • PipPip
  • 167 posts

Posted 03 November 2011 - 07:13 PM

Como llevas el tema del modulo, eh actualizado a 1.4.5 y no se si actualizar productos sin que se me vaya al garete


He terminado la v1.0 funcional. Está aquí:

http://www.prestasho...in-import-1451/

estoy terminando la versión 2.0 que añade una funcionalidad para actualizar solo si son de un proveedor.
Clonic.org
--------------

Visita Nuestras tienda
ClonicShop

Veladecó

neokid

    PrestaShop Apprentice

  • Members
  • PipPip
  • 116 posts

Posted 17 November 2011 - 02:19 AM

Desgraciadamente en la versión 1.4.5.1 a pesar de que teoricamente se puede actualizar mediante la referencia, como bien decías al hacerlo elimina los campos donde no encuentra texto.

El archivo adminimport parece contener con exactitud el código que dices, sin embargo en el product.php varía respecto al que tú dices, siendo éste:



public static function refInDatabase($ref)
{
$sql = 'SELECT id_product FROM '._DB_PREFIX_.'product WHERE reference = ''.$ref.''';
$tab = Db::getInstance()->getValue($sql);
return $tab;
}


¿Podrías dar luz a un ignorante en programación por favor? Adjunto los archivos por si pudieras ser tan amable de decirme algo.

Attached Files


David C. / Responsable e-commerce óptica online

Gafas de sol Supergafas.com





0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users