vendetta V Posted January 4, 2016 Share Posted January 4, 2016 (edited) Quiero hacer una sincronización(importar) automática desde el FTP. Por lo que se el modulo de prestashop permite importar solo de forma manual y unas cuantas tablas, de las cuales me interesa categorías, clientes, productos y direcciones. Pero luego aparte me interesa una tabla llamada ps_specific_price que se utiliza para los descuentos de cada producto a cada cliente. Y esta no viene especifica en el modulo de prestashop a la hora de importar manualmente. Porque digo esto? Es por el script que pondré a continuación, ¿Si esta tabla se trataría igual en el script que las tablas de los módulos? He encontrado este script para la versión 1.5.4.1 y me preguntaba que tendría que hacer para adaptarlo a la 1.6.1 <!-- COMPATIBLE CON PRESTASHOP VERSION 1.5.4.1 Script para importar productos y categorías en Prestashop FUENTE: http://programadorphp.es/script-para-importar-productos-y-categorias-en-prestashop Mas Datos: http://www.prestashop.com/forums/topic/74735-importar-productos-desde-cvs-con-script-no-sube-imagenes/page__p__429097__hl__loadproductspost__fromsearch__1#entry429097 http://www.prestashop.com/forums/topic/117001-adminimport-y-script-de-importacion/page__hl__loadproductspost__fromsearch__1 Aquí dejo el código del script que, situado en la parte de la tienda, lanza una importación de un fichero CSV productos (pro.csv) o categorías (cat.csv), según se le indique por GET['entity'] Los ficheros CSV a importar deben encontrarse en el directorio /adminxxx/import/pro.csv mientras que nuestro script debe de estar situado en el directorio /adminxxx/script_import.php del Prestashop. Llamar al script: http://www.midominio.com/admin123/script_import.php?entity=1 SOLUCIONES: * Sino importa las imágenes, añadir estas líneas en AdminImportController.php, dentro de la función “public function productImport()”, Antes de: if (isset($product->image) && is_array($product->image) && count($product->image)) Añadid esto: if(!is_array($product->image)) $product->image = explode(“,”,$product->image); * Si “Fatal error: Cannot redeclare class…” comentar la linea //include_once '../controllers/admin/AdminImportController.php'; --> <?php echo "loading.gif"; ob_flush(); flush(); define('_PS_ADMIN_DIR_', getcwd()); include(_PS_ADMIN_DIR_.'/../config/config.inc.php'); include(_PS_ADMIN_DIR_.'/functions.php'); include_once '../controllers/admin/AdminImportController.php'; if (!isset($_GET['entity'])) die(); set_time_limit(0); //$import = New AdminImportControllerCore(); //para version 1.5.4.1 $import = New AdminImportController(); switch ($_GET['entity']) { case 0: loadCategoriesPost(); $import->categoryImport(); break; case 1: loadProductsPost(); $import->productImport(); break; case 2: loadCombinacionesPost(); $import->attributeImport(); break; case 5: loadManufacturersPost(); $import->manufacturerImport(); break; case 6: loadSuppliersPost(); $import->supplierImport(); break; default: die(); break; } exit(); //window.location=”http:script.javascript.”; function loadCategoriesPost() { $_POST = array ( 'tab' => 'AdminImport', 'skip' => '0', 'csv' => 'categories_import.csv', 'convert' => '1', 'entity' => '0', 'separator' => ';', 'multiple_value_separator' => ',', 'forceIDs' => '1', 'import' => 'Importar datos CSV', 'type_value' => array ( 0 => 'id', 1 => 'active', 2 => 'name', 3 => 'parent', 4 => 'root_category', 5 => 'description', 6 => 'meta_title', 7 => 'meta_keywords', 8 => 'meta_description', 9 => 'url_rewrite', 10 => 'image', 11 => 'shop', ), ); } function loadProductsPost() { $_POST = array ( 'tab' => 'AdminImport', 'skip' => '0', 'csv' => 'products_import.csv', 'convert' => '1', 'entity' => '1', 'separator' => ';', 'multiple_value_separator' => ',', 'forceIDs' => '1', 'import' => 'Importar datos CSV', 'type_value' => array ( 0 => 'id', 1 => 'active', 2 => 'name', 3 => 'category', 4 => 'price_tin', 5 => 'tax_rate', 6 => 'wholesale_price', 7 => 'on_sale', 8 => 'reduction_price', 9 => 'reduction_percent', 10 => 'reduction_from', 11 => 'reduction_to', 12 => 'reference', 13 => 'supplier_reference', 14 => 'supplier', 15 => 'manufacturer', 16 => 'ean13', 17 => 'upc', 18 => 'ecotax', 19 => 'weight', 20 => 'quantity', 21 => 'description_short', 22 => 'description', 23 => 'tags', 24 => 'meta_title', 25 => 'meta_keywords', 26 => 'meta_description', 27 => 'link_rewrite', 28 => 'available_now', 29 => 'available_later', 30 => 'available_for_order', 31 => 'date_add', 32 => 'show_price', 33 => 'image', 34 => 'delete_existing_images', 35 => 'features', 36 => 'enabled_internet', 37 => 'state', 38 => 'shop', ), ); } function loadManufacturersPost() { $_POST = array ( 'tab' => 'AdminImport', 'skip' => '0', 'csv' => 'manufacturers_import.csv', 'convert' => '1', 'entity' => '5', 'separator' => ';', 'multiple_value_separator' => ',', 'forceIDs' => '1', 'import' => 'Importar datos CSV', 'type_value' => array ( 0 => 'id', 1 => 'active', 2 => 'name', 3 => 'description', 4 => 'short_description', 5 => 'meta_title', 6 => 'meta_keywords', 7 => 'meta_description', 8 => 'shop', ), ); } function loadSuppliersPost() { $_POST = array ( 'tab' => 'AdminImport', 'skip' => '0', 'csv' => 'suppliers_import.csv', 'convert' => '1', 'entity' => '6', 'separator' => ';', 'multiple_value_separator' => ',', 'forceIDs' => '1', 'import' => 'Importar datos CSV', 'type_value' => array ( 0 => 'id', 1 => 'active', 2 => 'name', 3 => 'description', 4 => 'short_description', 5 => 'meta_title', 6 => 'meta_keywords', 7 => 'meta_description', 8 => 'shop', ), ); } function loadCombinacionesPost() { $numero = count($_POST); $_POST = array ( 'tab' => 'AdminImport', 'skip' => '1', 'csv' => 'combinaciones.csv', 'convert' => ”, 'entity' => '2', 'separator' => ';', 'multiple_value_separator' => ',', 'import' => 'Importar datos CSV', 'u' => ”, 'type_value' => array ( 0 => 'id_product', 1 => 'group', 2 => 'attribute', ), ); } ?> Edited January 4, 2016 by vendetta V (see edit history) Link to comment Share on other sites More sharing options...
yguerin Posted March 23, 2016 Share Posted March 23, 2016 Dear, Great, to get it working with prestashop 1.6 just add in the POST array : 'iso_lang' => 'YOUR_LANGUAGE', Regards, Yves Link to comment Share on other sites More sharing options...
shacker Posted March 26, 2016 Share Posted March 26, 2016 Hola. Ese script no importa precios especificos. Prestashop no tiene una opcion para hacerlo por defecto. Ha yque armar algo desde cero. este modulo permite ejecutar importacion por cron de manera automatica http://addons.prestashop.com/es/21683-csv-cron-import-dropshipping.html Link to comment Share on other sites More sharing options...
yguerin Posted March 29, 2016 Share Posted March 29, 2016 Olla, Yes if you use the crontab feature from a Unix box like I did, it bypass the login hell to get directly to run some core functions. I only use it to import data from akeneo export. My tests were to get the categories example file (from the import tab), remove the categories in prestashop and re-import with this script the categories from the example file and it works great Next step is to generate this script, especially the function to load the POST data from a shell script, executed by a crontab job or by the user itself (on demand). My objectives are to do the export from akeneo and re-import to prestashop by cronjob or on demand. Regards Yves Link to comment Share on other sites More sharing options...
Recommended Posts