سلام
در پرستاشاپ ۱.۷ تغییراتی در اعتبارسنجی کدتخفیف ایجاد شده که باعث می شود اعتبارسنجی کدتخفیف صرفا در زمان واردسازی و افزودن کدتخفیف انجام شود.
این موضوع یک ویژگی در پرستاشاپ ۱.۷ هست که عملا برای خیلی از کسب و کارها یک باگ محسوب می شود. فرض کنید که کدتخفیف ویژه ای برای یک جشنواره خاص چند روز در نظر گرفتید ، مشتری کدتخفیف روی سبدخرید اعمال میکند ولی خرید خودش رو تکمیل نمیکند.
بعد از چند روز که تاریخ استفاده از کدتخفیف به اتمام رسیده هست باز هم مشتری می تواند از کدتخفیف اعمال شده در سبدخرید استفاده کنید و مراحل سفارش را همراه با تخفیف انجام دهد.
اعتبارسنجی هایی که در این حالت انجام نمی شود:
۱- فعال بودن قانون سبدخرید
۲- تعداد باقی مانده از قانون سبدخرید
۳- زمان شروع و پایان قانون سبدخرید
توضیحات پرستاشاپ که در بین کدهای هسته پرستاشاپ (اینجا) در این زمینه قرار داده شده است :
// All these checks are necessary when you add the cart rule the first time, so when it's not in cart yet
// However when it's in the cart and you are checking if the cart rule is still valid (when performing auto remove)
// these rules are outdated For example:
// - the cart rule can now be disabled but it was at the time it was applied, so it doesn't need to be removed
// - the current date is not in the range any more but it was at the time
// - the quantity is now zero but it was not when it was added
چگونه مشکل رو برطرف کنیم؟
برای رفع این مشکل نیاز به تغییر کوچکی در هسته پرستاشاپ وجود دارد ، فایل زیر رو باز کنید:
classes\CartRule.php
به دنبال خط زیر بگردید (در نسخه فعلی یعنی پرستاشاپ ۱.۷.۸.۳ در خط ۶۸۷ قرار دارد ) :
if (!$alreadyInCart) {
این خط رو به صورت زیر تغییر دهید: (در واقع خط قبلی غیرفعال شده و یک خط جدید اضافه می گردد.)
// if (!$alreadyInCart) {
if (true) {
با احترام