Magento 导入带有待定订单的magmi时,产品库存错误

Magento 导入带有待定订单的magmi时,产品库存错误,magento,magmi,Magento,Magmi,我正在通过Magmi与Magento同步ERP软件 考虑以下情况:产品的所有可用单元都处于待定订单中,因此该产品在商店中不可用。如果在订单挂起时完成Magmi产品导入,则产品的库存将返回到原始数量,并返回到商店。 这意味着在订单完成后从ERP软件中再次导入之前,库存不会正确 我错过什么了吗?如果不是,在导入时设置正确的产品可用性有多容易 我想这“只是”将待处理订单中的产品数量减去进口数量的问题。当然,最坏的情况可能是ERP软件中的产品已经缺货,从而导致负库存。。。。更重要的是,面对一个不满意的客

我正在通过Magmi与Magento同步ERP软件

考虑以下情况:产品的所有可用单元都处于待定订单中,因此该产品在商店中不可用。如果在订单挂起时完成Magmi产品导入,则产品的库存将返回到原始数量,并返回到商店。 这意味着在订单完成后从ERP软件中再次导入之前,库存不会正确

我错过什么了吗?如果不是,在导入时设置正确的产品可用性有多容易

我想这“只是”将待处理订单中的产品数量减去进口数量的问题。当然,最坏的情况可能是ERP软件中的产品已经缺货,从而导致负库存。。。。更重要的是,面对一个不满意的客户

我可能可以通过更频繁地同步来最大限度地降低负库存的风险,但我仍然依赖于网站订单完成的速度


想法?

您希望确保您的(股票)数据有一个真实的资源。因为库存更新是从ERP到Magento的,所以我们可以说ERP是领先的资源。在这种情况下,当订单被设置为待定时,您可以考虑使用ERP的实时更新(使用SaleSalOrdOrthSaveIX之后的观察者)。 这样,您将遇到以下情况:

  • 产品库存导入到magento
  • 订单已下单,正在等待
  • 实时更新完成,ERP接收更新的库存(减量)
  • 现在有两种情况:
  • 订单取消,ERP收到更新的库存(增量)
  • 订单成功,无需更新ERP

  • 通过这种方式,ERP始终了解Magento对您的库存的看法,并且当您收到针对Magento的“完整”库存更新时,不会出现任何问题。

    您希望确保您的(库存)数据有一个真实的资源。因为库存更新是从ERP到Magento的,所以我们可以说ERP是领先的资源。在这种情况下,当订单被设置为待定时,您可以考虑使用ERP的实时更新(使用SaleSalOrdOrthSaveIX之后的观察者)。 这样,您将遇到以下情况:

  • 产品库存导入到magento
  • 订单已下单,正在等待
  • 实时更新完成,ERP接收更新的库存(减量)
  • 现在有两种情况:
  • 订单取消,ERP收到更新的库存(增量)
  • 订单成功,无需更新ERP

  • 通过这种方式,ERP始终了解Magento对您库存的看法,当您收到Magento的“完整”库存更新时,不会出现任何问题。

    听起来不错(尽管我希望避免更改ERP数据库)。你能解释一下观察者的用法吗?这会像触发器一样吗?@Mike:实际上没有其他方法,除非您启动库存更新并禁用Magento的库存递减行为,但这会留下空白。@Mike:保存订单(实际上是大多数实体)时会发送一个事件。您可以使用它们实时执行某些操作,而不是基于时间间隔。magento中有大量描述事件/观察者的资源:)我知道在执行一个函数后,我可以在app\code\local\SampleObserver\Sales\Model\Order\Save\中拥有一个php文件。在这种情况下,如何获取订单中的数据?我显然需要订单的产品SKU和数量…observer方法被传递给一个包含订单的传输对象。您可以通过执行类似$observer->getOrder()的操作来获取订单。从那里,您就有了一个销售/订单对象,并且可以执行通常使用此类对象执行的任何操作。你可能想考虑为这个问题创建一个单独的问题:)听起来不错,(虽然我希望避免改变ERP数据库)。你能解释一下观察者的用法吗?这会像触发器一样吗?@Mike:实际上没有其他方法,除非您启动库存更新并禁用Magento的库存递减行为,但这会留下空白。@Mike:保存订单(实际上是大多数实体)时会发送一个事件。您可以使用它们实时执行某些操作,而不是基于时间间隔。magento中有大量描述事件/观察者的资源:)我知道在执行一个函数后,我可以在app\code\local\SampleObserver\Sales\Model\Order\Save\中拥有一个php文件。在这种情况下,如何获取订单中的数据?我显然需要订单的产品SKU和数量…observer方法被传递给一个包含订单的传输对象。您可以通过执行类似$observer->getOrder()的操作来获取订单。从那里,您就有了一个销售/订单对象,并且可以执行通常使用此类对象执行的任何操作。你可能想考虑为这个问题创建一个单独的问题: