Prestashop中的组合通过PHP将库存更改为主库存

时间:2012-09-21 13:39:23

标签: prestashop

我正在使用prestashop购物。

我想知道是否有人知道快速的php mod来阻止具有自己库存水平的组合产品。问题是我们的供应商没有向我们提供我们销售的遥控车的个别外壳颜色的库存水平。该车有库存或缺货。我们使用csv导入来管理我们的股票。

显然,这些组合具有不同的库存水平。我真的需要'主'库存水平来反映组合水平。

有没有一种修改php的快速方法来执行此操作?

我在考虑像

这样的东西
$id_product_attribute['quantity'] == '$qty';

其中$qty是主要数量。另一个问题是,如果您有组合,则在使用csv更新时它不会更新主库存。我认为它在AdminProducts.php。

我仍在使用1.4.7.0

我认为它在AdminProducts.php中。 (我会在这里发布php文件,但它太大了。)

1 个答案:

答案 0 :(得分:1)

将以下代码放在<prestashop root>/overrides/classes/StockMvt.php

代码会将所有组合的数量保持在同一级别。即如果您有5种组合且每种组合的库存为10,那么如果出售一种商品,则所有5种组合的库存将减少到9种。

<?php
class StockMvt extends StockMvtCore {
    public function add($autodate = true, $nullValues = false, $update_quantity = true) {
            if (!$update_quantity)
                    return true;
            if ($this->id_product_attribute) {
                    $product = new Product((int) $this->id_product, false, Configuration::get('PS_LANG_DEFAULT'));
                    return (Db::getInstance()->Execute(
                            'UPDATE `' . _DB_PREFIX_ . 'product_attribute`
                            SET `quantity` = quantity+' . $this->quantity . ' WHERE `id_product` = ' . (int) $this->id_product) &&
                    $product->updateQuantityProductWithAttributeQuantity());
            }
            else
                    return Db::getInstance()->Execute('
    UPDATE `' . _DB_PREFIX_ . 'product`
    SET `quantity` = quantity+' . (int) $this->quantity . '
    WHERE `id_product` = ' . (int) $this->id_product);
    }
}
?>

然而,我无法承认这些代码。 Eggbert74在这个帖子中提出了解决方案:http://www.prestashop.com/forums/topic/43828-combination-quantity/page_st_40