장바구니 규칙이 더 이상 유효하지 않은 이벤트 또는 플러그인 지점이 있습니까?


13

장바구니 가격 규칙이 더 이상 유효하지 않은 경우 (예 : 만료되거나 더 이상 적용되지 않는 다른 제품의 수량을 변경하는 경우) 플러그인 할 수있는 이벤트 또는 장소가 있습니까? 장바구니에서 자동으로 제거되지만 코드에서 발생하는 장소를 찾지 못하는 것 같습니다.

소계가 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')규칙이 제거되었는지 확인. 나는 이것을하는 더 좋은 방법이 있다고 생각하지만, 지금은 효과가 있습니다. 그래도 만료되는 쿠폰에 문제가 있습니다 ...


짧고 간단하게 설명해 주시겠습니까?
Anas Mansuri

답변:


0

나는 주변 플러그인으로 그것을 할 것이다.

\ Magento \ SalesRule \ Model \ RulesApplier :: applyRules

거기에는 오래된 적용된 규칙 ID를 포함하는 배열이 될 $ rules 매개 변수가 있으며 $ proceed () 호출의 결과는 적용된 ID의 배열입니다. 당신이 원하는 일을 공개한다면 더 좋은 곳을 찾을 수있을 것입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.