Pregunta

Mi pregunta más amplio, en el comienzo, pero voy a ir más en detalle más adelante.Tengo alrededor de 3000 productos, donde tengo el Sku y los precios en una .archivo csv.Ahora los precios cambiado recientemente y me gustaría cargar/actualizar estos precios de los productos.Hay una forma rápida de hacer esto a través de una secuencia de comandos utilizando la API de SOAP?

O es que hay una manera más fácil de todo esto?

ACTUALIZACIÓN He utilizado esta función http://www.blog.magepsycho.com/updating-product-prices-in-magento-in-easier-faster-way/ pero ahora el valor y la diferencia en precio.Hay mejores opciones de ir a través de un archivo csv y, a continuación, coinciden los precios para cada sku para un precio.

¿Fue útil?

Solución

No creo que el uso de los servicios SOAP va a obtener lo que usted necesita rápidamente.Quiero decir que probablemente va a funcionar, pero que va a ser muy lento para 3k productos.
En lugar de tratar de esta secuencia de comandos.
Supongamos que el archivo csv tiene 2 columnas.SKU y el precio.

$skuIndex = 0;
$priceIndex = 1;
$csv = 'path/to/file.csv';
$io = new Varien_Io_File();
//an array to keep the products by price
$productIdsByPrice = array();
//a product model instance
$productModel = Mage::getSingleton('catalog/product');
//read the csv
$io->streamOpen($csv, 'r+');
while($csvData = $io->streamReadCsv()){
   if (count($csvData) < 2) { //skip rows with less than 2 columns
       continue;
   }
   $sku = trim($csvData[$skuIndex]);
   //get the product id by sku
   $id = $productModel->getIdBySku($sku);
   if ($id) {
      //if the id exists then mark it for update
      $price = trim($csvData[$priceIndex]);
      if (!isset($productIdsByPrice[$price])) {
         $productIdsByPrice[$price] = array();
      }
      $productIdsByPrice[$price][] = $id;
   }
}
//now you should have the product ids you need to update grouped by price
//just do the fast update
foreach ($productIdsByPrice as $price => $ids) {
    Mage::getSingleton('catalog/product_action')->updateAttributes(
        $ids, //what products to update
        array('price' => $price), //what attributes to update
        0 //store id for update
    )
}

usted puede colocar este código en uno de sus modelos personalizados o ayudantes y, a continuación, ejecútelo.Usted puede verificarlo en el código.Yo no lo he probado.También copia de seguridad de su base de datos.

[EDITAR]

Si se ejecuta desde un archivo, crear una que se llama price_update.php en el mismo nivel que index.php y añadir esto es:

<?php 
error_reporting(E_ALL | E_STRICT);
define('MAGENTO_ROOT', getcwd()); 
$mageFilename = MAGENTO_ROOT . '/app/Mage.php'; 
require_once $mageFilename; 
Mage::setIsDeveloperMode(true); 
ini_set('display_errors', 1);
umask(0);
Mage::app();

Después de esto, agregue el código de arriba que se analiza el csv y llamada en tu navegador MAGE_ROOT/price_update.php.

Otros consejos

 ingrese la descripción de la imagen aquí Acaba de crear disponibilidad, precio, costo CSV-Updater. Interesado en el desarrollo o la contribución, así que publicándolo aquí.

http://lycenok.com/magento-extensions/magento-csv-product-updater.html https://github.com/lycenok/magento_csv_product_updater

Saludos, Eugene.

Actualización: Recuerde acerca de la solución simple, implementada en Magento en sí.

Sistema -> Importar / Exportar -> "DataFlow - Perfiles"

Licenciado bajo: CC-BY-SA con atribución
No afiliado a magento.stackexchange
scroll top