[email protected] Posted June 6, 2013 Share Posted June 6, 2013 Hola buenos días! Tengo un csv que importo, me lo hace sin problemas y me pone las características bien. Pero al cabo de un tiempo van desapareciendo los campos de las características... se borran de la ficha de producto y por tanto no salen en la tienda... A alguien le ha pasado algo tan raro???? ya me ha pasado dos veces, y lo que hago es volver a cargar el csv y se vuelve a ver bien... pero al tiempo van desapareciendo... rarisimo la verdad. estoy trabajando con versión 1.5.4 Muchas gracias! Link to comment Share on other sites More sharing options...
[email protected] Posted June 6, 2013 Author Share Posted June 6, 2013 (edited) ACUTALIZO: creo que he encontrado cuando lo hace... tiene pinta de bug. Si cargo todas las caracteristicas por CSV se muestran bien. Pero si voy a editar una característica manualmente, al editar y guardar se colapsa o algo y hace desaparecer las otras :S:S. Además se borran algunas características, otras no... no se un follón la verdad Edited June 6, 2013 by [email protected] (see edit history) Link to comment Share on other sites More sharing options...
[email protected] Posted June 6, 2013 Author Share Posted June 6, 2013 ACTUALIZO2: el error pasa también si entro a un producto cualquier y le doy simplemente a guardar. Borra alguna de las características. Mirando las tablas y comparando con justo la que importa y cuando le doy a guardar, desaparecen bastantes filas de los features... q desastre. Alguien sabe algo? gracias Link to comment Share on other sites More sharing options...
huerto69 Posted July 2, 2013 Share Posted July 2, 2013 A mi me está pasando lo mismo... Link to comment Share on other sites More sharing options...
[email protected] Posted July 2, 2013 Author Share Posted July 2, 2013 Creo que es por un bug del prestashop al importar varias características desde el excel con su "magnifico" importador de csv... Lo que nosotros hicimos para solucionar fue utilizar el "EmagicOne Store Manager for Prestashop" Que permite hacer muchas cosas. Al principio es un poco "lio" el tema de la importación con este programa pero al pillarle el truco va bien. Con este importador cada característica ha de estar en una columna separada etc... Espero que te sirva! Tiene una versión de 30 días de prueba Link to comment Share on other sites More sharing options...
Sergio Ruiz Posted July 2, 2013 Share Posted July 2, 2013 Si creeis que es algun bug, a lo mejor hay algo comentado aqui: http://forge.prestashop.com/secure/Dashboard.jspa o aqui: https://github.com/PrestaShop/PrestaShop/pulls Link to comment Share on other sites More sharing options...
giselamr Posted July 31, 2013 Share Posted July 31, 2013 ya intente subiendolo en columnas diferenres o en la misma columna, y nada, continua borrando datos... Link to comment Share on other sites More sharing options...
huerto69 Posted July 31, 2013 Share Posted July 31, 2013 (edited) Está reportado un error en las Features (características) que hace que estas se borren parcial o totalmente cuando, tras importar productos desde CSV, editamos alguno de ellos y luego lo guardamos. Está documentado en: http://forge.prestas...owse/PSCFV-7907 Lo que sigue es una traducción aproximada del inglés de esta entrada: El error parece estar en la función addFeatureValueImport()definida en la clase FeatureValue. Esta función se utiliza para insertar los distintos valores de cada feature que se hallan encontrado durante una importación de productos en la base de datos. El problema es que a veces lo hace mal, ya que interpreta que las features con valores idénticos NO SON valores personalizados. Ejemplo: si se encuentra un valor de feature para “descuento” establecido como “25%”, la segunda vez que lo encuentra entiende que el valor no es personalizado. En este caso esto impide que el valor sea editado y cambiado a 12%, por ejemplo, como valor personalizado. La función intenta “averiguar” que tipo de feature está importando de manera errónea. Más adelante, cuando se edita un producto (se cambie, o no, algo) se realiza el siguiente proceso:Los valores de las features son declarados como personalizados en addFeatureValueImport(). Esto hace que los valores sean mostrados como valores individuales, mientras que la función rechaza un valor como si ya existiese. Los muestra como valores personalizados pero los trata como valores sincronizados. El punto 3. explica por qué los valores se actualizan de forma correcta en los productos que han sido introducidos mediante el editor. El punto 1. explica por qué CUALQUIER otro producto que haya sido importado y que contenga el mismo valor de feature hace que esos valores sean borrados. La solución propuesta en el POST es tratar todas las features como personalizadas en la función addFeatureValueImport() y forzarlas como nuevas features para evitar que se borren. Es lo que hay... de momento y hasta que no se corrija este error de forma oficial solo se pueden importar features personalizadas. De esta forma 6V y 12V (en el caso de los Voltios de las baterías) se tratan como valores editables e individuales, no como seleccionables en un desplegable, que sería lo lógico. El código de la función modificado: public static function addFeatureValueImport($id_feature, $name) Se seleccionan todos los valores de feature asociados al producto y son recorridos mediante un bucle para: Si el valor de la feature es personalizado (valor introducido en un campo de texto en lugar de seleccionado de una lista de valores predefinidos mediante un desplegable), cada ocurrencia de ese valor de feature es borrado temporalmente de las tablas ps_feature_value y ps_feature_value_lang. Todas las asociaciones realizadas entre el producto y cada feature y entre esta y sus valores son eliminadas (borradas de la tabla ps_feature_product). Los distintos valores de feature pasados son iterados. Se pasa el ID, que permite a Prestashop reinsertar los valores de cada feature actualizados (evitando generar nuevos Ids). Se actualizan las tablas ps_feature_product, ps_feature_value y ps_feature_value_lang. { /*$rq = Db::getInstance()->executeS(' SELECT fv.`id_feature_value` FROM '._DB_PREFIX_.'feature_value fv LEFT JOIN '._DB_PREFIX_.'feature_value_lang fvl ON (fvl.`id_feature_value` = fv.`id_feature_value`) WHERE `value` = \''.pSQL($name).'\' AND fv.`id_feature` = '.(int)$id_feature.' GROUP BY fv.`id_feature_value` LIMIT 1 '); if (!isset($rq[0]['id_feature_value']) || !$id_feature_value = (int)$rq[0]['id_feature_value']) { // Feature doesn't exist, create it */ // Al comentar las líneas anteriores de código forzamos a PRESTASHOP a crear un nuevo valor para la FEATURE tratándolas todas como PERSONALIZADAS $feature_value = new FeatureValue(); $languages = Language::getLanguages(); foreach ($languages as $language) $feature_value->value[$language['id_lang']] = strval($name); $feature_value->id_feature = (int)$id_feature; $feature_value->custom = 1; $feature_value->add(); return (int)$feature_value->id; /*} return (int)$id_feature_value;*/ } Yo lo he probado y he conseguido solucionar el problema. Edited July 31, 2013 by huerto69 (see edit history) 1 Link to comment Share on other sites More sharing options...
Sergio Ruiz Posted July 31, 2013 Share Posted July 31, 2013 Está reportado un error en las Features (características) que hace que estas se borren parcial o totalmente cuando, tras importar productos desde CSV, editamos alguno de ellos y luego lo guardamos. Está documentado en: http://forge.prestas...owse/PSCFV-7907 Lo que sigue es una traducción aproximada del inglés de esta entrada: El error parece estar en la función addFeatureValueImport()definida en la clase FeatureValue. Esta función se utiliza para insertar los distintos valores de cada feature que se hallan encontrado durante una importación de productos en la base de datos. El problema es que a veces lo hace mal, ya que interpreta que las features con valores idénticos NO SON valores personalizados. Ejemplo: si se encuentra un valor de feature para “descuento” establecido como “25%”, la segunda vez que lo encuentra entiende que el valor no es personalizado. En este caso esto impide que el valor sea editado y cambiado a 12%, por ejemplo, como valor personalizado. La función intenta “averiguar” que tipo de feature está importando de manera errónea. Más adelante, cuando se edita un producto (se cambie, o no, algo) se realiza el siguiente proceso:Los valores de las features son declarados como personalizados en addFeatureValueImport(). Esto hace que los valores sean mostrados como valores individuales, mientras que la función rechaza un valor como si ya existiese. Los muestra como valores personalizados pero los trata como valores sincronizados. El punto 3. explica por qué los valores se actualizan de forma correcta en los productos que han sido introducidos mediante el editor. El punto 1. explica por qué CUALQUIER otro producto que haya sido importado y que contenga el mismo valor de feature hace que esos valores sean borrados. La solución propuesta en el POST es tratar todas las features como personalizadas en la función addFeatureValueImport() y forzarlas como nuevas features para evitar que se borren. Es lo que hay... de momento y hasta que no se corrija este error de forma oficial solo se pueden importar features personalizadas. De esta forma 6V y 12V (en el caso de los Voltios de las baterías) se tratan como valores editables e individuales, no como seleccionables en un desplegable, que sería lo lógico. El código de la función modificado: public static function addFeatureValueImport($id_feature, $name) Se seleccionan todos los valores de feature asociados al producto y son recorridos mediante un bucle para: Si el valor de la feature es personalizado (valor introducido en un campo de texto en lugar de seleccionado de una lista de valores predefinidos mediante un desplegable), cada ocurrencia de ese valor de feature es borrado temporalmente de las tablas ps_feature_value y ps_feature_value_lang. Todas las asociaciones realizadas entre el producto y cada feature y entre esta y sus valores son eliminadas (borradas de la tabla ps_feature_product). Los distintos valores de feature pasados son iterados. Se pasa el ID, que permite a Prestashop reinsertar los valores de cada feature actualizados (evitando generar nuevos Ids). Se actualizan las tablas ps_feature_product, ps_feature_value y ps_feature_value_lang. { /*$rq = Db::getInstance()->executeS(' SELECT fv.`id_feature_value` FROM '._DB_PREFIX_.'feature_value fv LEFT JOIN '._DB_PREFIX_.'feature_value_lang fvl ON (fvl.`id_feature_value` = fv.`id_feature_value`) WHERE `value` = \''.pSQL($name).'\' AND fv.`id_feature` = '.(int)$id_feature.' GROUP BY fv.`id_feature_value` LIMIT 1 '); if (!isset($rq[0]['id_feature_value']) || !$id_feature_value = (int)$rq[0]['id_feature_value']) { // Feature doesn't exist, create it */ // Al comentar las líneas anteriores de código forzamos a PRESTASHOP a crear un nuevo valor para la FEATURE tratándolas todas como PERSONALIZADAS $feature_value = new FeatureValue(); $languages = Language::getLanguages(); foreach ($languages as $language) $feature_value->value[$language['id_lang']] = strval($name); $feature_value->id_feature = (int)$id_feature; $feature_value->custom = 1; $feature_value->add(); return (int)$feature_value->id; /*} return (int)$id_feature_value;*/ } Yo lo he probado y he conseguido solucionar el problema. Es decir, que tal como suponia aquí: http://www.prestashop.com/forums/index.php?/topic/252701-se-borran-las-caracteristicas-de-los-productos-sin-hacer-nada/page__view__findpost__p__1288530 el problema estaba comentado en forge.prestashop .. Link to comment Share on other sites More sharing options...
giselamr Posted July 31, 2013 Share Posted July 31, 2013 Hola Sergio Ruiz, gracias por compartir tu solución, nos será de mucha utilidad a muchos de nosotros Link to comment Share on other sites More sharing options...
Sergio Ruiz Posted July 31, 2013 Share Posted July 31, 2013 Hola Sergio Ruiz, gracias por compartir tu solución, nos será de mucha utilidad a muchos de nosotros No es mia la solución, es de: Agence LUNiV y la traducción, la ha realizado huerto69 Link to comment Share on other sites More sharing options...
Recommended Posts