【问题标题】:How can i run class from Prestashop WebService我如何从 Prestashop WebService 运行课程
【发布时间】:2021-09-03 19:36:14
【问题描述】:

所以这是我的问题。 我创建了一个扩展 AdminProductsControllerCore 的类。 它的作用是,如果您想要将一种产品拆分为 3 种不同的产品但具有相同的库存,它将有 1 个主设备和 2 个从设备。 例如: 您有 reference - N101 的库存 100,但您想拥有 3 种具有不同 reference N100FR 和 N100DE 的产品。

新类的作用是,如果您链​​接 3 种产品,则所有产品的库存都相同。一旦你改变了一个股票,它也会改变另一个 2。

我们还与管理仓库库存的履行系统建立了连接。这意味着 Fulfillment 软件通过 WebService 连接到 Prestashop,并且 Fulfillment 系统中对库存的每一次更改都被发送到 Prestashop。这也很有效。 还要注意的是,在 Fulfillment 软件中,我们有多个系统链接到导入订单,而不仅仅是 prestashop,所以这意味着有些订单永远不会在 prestashop 中,但库存会下降。

现在问题来了:

如果我手动(或通过新订单)更改 Prestashop 中的库存,所有产品的数量都会更改为新值。 但如果 Fulfillment 系统中的 qty 发生变化,则只有 master sku 会在 Prestashop 中更改库存。 所以这实际上意味着在 Prestashop 中手动完成(或通过创建新订单)更改库存的新类不起作用。

我的问题是,当库存发生变化时,我如何才能使我创建的类运行?

如果需要更多详细信息,请告诉我。

提前致谢。

【问题讨论】:

    标签: web-services prestashop-1.6


    【解决方案1】:

    库存更新不会触发完整的产品对象更新。

    我猜你的履行系统正在调用 stock_available 资源, 所以一种可能的解决方案是覆盖 updateWs() 方法 以确保您的代码也在那里执行。

    【讨论】:

    • 你是对的。据我所知,这就是他们正在使用的。我在哪里可以找到 updateWS()?是在 class/webservice/WebserviceRequest.php 中吗?
    • 我现在看到实际上有 2 个文件包含它。 classes/Product.phpclasses/stock/AvailableStock.php 你能举个例子说明要准确编辑什么以及在哪里插入吗?因为我看到这个有现货:public function updateWs() { if ($this->depends_on_stock) { return WebserviceRequest::getInstance()->setError(500, Tools::displayError('You cannot update the available stock when it depends on stock.'), 133); } return $this->update(); }
    • 产品中的这个:public function updateWs($null_values = false) { $success = parent::update($null_values); if ($success && Configuration::get('PS_SEARCH_INDEXATION')) { Search::indexation(false, $this->id); } Hook::exec('updateProduct', array('id_product' => (int)$this->id)); return $success; }
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多