Programador PHP freelance

Script para importar productos y categorías en Prestashop


Si lo que buscas es un script que te permita importar datos a Prestashop desde un ERP, fuentes CSV/XML o varios proveedores, lee este otro post.


 

Estoy en pleno desarrollo de una tienda virtual con Prestashop para un cliente del sector de la ferretería. El cliente tiene su aplicación de gestión de productos en el servidor de la empresa y la base de datos de estos debe de ser sincronizada con el e-commerce de forma automática de modo que cualquier modificación en la misma se vea actualizada en la base de datos del Prestashop.

Inicialmente había pensado en la posibilidad de hacer un script que sincronizara las dos bases de datos conectando directamente con ellas pero visto que el Prestashop dispone de un módulo de importación a partir de ficheros CSV, he decidido utilizarlo.

En esta arquitectura existen dos partes, la parte del cliente situada en el servidor local de la empresa y la parte de la tienda virtual situada en un alojamiento web, que entre otras cosas requiere dar de alta reglas en el firewall para permitir conectar al Mysql desde una IP externa, cosa que finalmente no necesitaremos.

En la parte del cliente programaré un script que exporte en el formato CSV, esperado por Prestashop, tanto las categorías como los productos -en este caso lo único que necesito exportar- y que suba ambos ficheros al servidor donde está ubicada la tienda.

En la parte de la tienda virtual se requiere un script que sea capaz de lanzar el proceso de importación y es el que describiré a continuación.

Existía la posibilidad, en esta segunda parte, de simular la navegación utilizando CURL, haciendo el login y posterior proceso de importación, pero complica mucho más las cosas cuando lo que necesitamos es simplemente llamar a la clase AdminImport y utilizar su funcionalidad.

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 /admin/import mientras que nuestro script debe de estar situado en el directorio /admin del Prestashop.

Espero que le pueda (re)servir a alguien.

categoryImport(); 
    break;

  case 1:
    loadProductsPost();
    $import->productImport();
    break;

  default:
    die();
    break;
}

function loadCategoriesPost() {
  $_POST = array (
    'tab' => 'AdminImport',
    'skip' => '0',
    'csv' => 'cat.csv',
    'convert' => '',
    'entity' => '0',
    'separator' => ';',
    'multiple_value_separator' => ',',
    'import' => 'Importar datos CSV',
    'type_value' =>
    array (
      0 => 'id',
      1 => 'active',
      2 => 'name',
      3 => 'parent',
      4 => 'description',
      5 => 'meta_title',
      6 => 'meta_keywords',
      7 => 'meta_description',
      8 => 'link_rewrite',
      9 => 'image',
    ),
  );
}

function loadProductsPost() {
  $_POST = array (
    'tab' => 'AdminImport',
    'skip' => '0',
    'csv' => 'pro.csv',
    'convert' => '',
    'entity' => '1',
    'separator' => ';',
    'multiple_value_separator' => ',',
    'import' => 'Importar datos CSV',
    'type_value' =>
    array (
      0 => 'id',
      1 => 'active',
      2 => 'name',
      3 => 'category',
      4 => 'price_tex',
      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 => 'ecotax',
      18 => 'weight',
      19 => 'quantity',
      20 => 'description_short',
      21 => 'description',
      22 => 'tags',
      23 => 'meta_title',
      24 => 'meta_keywords',
      25 => 'meta_description',
      26 => 'available_now',
      27 => 'available_later',
      28 => 'image',
      29 => 'no',
    ),
  );
}
?>

Hay una alternativa a este script que permite importar los datos a Prestashop desde un ERP, fuentes CSV/XML o múltiples fuentes, como proveedores de drop shipping.

Para saber más haz click aquí