[Aporte] Actualizar productos por referencia ¡Por fin! - Discusión general - PrestaShop

Jump to content

Photo

[Aporte] Actualizar productos por referencia ¡Por fin!

  • This topic is locked This topic is locked

#1

Posted 07 July 2011 - 05:26 PM

soanix

    PrestaShop Apprentice

  • Members
  • PipPip
  • 167 Active Posts
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ó

#2

Posted 08 July 2011 - 10:27 PM

guillegm

    PrestaShop Newbie

  • Members
  • Pip
  • 17 Active Posts
Muy interesante. ¿Funciona en 1.4.3?

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

#3

Posted 08 July 2011 - 10:50 PM

soanix

    PrestaShop Apprentice

  • Members
  • PipPip
  • 167 Active Posts
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ó

#4

Posted 09 July 2011 - 06:21 AM

jaimemm

    PrestaShop Apprentice

  • Members
  • PipPip
  • 92 Active Posts
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();
}
}

#5

Posted 09 July 2011 - 12:29 PM

soanix

    PrestaShop Apprentice

  • Members
  • PipPip
  • 167 Active Posts
ese quit ala posivilidad de actualizar por id si quieres.
Clonic.org
--------------

Visita Nuestras tienda
ClonicShop

Veladecó

#6

Posted 14 July 2011 - 03:54 PM

guillegm

    PrestaShop Newbie

  • Members
  • Pip
  • 17 Active Posts
Gracias Soanix, lo he probado y funciona correctamente, ahora puedo actualizar los precios por referencia. Funciona!!!

Muchas gracias compañero!!

#7

Posted 17 July 2011 - 08:43 PM

outblast

    PrestaShop Apprentice

  • Members
  • PipPip
  • 103 Active Posts
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


#8

Posted 20 July 2011 - 08:24 AM

guillegm

    PrestaShop Newbie

  • Members
  • Pip
  • 17 Active Posts
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!!!

#9

Posted 20 July 2011 - 02:17 PM

outblast

    PrestaShop Apprentice

  • Members
  • PipPip
  • 103 Active Posts
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


#10

Posted 14 August 2011 - 03:56 PM

raitiamine

    PrestaShop Newbie

  • Members
  • Pip
  • 17 Active Posts
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

#11

Posted 30 August 2011 - 04:47 PM

soanix

    PrestaShop Apprentice

  • Members
  • PipPip
  • 167 Active Posts
fix:

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

Visita Nuestras tienda
ClonicShop

Veladecó

#12
pk2

Posted 13 October 2011 - 02:23 PM

pk2

    PrestaShop Apprentice

  • Members
  • PipPip
  • 42 Active Posts
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

#13
pk2

Posted 13 October 2011 - 02:35 PM

pk2

    PrestaShop Apprentice

  • Members
  • PipPip
  • 42 Active Posts
ok, la solucion la tengo un poco mas arriba, no me fije bien... graciaaaas

#14

Posted 18 October 2011 - 09:54 PM

infsistemas

    PrestaShop Apprentice

  • Members
  • PipPip
  • 59 Active Posts
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/


#15

Posted 24 October 2011 - 01:32 AM

soanix

    PrestaShop Apprentice

  • Members
  • PipPip
  • 167 Active Posts

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ó

#16
pk2

Posted 03 November 2011 - 05:36 PM

pk2

    PrestaShop Apprentice

  • Members
  • PipPip
  • 42 Active Posts


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

#17

Posted 03 November 2011 - 07:13 PM

soanix

    PrestaShop Apprentice

  • Members
  • PipPip
  • 167 Active Posts

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ó

#18

Posted 17 November 2011 - 02:19 AM

neokid

    PrestaShop Apprentice

  • Members
  • PipPip
  • 116 Active Posts
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

Cookies help us deliver our services. By using our services, you agree to use our cookies.     Learn more