Jump to content

Recommended Posts

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 by vendetta V (see edit history)
Link to comment
Share on other sites

  • 2 months later...

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

  • nadie locked this topic
Guest
This topic is now closed to further replies.
×
×
  • Create New...