2012-11-26 216 views
9

我已經在我的Magento版本中安裝了獎勵模塊。我還設置了一些購物車促銷活動。一切正常。在購物車頁面上,您可以兌換獎勵積分並輸入折扣代碼,並且所有商品都可以正確打折。問題是,它們都在「折扣」標籤下的標記(其中1,000點1£=關閉)Magento顯示多個折扣細分

http://i.imm.io/N0hf.png

正如你所看到的,它是分組的£5優惠券折扣和1£獎勵一起折扣。我如何區分這些,以便我有兩個折扣行,一個用於優惠券,一個用於獎勵積分?

+0

您安裝的獎勵模塊的名稱是什麼? –

+0

SweetTooth - http://www.magentocommerce.com/magento-connect/sweet-tooth-customer-rewards.html –

+0

你運行的是什麼版本的Sweet Tooth? – JMTyler

回答

11

這不是一個簡單的任務後。不幸的是,Magento的折扣系統並沒有爲增加新的折扣類型做好充分的準備,您可能不希望將其添加到購物車總計框中。

的確,您需要修改TBT_Rewards_Model_Salesrule_Observer類的resetDiscountLabels()方法。但是,此方法不是,其中SweetTooth將其折扣說明添加到折扣中。恰恰相反。 Sweet Tooth的折扣是自動添加到Magento的購物車折扣列表中(折扣說明從該折扣列表中自動生成)。問題是,即使是甜牙折扣不應該將被添加到購物車將顯示在那裏 - 基於您創建的規則適用於購物車的折扣,但客戶實際上沒有選擇花費點呢。 resetDiscountLabels()方法存在到刪除從購物車不需要的折扣說明,不添加任何。

問題的解決方法分兩步進行,第二步是徵稅。

首先你必須修改上述方法刪除全部從購物車的甜美折扣說明,而不僅僅是那些不適用。我建議先將文件複製到您的應用程序/代碼/本地代碼池,然後修改該文件而不是原始文件。如果您循環瀏覽購物車上的所有規則ID,然後加載規則模型,則可以通過設置其points_action字段來確定是否爲SweetTooth規則,即$rule->getPointsAction() !== null。如果的任何的規則都是Sweet Tooth規則,那麼可以從unset他們的折扣說明中找到該方法已經在執行的方式。在此之後,Sweet Tooth折扣不應再出現在總計框的那一行。

第二步是向總計框中添加一個新行,a.k.a.將新的總模型添加到報價中。這將是更復雜的一步 - 比我在這個答案中描述的要複雜得多,但是這裏有一個關於添加新總列的教程:http://turnkeye.com/blog/magento-development-add-total-row-checkout/在你的新總模型的collect()方法中,你應該檢查報價的applied_redemptions字段以獲得列表客戶應用於購物車的Sweet Tooth規則ID。然後,您可以使用這些值重新生成總甜蜜牙折扣。

正如我所說,這不是一個簡單的任務,不幸的是這是唯一的半乾淨的方式來做到這一點。希望它不是太多。如果你想把自己的開發時間集中在其他任務上,你也可以總是聘請一家開發公司爲你做。

希望這是有用的!

+0

@Richard Parnaby-King:如果你成功地解決了你的問題,你能告訴我們嗎?我很好奇! – JMTyler

4

您需要修改/TBT/Rewards/Model/Salesrule/Observer.php - 檢查checkRedemptionCouponBefore()的折扣金額並檢查resetDiscountLabels() - 這是Sweet Tooth在折扣說明中添加折扣的地方。

您可能還需要修改/app/design/frontend/base/default/template/rss/order/details.phtml - 線if ($_order->getDiscountAmount() > 0)

+0

如果他沒有撥打resetDiscountLabels(),他會完全失去Sweet Tooth折扣標籤,但聽起來他只是想分開它們。 – JMTyler

+0

這不是關於不調用該功能,而是擴展它以顯示故障。我已經指出了將兩種折扣放在一條線上的確切點。 –