Pergunta

Minha pergunta é mais ampla no início, mas entrarei em mais detalhes posteriormente.Tenho cerca de 3.000 produtos onde tenho os Skus e preços em um arquivo .csv.Agora os preços mudaram recentemente e gostaria de fazer upload/atualizar esses preços dos produtos.Existe uma maneira rápida de fazer isso através de um script usando a API SOAP?

Ou existe uma maneira mais fácil de contornar isso?

ATUALIZAREu usei essa função http://www.blog.magepsycho.com/updating-product-prices-in-magento-in-easier-faster-way/ mas agora a incompatibilidade de valor e preço.Existem opções melhores passando por um csv e, em seguida, combinando os preços de cada sku com um preço.

Foi útil?

Solução

Não creio que o uso dos serviços SOAP proporcione o que você precisa rapidamente.Quero dizer, provavelmente funcionará, mas será muito lento para produtos de 3k.
Em vez disso, tente este script.
Digamos que seu csv tenha 2 colunas.SKU e preço.

$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
    )
}

você pode colocar esse código em um de seus modelos ou auxiliares personalizados e depois executá-lo.Você pode querer verificar o código.Eu não testei.Também faça backup do seu banco de dados.

[EDITAR]

Se você executar isso a partir de um arquivo, crie um chamado price_update.php no mesmo nível que index.php e adicione isto nele:

<?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();

Depois disso, adicione o código acima que analisa o csv e chame no seu navegador MAGE_ROOT/price_update.php.

Outras dicas

 Digite a descrição da imagem aqui Acabou de criar disponibilidade, preço, custo CSV-Updater. Interessado em desenvolvimento ou contribuição, então postando aqui.

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

Cumprimentos, Eugene.

update: Lembre-se da solução simples, implementada no próprio Magento.

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a magento.stackexchange
scroll top