thông báo lỗi cụ thể về mã số phiếu giảm giá


7

Có thể lấy lý do mã phiếu giảm giá không hợp lệ? Ví dụ: nếu tôi có quy tắc giỏ hàng chỉ định rằng tổng phụ đơn hàng phải từ 100 đô la trở lên và người dùng cố gắng sử dụng phiếu giảm giá trên tổng phụ chỉ 75 đô la, tôi có thể hiển thị thông báo dọc theo dòng "giỏ hàng của bạn không phải từ 100 đô la trở lên "?


2
Không phải không có tùy biến. Bạn sẽ phải viết các tin nhắn liên kết với tất cả các tình huống khác nhau mà các quy tắc quảng cáo có thể thực hiện (không phải là một nhiệm vụ đơn giản bằng bất kỳ phương tiện nào). Đó rất có thể là lý do tại sao thông báo lỗi là khá cơ bản.
Axel

@Axel, xin vui lòng thêm điều này như một câu trả lời.
Fabian Blechschmidt

Câu trả lời:


2

Đây là một cách tiếp cận mà tôi đã thực hiện để đưa vào một thông báo lỗi tốt hơn cho hai bộ lọc cụ thể: từ ngày và đến ngày.

Các bộ lọc này khá đơn giản so với việc đào sâu vào các điều kiện quy tắc thực tế như tổng phụ, như bạn đã đề cập trong câu hỏi của mình, nhưng tôi nghĩ vẫn cung cấp một cải tiến khả năng sử dụng đáng kể với việc triển khai khá đơn giản.

Có hai cách viết khá sạch có thể được thực hiện để thực hiện điều này.


Mage_SalesRule_Model_Resource_Rule_Collection :: addWebsitegroupDateFilter

Quá tải phương thức addWebsitegroupDateFilter để ngăn các quy tắc không khớp với bộ lọc ngày bị loại trừ hoàn toàn khỏi các quy tắc được xử lý.

public function addWebsiteGroupDateFilter($websiteId, $customerGroupId, $now = null)
{
    parent::addWebsiteGroupDateFilter($websiteId, $customerGroupId, $now);

    $where = $this->_removeDateFilters();
    $this->getSelect()->setPart('where', $where);

    return $this;
}

protected function _removeDateFilters()
{
    $where = $this->getSelect()->getPart('where');

    foreach ($where as $index => $whereLine) {
        if (strpos($whereLine, "from_date is null or from_date <") !== false) {
            unset($where[$index]);
        } elseif (strpos($whereLine, "to_date is null or to_date >") !== false) {
            unset($where[$index]);
        }
    }

    $where = array_values($where);

    return $where;
}

Clean_Checkout_Model_SalesRule_Validator :: _ canProcessRule

Quá tải phương thức _canProcessRule để kiểm tra ngày và thêm thông báo lỗi cụ thể vào phiên.

protected function _canProcessRule($rule, $address)
{
    if ($this->_isRuleExpired($rule, $address)) {
        return false;
    }

    return parent::_canProcessRule($rule, $address);
}

protected function _isRuleExpired($rule, $address)
{
    if ($rule->getFromDate() && date('Y-m-d', time()) < $rule->getFromDate()) {
        $message = "This coupon won't be active until {$rule->getFromDate()}";
        Mage::getSingleton('checkout/session')->addUniqueMessages(new Mage_Core_Model_Message_Error($message));

        return true;
    }

    if ($rule->getToDate() && date('Y-m-d', time()) > $rule->getToDate()) {
        $message = "This coupon expired on {$rule->getToDate()}";
        Mage::getSingleton('checkout/session')->addUniqueMessages(new Mage_Core_Model_Message_Error($message));

        return true;
    }
}

Điều đó sẽ làm việc! đó là kịch bản chính mà chúng tôi đang tìm kiếm.
Laura

@Laura đẹp :) Tôi thấy mã phiếu giảm giá đã hết hạn là trường hợp sử dụng khá lớn cần thông báo lỗi của riêng họ. ps làm thế nào bạn thay đổi câu trả lời của tôi để câu trả lời được chấp nhận? Tôi nghĩ rằng điều đó là không thể sau khi câu trả lời đã được chấp nhận.
kalenjordan

tôi chỉ cần nhấp vào nút kiểm tra và nó chuyển nó.
Laura

3

Không phải không có tùy biến. Bạn sẽ phải viết tin nhắn liên kết với tất cả các tình huống khác nhau mà các quy tắc quảng cáo có thể thực hiện (không phải là một nhiệm vụ đơn giản bằng bất kỳ phương tiện nào). Đó rất có thể là lý do tại sao thông báo lỗi là khá cơ bản.

Một giải pháp gợi ý cho các nhà phát triển Magento. Bạn có thể bao gồm một trường mô tả textarea trong cài đặt quảng cáo. Điều này sẽ cho phép quản trị viên bao gồm một thông báo tùy chỉnh nếu quy tắc quảng cáo không thành công, thay vì hiển thị thông báo "Mã phiếu giảm giá không hợp lệ" cơ bản. Đây sẽ là một giải pháp nhanh chóng thay vì cố gắng lập trình một thông báo lỗi cụ thể dựa trên một bộ quy tắc.


bạn có thể giải thích câu trả lời này không, trong đó chúng tôi phải đưa "mô tả khu vực văn bản" vào cài đặt quảng cáo, bạn có thể đăng một ví dụ không?
Em bé ở Magento

1
Ý tưởng là viết một phần mở rộng Magento thêm trường textarea vào trang cài đặt quy tắc quảng cáo. Textarea này sẽ cho phép người dùng chèn một thông báo hiển thị cho người dùng nếu quy tắc quảng cáo thất bại.
Axel

hơn là chúng ta phải mua cái này: magentoc Commerce.com/magento-connect/ trộm
Em bé ở Magento
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.