장바구니 가격 규칙이 더 이상 유효하지 않은 경우 (예 : 만료되거나 더 이상 적용되지 않는 다른 제품의 수량을 변경하는 경우) 플러그인 할 수있는 이벤트 또는 장소가 있습니까? 장바구니에서 자동으로 제거되지만 코드에서 발생하는 장소를 찾지 못하는 것 같습니다.
소계가 X 금액을 초과하는 쿠폰에 대해 장바구니에 무료 제품을 추가하는 모듈을 작성 중입니다. 소계가 X 아래로 떨어지는 카트의 항목 수량을 줄일 때를 제외하고는 모두 작동합니다. 쿠폰이 제거되었지만 제품이 카트에 남아 있습니다.
지금까지 나는 지금까지 필요한 것을 수행하기 위해 다음 이벤트를 시작했습니다 ...
salesrule_validator_process
checkout_cart_update_items_after
sales_quote_collect_totals_before
나는 Magento\Quote\Model\CouponManagement
그것이 가지고 set()
있고 remove()
메소드 이후 유망한 것처럼 보였지만 카트가 업데이트 될 때 호출되는 것처럼 보이지 않습니다.
에서 checkout_cart_update_items_after
그것은 또한 내가 확인할 수있는 논리적 인 장소처럼 보인다,하지만 여전히에 따라 설정되는 규칙을 나타납니다$cart->getQuote()->getAppliedRuleIds()
업데이트 : 규칙이 여전히 장바구니에 있는지 여부를 알고 checkout_cart_save_after
난 후에 실행 되는 이벤트에 대한 관찰자를 추가했습니다 collectTotals()
. 그리고 나는 기본적으로 비교 $quote->getAppliedRuleIds()
와 $quote->getOrigData('applied_rule_ids')
규칙이 제거되었는지 확인. 나는 이것을하는 더 좋은 방법이 있다고 생각하지만, 지금은 효과가 있습니다. 그래도 만료되는 쿠폰에 문제가 있습니다 ...