Đây không phải là một nhiệm vụ đơn giản. Thật không may hệ thống giảm giá của Magento không được chuẩn bị vô cùng cho việc bổ sung các loại giảm giá mới loại mà bạn có thể không muốn thêm vào cùng nhau trong hộp tổng giỏ hàng.
Đúng là bạn cần phải sửa đổi phương thức resetDiscountLabels()
của lớp TBT_Rewards_Model_Salesrule_Observer
. Tuy nhiên, phương pháp này không phải là nơi Sweet Tooth thêm giảm giá của nó vào mô tả giảm giá. Khá ngược lại. Giảm giá của Sweet Tooth là tự động được thêm vào danh sách giảm giá của Magento trên giỏ hàng (và mô tả chiết khấu được tạo tự động từ danh sách giảm giá này). Vấn đề là ngay cả giảm giá Sweet Tooth rằng không nên thêm vào giỏ hàng sẽ hiển thị ở đó - giảm giá áp dụng cho giỏ hàng dựa trên quy tắc bạn đã tạo, nhưng khách hàng chưa thực sự chọn để chi tiêu điểm nào. Phương pháp resetDiscountLabels()
tồn tại để xóa mô tả giảm giá không mong muốn khỏi giỏ hàng, không thêm bất kỳ mô tả nào.
Giải pháp cho vấn đề của bạn có hai bước và bước thứ hai là tính thuế nhiều hơn.
Trước tiên, bạn phải sửa đổi phương pháp được đề cập ở trên để xóa tất cả Mô tả giảm giá bằng Sweet Tooth từ giỏ hàng, chứ không phải chỉ những mô tả không áp dụng. Tôi khuyên bạn nên sao chép tệp vào ứng dụng/mã/mã hóa cục bộ của bạn trước tiên và sửa đổi tệp đó thay vì tệp gốc. Nếu bạn lặp qua tất cả ID quy tắc trên giỏ hàng, sau đó tải mô hình quy tắc, bạn có thể biết đó là quy tắc Sweet Tooth hay không nếu trường points_action
của nó được đặt, tức là $rule->getPointsAction() !== null
. Nếu mọi quy tắc của quy tắc này là quy tắc của Sweet Tooth, bạn có thể unset
chúng từ mô tả giảm giá theo cách mà phương thức đã thực hiện. Sau đó, giảm giá Sweet Tooth sẽ không còn xuất hiện trong hàng của hộp tổng cộng của bạn nữa.
Bước thứ hai là thêm một hàng mới vào hộp tổng, a.k.a. thêm một mô hình tổng mới vào báo giá. Đây sẽ là bước phức tạp hơn - phức tạp hơn nhiều so với tôi có thể mô tả trong câu trả lời này, nhưng đây là hướng dẫn về việc thêm tổng số cột mới: http://turnkeye.com/blog/magento-development-add-total-row-checkout/ Trong phương thức collect()
của mô hình mới, bạn nên kiểm tra trường applied_redemptions
của báo giá để nhận danh sách của ID quy tắc Sweet Tooth mà khách hàng đã áp dụng cho giỏ hàng của họ. Sau đó bạn có thể tái tạo tổng chiết khấu Sweet Tooth bằng cách sử dụng các giá trị này.
Như tôi đã nói, đây không phải là một nhiệm vụ đơn giản, và tiếc là đây là cách bán sạch duy nhất để làm điều đó. Hy vọng nó không quá nhiều. Bạn cũng có thể luôn luôn thuê một công ty phát triển để làm điều đó cho bạn, nếu bạn muốn tập trung thời gian dev của riêng bạn vào các nhiệm vụ khác.
Hy vọng điều này hữu ích!
Tên của mô-đun phần thưởng mà bạn đã cài đặt là gì? –
SweetTooth - http://www.magentocommerce.com/magento-connect/sweet-tooth-customer-rewards.html –
Bạn đang chạy phiên bản nào của Sweet Tooth? – JMTyler