Có một sự kiện hoặc plugin tại chỗ khi quy tắc giỏ hàng không còn hiệu lực?


13

Có sự kiện hoặc địa điểm nào tôi có thể bổ sung khi quy tắc giá của giỏ hàng không còn hiệu lực (chẳng hạn như khi hết hạn hoặc nếu bạn thay đổi số lượng sản phẩm khác khi không còn áp dụng)? Tôi biết rằng nó được tự động xóa khỏi giỏ hàng, nhưng dường như tôi không thể tìm thấy nơi này đang xảy ra trong mã.

Tôi đang viết một mô-đun thêm một sản phẩm miễn phí vào giỏ hàng cho một phiếu giảm giá trong đó tổng phụ nhiều hơn số tiền X. Tất cả đều hoạt động ngoại trừ khi giảm số lượng mặt hàng trong giỏ hàng có tổng phụ nằm dưới X. Phiếu giảm giá đang bị xóa, nhưng sản phẩm của tôi vẫn ở trong giỏ hàng.

Cho đến nay tôi đã tham gia vào các sự kiện sau đây để làm những gì tôi cần cho đến nay ...

salesrule_validator_process
checkout_cart_update_items_after
sales_quote_collect_totals_before

Tôi đã tìm thấy Magento\Quote\Model\CouponManagementđiều có vẻ hứa hẹn vì nó có set()remove()phương pháp, nhưng chúng dường như không được gọi khi giỏ hàng được cập nhật.

checkout_cart_update_items_afterđây có vẻ như là một nơi logic tôi có thể kiểm tra, nhưng có vẻ như quy tắc vẫn được đặt theo$cart->getQuote()->getAppliedRuleIds()


CẬP NHẬT: Cuối cùng tôi đã thêm một người quan sát cho checkout_cart_save_aftersự kiện diễn ra sau collectTotals()đó để biết liệu quy tắc có còn trên giỏ hàng hay không. Sau đó, tôi về cơ bản so sánh $quote->getAppliedRuleIds()với $quote->getOrigData('applied_rule_ids')để xem nếu quy tắc đã được gỡ bỏ. Tôi cảm thấy như có một cách tốt hơn để làm điều này, nhưng nó hoạt động vào lúc này. Tôi vẫn gặp vấn đề với các phiếu giảm giá hết hạn mặc dù ...


Bạn có thể giải thích ngắn gọn, nó rất phức tạp
Anas Mansuri

Câu trả lời:


0

Tôi sẽ làm điều đó với một plugin xung quanh cho

\ Magento \ SalesRule \ Model \ RulesApplier :: applicationRules

Ở đó bạn có tham số $ quy tắc sẽ là một mảng chứa các id quy tắc được áp dụng cũ và kết quả của lệnh gọi $ process () sẽ là một mảng các id được áp dụng. Có lẽ một nơi tốt hơn có thể được tìm thấy nếu bạn tiết lộ những gì bạn định làm với nó.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.