Question

Ma question est plus large au début mais j'entrerai plus en détail plus tard.J'ai environ 3000 produits dont j'ai les références et les prix dans un fichier .csv.Maintenant, les prix ont changé récemment et j'aimerais télécharger/mettre à jour ces prix des produits.Existe-t-il un moyen rapide de le faire via un script utilisant l'API SOAP ?

Ou existe-t-il un moyen plus simple de contourner ce problème ?

MISE À JOURJ'ai utilisé cette fonction http://www.blog.magepsycho.com/updating-product-prices-in-magento-in-easier-faster-way/ mais maintenant l'inadéquation de la valeur et du prix.Existe-t-il de meilleures options en passant par un CSV, puis en faisant correspondre les prix de chaque SKU à un prix.

Était-ce utile?

La solution

Je ne pense pas que l'utilisation des services SOAP vous permettra d'obtenir rapidement ce dont vous avez besoin.Je veux dire que cela fonctionnera probablement, mais ce sera vraiment lent pour les produits 3k.
Essayez plutôt ce script.
Disons que votre csv comporte 2 colonnes.UGS et prix.

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

vous pouvez placer ce code dans l'un de vos modèles ou assistants personnalisés, puis l'exécuter.Vous voudrez peut-être vérifier le code.Je ne l'ai pas testé.Sauvegardez également votre base de données.

[MODIFIER]

Si vous l'exécutez à partir d'un fichier, créez-en un appelé price_update.php au même niveau que index.php et ajoutez ceci dedans :

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

Après cela, ajoutez le code ci-dessus qui analyse le csv et appelez dans votre navigateur MAGE_ROOT/price_update.php.

Autres conseils

 Entrez la description de l'image ici vient de créer la disponibilité, le prix, le coût CSV-Updater. Intéressé par le développement ou la contribution, de l'afficher ici.

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

Cordialement, Eugene.

Mise à jour: N'oubliez pas de la solution simple, mise en œuvre à Magento elle-même.

Système -> Importation / Export -> "Dataflow - Profils"

Licencié sous: CC-BY-SA avec attribution
Non affilié à magento.stackexchange
scroll top