防止在结帐时在Magento中保存送货地址

问题描述:

我们正在开发一个运送承运商的项目,该项目与一个提货点网络一起工作。顾客在结账时选择一个取货点(离他们的地址最近),并在订单到达时在那里取货。防止在结帐时在Magento中保存送货地址

我们面临的问题是,当客户选择通过结账并立即注册时,正在保存的客户送货地址是来自取货点的地址。这里真正的问题是,我们需要订单上的提货点地址才能打印标签等,但需要阻止Magento将所述地址保存到客户,以便他们无法将其选为一个可能的送货地址在他们的结帐。

想法试着到目前为止:

  • 观察员的 “customer_address_save_before”。它似乎让我防止保存地址,但我无法检测它是否在结帐过程中被调用。
  • 使用保存拾取点地址的倍率。将“save_in_address_book”设置为false不起作用(可能是因为我们正在注册)。

最后的想法是模拟客人结帐,但我不知道该怎么做。

任何人都可以指向正确的方向吗?

我本来和save_before观察者一起走了。您是否尝试过调试或Mage :: log()'ing?您可能在配置观察者时遇到一些问题。

而且,如果save_before没有办法实现,那么在save_after中清除任何已保存的地址应该是安全的。

+0

我的观察者已正确配置,该动作被执行。问题是,当客户手动添加或更改其地址时,也会调用customer_address_save_before操作,并且我只想在用户通过结帐注册时阻止地址保存。 Ofcourse,这与customer_address_save_after事件同名。 – Jeroen 2012-03-27 07:58:47

+0

明白了,谢谢澄清。我不完全清楚你的意思是“无法检测到它是否被称为”,但我现在明白了。 运输扩展是否设置了地址上的任何自定义属性,以便您可以将用户输入的地址与其中一个拾取中心可靠地区分开来? 如果没有,您可以更新扩展程序来做到这一点,但这可能比您希望的稍微简单一点。 – kalenjordan 2012-03-27 15:40:18

如果您使用的是OnePageCheckout,请检查opcheckout.js,我认为这是使用ajax调用保存送货地址的地方。