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