2012-03-26 66 views
1

我們正在開發一個運送承運商的項目,該項目與一個提貨點網絡一起工作。顧客在結賬時選擇一個取貨點(離他們的地址最近),並在訂單到達時在那裏取貨。防止在結帳時在Magento中保存送貨地址

我們面臨的問題是,當客戶選擇通過結賬並立即註冊時,正在保存的客戶送貨地址是來自取貨點的地址。這裏真正的問題是,我們需要訂單上的提貨點地址才能打印標籤等,但需要阻止Magento將所述地址保存到客戶,以便他們無法將其選爲一個可能的送貨地址在他們的結帳。

想法試着到目前爲止:

  • 觀察員的 「customer_address_save_before」。它似乎讓我防止保存地址,但我無法檢測它是否在結帳過程中被調用。
  • 使用保存拾取點地址的倍率。將「save_in_address_book」設置爲false不起作用(可能是因爲我們正在註冊)。

最後的想法是模擬客人結帳,但我不知道該怎麼做。

任何人都可以指向正確的方向嗎?

回答

2

我本來和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

0

如果您使用的是OnePageCheckout,請檢查opcheckout.js,我認爲這是使用ajax調用保存送貨地址的地方。