我已经在Prestashop 1.7.6中创建了一个模块,该模块通过两种方式更新产品库存:
在后台(模块的设置)中,它运行完美
每天晚上从服务器的cron中使用这种命令行调用的声明服务:
php / var / www / MyPrestashopSite / bin / console mymodule:update updateProducts --no-debug
对于我创建的许多其他服务,我可以完美地使用它,但是对于这一服务,我使用Prestashop中的“新”库存管理,并且当我使用\ StockAvailable方法时,它总是调用Context并触发StockManagementRepository行130出现错误:“确定活动语言需要上下文员工实例。” 此错误使我的模块无法根据上下文更新产品库存。
在我的代码中,我尝试使用以下方法,以最干净的方式获取和修改库存:
\StockAvailable::getQuantityAvailableByProduct(...)
\StockAvailable::setQuantity(...)
\StockAvailable::updateQuantity(...)
请注意,我将$ shopId强制为1,以避免尽可能多地获取Context。
您是否知道如何通过cron(无上下文且无员工连接)以干净的方式在Prestashop中更新库存(而不仅仅是修改库存,产品属性和产品表),而无需调用Prestashop Web服务?
谢谢。