2012-06-25 21 views
0

我使用下面的脚本Magento的库存更新的csv

http://www.sonassi.com/knowledge-base/magento-kb/mass-update-stock-levels-in-magento-fast/

它与测试CSV文件精美的作品。

我的POS机创建一个CSV文件,但它放置了一个不同的标题,所以脚本无法正常工作。我想让这个过程自动化。有没有办法自动更改标题的名称?

脚本要求标题是

“SKU”,”数量”

我的CSV是

‘项目’,”股票”

是否有这些任何方式在脚本中链接两个不同的名称,以便我的脚本将ITEM视为sku和STOCK作为qty?

回答

0

PHP通常不是去文件操作授予您有SSH访问的事实的最好方式。

你也可以运行下面的命令(如果你已经安装了perl,它是默认在大多数设置...):

perl -pi -e 's/ITEM/sku/g' /path/to/your/csvfile.csv 
perl -pi -e 's/STOCK/qty/g' /path/to/your/csvfile.csv 
0

如果要使用原始SQL的方式,那么你可以创建一个数量更新功能如下:

function _updateStocks($data){ 
    $connection     = _getConnection('core_write'); 
    $sku            = $data[0]; 
    $newQty         = $data[1]; 
    $productId      = _getIdFromSku($sku); 
    $attributeId    = _getAttributeId(); 
  
    $sql            = "UPDATE " . _getTableName('cataloginventory_stock_item') . " csi, 
                       " . _getTableName('cataloginventory_stock_status') . " css 
                       SET 
                       csi.qty = ?, 
                       csi.is_in_stock = ?, 
                       css.qty = ?, 
                       css.stock_status = ? 
                       WHERE 
                       csi.product_id = ? 
                       AND csi.product_id = css.product_id"; 
    $isInStock      = $newQty > 0 ? 1 : 0; 
    $stockStatus    = $newQty > 0 ? 1 : 0; 
    $connection->query($sql, array($newQty, $isInStock, $newQty, $stockStatus, $productId)); 
} 

并通过传递csv行数据作为参数来调用上述函数。这只是一个提示。

为了获得与细节完整的工作代码,你可以参考下面的博客文章:
Updating product qty in Magento in an easier & faster way

希望这有助于!