Zurück   rack::SPEED Support-Forum > rack::SPEED Kundensupport Magento 1.x > Magento - Fragen & Probleme

Magento - Fragen & Probleme Fragen & Probleme rund um MagentoConnect

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 18.03.2010   #1 (permalink)
rack::SPEED Kunde
 
Registriert seit: 23.10.2008
Beiträge: 110
Renommee-Modifikator: 4
Logo befindet sich auf einem aufstrebenden Ast
Standard Update stock levels in sekunden

Hallo zusammen,

mit Sicherheit haben viele von euch das gleiche Problem: Einen Artikelstamm von ein paar tausend und das Update der Verfügbarkeiten dauert über das Backend gerne mal ein paar Stunden.

Nachdem es bei meinem Update einige Schwierigkeiten gab, hat mich Herr Lehmann von Rackspeed auf ein Script aufmerksam gemacht, was den Updateprozess um einiges erleichtert. Nach einigen Versuchen und viel Hilfe von Herrn Lehmann hat es endlich geklappt.

Funktionsweise:
Man hat die Datei import.csv auf dem FTP in einem bestimmten Ordner und in dieser Datei befindne sich die verfügbarkeiten. Eine .php Datei wird aufgerufen und diese ließt die .csv und macht den update direkt in der Datenbank.

Zeitersparniss:
Bei ca. 2000 Produkten dauert so ein Update 2 Sekunden. Per Import Profile vom Backend ca. 3 Stunden.



Hier ist die .csv Datei. Sie ist sehr einfach, man sieht aber das es keine " Teilung gibt, also nur ,
Code:
store,sku,qty,is_in_stock
admin,xyz46,3,1
Und diese ist die .php Datei die genutzt wird. Überall wo XXXXXXX zu sehen ist, müssen die Zugangsdaten zur Datenbank angegeben werden und auch der Pfad zur .csv und der Mage.php Datei.

PHP-Code:
<?php
////////////////GLOBAL DEFINITIONS/////////////////////
//DATABASE SETTINGS 
$dbConfig = array(
    
'host'      => 'localhost',
    
'username'  => 'XXXXXXXXXXXXX',
    
'password'  => 'XXXXXXXXXXXXX',
    
'dbname'    => 'XXXXXXXXXXXXX',
    
'driver_options'=> array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES UTF8')
);

///// Path to Your CSV file
$path '/home/XXXXXXXX/public_html/XXXXXXXXX/import.csv';

// Path to Mage.php  
require_once '/home/XXXXXXXX/public_html/app/Mage.php';
// Connect to the databases
$db_magento Zend_Db::factory('Pdo_Mysql'$dbConfig);

updateTempTableFromFile($db_magento$path);    
    
$query $db_magento->select()->from('temp_table');
$contents_array $db_magento->fetchAll($query);
  
// Run for each line
foreach ($contents_array as $line) {
    
    
$sku $line['sku'];
    
$qty $line['qty'];
            echo 
$sku '<br>';
    
$exists $db_magento->query("SELECT COUNT(sku) cnt FROM catalog_product_entity WHERE sku = '$sku' LIMIT 1");
    
$find_product = (($exists->fetchObject()->cnt) > 0) ? true false;

    if (
$find_product == true) { 
        
$entity_id getEntityID_bySKU($db_magento$sku);   
        
updateQTY ($db_magento$entity_id$qty); 
    }
}

function 
getEntityID_bySKU($db_magento$sku) {
    
$entity_row $db_magento->query("SELECT entity_id FROM catalog_product_entity p_e WHERE p_e.sku = '$sku'")->fetchObject();
    
$entity_id  $entity_row->entity_id;
    return 
$entity_id;
}


function 
updateQTY($db_magento$entity_id$qty) {
     
$db_magento->query("UPDATE cataloginventory_stock_item s_i, cataloginventory_stock_status s_s 
         SET   s_i.qty = '$qty', s_i.is_in_stock = IF('$qty'>0, 1,0), 
               s_s.qty = '$qty', s_s.stock_status = IF('$qty'>0, 1,0)
         WHERE s_i.product_id = '$entity_id' AND s_i.product_id = s_s.product_id "
);
}

function 
updateTempTableFromFile($db_magento$path){
    
$db_magento->query("TRUNCATE TABLE temp_table");
  
    
$db_magento->query("LOAD DATA LOCAL INFILE '$path'
                      INTO TABLE temp_table
                      CHARACTER SET cp1251
                      FIELDS TERMINATED BY ','
                      LINES TERMINATED BY '\n'
                      (`store`,`sku`, `qty`,`is_in_stock`)"
);
}

function 
getAttributeEAV_id ($db_magento$attribute_name)
{
    
$result $db_magento->query("SELECT attribute_id FROM eav_attribute WHERE entity_type_id = 4 AND attribute_code = '$attribute_name'")->fetchObject()->attribute_id;
    return 
$result;
}
Diese Datei kann nach belieben benannt werden und in einem Verzeichniss abgelegt werden. Beim Aufrufen der Seite sind die SKU's zu sehen die in der .csv zu finden sind.


Vielen Dank an Herrn Lehmann für seine große Hilfe!
Logo ist offline   Mit Zitat antworten
Alt 09.11.2010   #2 (permalink)
rack::SPEED Support
 
Benutzerbild von rack::SPEED
 
Registriert seit: 19.10.2008
Ort: Meerbusch
Beiträge: 920
Renommee-Modifikator: 10
rack::SPEED hat die Renommee-Anzeige deaktiviert
Standard

Damit das Script ordnungsgemäß funktioniert muss eine neue Tabelle in der Magento-DB angelegt werden:

Code:
CREATE TABLE IF NOT EXISTS `temp_table` (
  `store` varchar(255) NOT NULL,
  `sku` varchar(255) NOT NULL,
  `qty` varchar(255) NOT NULL,
  `is_in_stock` varchar(255) NOT NULL,
  PRIMARY KEY (`sku`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
rack::SPEED ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an



Alle Zeitangaben in WEZ +2. Es ist jetzt 10:32 Uhr.


Powered by vBulletin® Version 3.8.7 (Deutsch)
Copyright ©2000 - 2012, vBulletin Solutions, Inc.
Content Relevant URLs by vBSEO 3.6.0
© 2008 by rack::SPEED

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17