Php Prestashop 1.6的CSV库存导入

Php Prestashop 1.6的CSV库存导入,php,mysql,prestashop,Php,Mysql,Prestashop,我想创建一个简单的php脚本,可以在Prestashop 1.6中对我的产品运行股票覆盖。它需要引用我的文件中的“产品参考”,即“SKU”,然后更新Prestashop中的“数量”,即我的电子表格中的“可用库存” 目前,我每天都在手动更新,因为我收到一个csv文件,其中包含我的供应商提供的实时库存更新。我见过一些模块,但似乎没有一个适合我们,所以希望有人创建了一个简单的php脚本,可以覆盖数据库中的数据 提前感谢以下是我在PS 1.6上使用的脚本,用于UPC更新“产品”或“产品属性”的库存 库存

我想创建一个简单的php脚本,可以在Prestashop 1.6中对我的产品运行股票覆盖。它需要引用我的文件中的“产品参考”,即“SKU”,然后更新Prestashop中的“数量”,即我的电子表格中的“可用库存”

目前,我每天都在手动更新,因为我收到一个csv文件,其中包含我的供应商提供的实时库存更新。我见过一些模块,但似乎没有一个适合我们,所以希望有人创建了一个简单的php脚本,可以覆盖数据库中的数据


提前感谢

以下是我在PS 1.6上使用的脚本,用于UPC更新“产品”或“产品属性”的库存

库存/文件夹中的CSV文件如下所示:

产品编号;股票走势;身份证商店 4443601522;0;一,

您可以将此清单更改为使用SKU而不是UPC

<?php
include(dirname(__FILE__) . '/config/config.inc.php');
include(dirname(__FILE__) . '/init.php');

$id_shop     = 1;
$id_lang     = 1;
$ligne       = 0; 
$dossier_csv = "/home/mywebsite/public_html/stock/"; 

echo '<H1>MAJ PS STOCK PAR UPC</h1>';

if (($fic = fopen($dossier_csv . "stock.csv", "a+")) == FALSE) {
    echo '<br>Erreur ouverture fichier stock !<br>';
} else {
    echo '<h2><u>Traitement des stocks :</u></h2>';
}


while ($tab = fgetcsv($fic, 1024, ';')) {
    $champs = count($tab);

    $ligne++;

    for ($i = 0; $i < $champs; $i++) {

        if ($i == 0)
            $reference = $tab[$i];

        if ($i == 1 && $reference != '' && $ligne != 1) {
            $quantity  = $tab[$i];
            $productId = getIdProductByUPC($reference);

            if ($productId != false) {

                $idProductAttribute = getIdByUPC($productId, $reference);
                $newStock           = $quantity;

                StockAvailable::setQuantity($productId, $idProductAttribute, $newStock, $id_shop);


                echo '<br>(' . $reference . ')  : OK qte : <b>' . $quantity . '</b><br>';
            } else {
                $productId = Product::getIdByUPC($reference);

                $product     = new Product($productId);
                $combination = $product->getAttributeCombinations($id_lang);

                if ($productId != false && count($combination) == 0) {
                    $newStock = $quantity;
                    StockAvailable::setQuantity($productId, 0, $newStock, $id_shop);
                    echo '<br>(' . $reference . ')  : OK qte : <b>' . $quantity . '</b><br>';
                } else {
                    echo '<br>(' . $reference . '-' . $productId . ')  : Erreur enregistrement stock <br>';
                }
            }  
        }

    }   
}

echo '<br><br><br><br>---MAJ TERMINEE---';

function getIdByUPC($id_product, $reference)
{
    if (empty($reference)) {
        return 0;
    }

    $query = new DbQuery();
    $query->select('pa.id_product_attribute');
    $query->from('product_attribute', 'pa');
    $query->where('pa.upc LIKE \'%' . pSQL($reference) . '%\'');
    $query->where('pa.id_product = ' . (int) $id_product);

    return Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue($query);
}

function getIdProductByUPC($reference)
{
    if (empty($reference))
        return 0;
    $query = new DbQuery();
    $query->select('pa.id_product');
    $query->from('product_attribute', 'pa');
    $query->where('pa.upc = \'' . pSQL($reference) . '\'');
    return Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue($query);
}
?>

我认为,$productId=Product::getIdByUPC($reference)行是错误的。
正确的:$productId=getIdProductByUPC($reference)

到目前为止您做了什么?谢谢。是否有可能看到你的.csv文件的标题,这样我就知道我需要更新什么,因为我对这个非常陌生。提前感谢我的栏目名称是:(product ref;stock move;id shop),我把csv文件放在这里:链接只在第一次工作,所以使用这个链接,它工作吗?如果您需要更多帮助,可以显示您的代码我们的代码与您的代码相同,因为我们不确定需要更改哪些部分。我们的csv文件中的列是sku;位置;有存货。我们需要脚本来使用数据库中的引用检查文件中的sku,并使用csv中的值更新数据库第3列中的可用库存。