2013-08-16 42 views
10

giống như trong tiêu đề ... vì lý do nào đó, trang web Magento không áp dụng mã phiếu giảm giá ... luôn trả về một thông báo "Mã phiếu giảm giá không hợp lệ" không hợp lệ. Nhưng kỳ lạ, điều này xảy ra khi giá của giỏ hàng lớn hơn 120 đồng tiền của tôi.

Ví dụ: nếu tôi có một sản phẩm trong giỏ hàng với giá 65, mã phiếu thưởng hoạt động ok ... nếu tôi có cùng sản phẩm trong giỏ hàng nhưng với số lượng 2 (nghĩa là tổng giá thành 130) tôi nhận được thông báo lỗi không hợp lệ được đề cập ở trên

Tôi đã truy tìm mã xuống lớp "Mage_Sales_Model_Quote", có hàm có tên: _validateCouponCode(), bên trong: $ address-> hasCouponCode() luôn trả về false. .. Tôi nên thử gì? ... Tôi đã lập lại, làm mới bộ nhớ cache..vv ... không có gì thay đổi ... và tôi dường như không thể tìm thấy trong mô hình địa chỉ hàm hasCouponCode để xem điều gì xảy ra trong đó ... cảm ơn rất nhiều trước

+0

Bạn có tìm thấy giải pháp nào cho điều này không? – Taras

+0

Tôi có thể thấy điều kiện của bạn về quy tắc giỏ hàng cho điều này không? –

+0

Bạn cần đăng quy tắc mã phiếu giảm giá được tuần tự hóa nếu bạn muốn được trợ giúp chẩn đoán lý do mã phiếu giảm giá không hợp lệ trong một khoảng thời gian. –

Trả lời

0

Đầu tiên của tất cả var_dump ($ địa chỉ) và kiểm tra các chi tiết.

Sau đó,

Kiểm tra các nội dung sau:

  1. ngày đúng cho sự khởi đầu và ngày hết hạn.
  2. Đặt nhóm khách hàng chính xác cho phiếu thưởng.
  3. Đặt thiết bị active.

Nếu tất cả trên 1, 2, 3 yêu cầu đúng thì thiết Stop further rules processing để YES

  • Bên cạnh đó đối với một số lý do, SKU đòi hỏi chữ và số cho các điều kiện. Vì vậy, hãy kiểm tra xem các giá trị SKU của sản phẩm có phải là chữ và số hay không.
3

Trước tiên, bạn cần hiểu cách $ address-> hasCouponCode() hoạt động.

Không có phương pháp nào được gọi là sử dụng hàm ma thuật __call.

Bạn không thể truy cập trực tiếp vì $ _data được bảo vệ.

Bây giờ, cách tốt nhất để gỡ lỗi là kiểm tra xem bạn có đặt phiếu giảm giá trong đối tượng địa chỉ của mình hay không.

$data = $address->getData(); 
$coupon = $data['coupon_code']; 

Bây giờ hãy kiểm tra xem phiếu giảm giá được đặt hay không trong trường hợp bạn có 2 mặt hàng trong giỏ hàng.

Một cách khác là để thử thêm phiếu giảm giá sử dụng setter như

$address->setCouponCode('Your Coupon Code'); 

hoặc

$address->setData('coupon_code', 'Your Coupon Code'); 

và kiểm tra xem các công trình này hay không. Nếu không, hãy xem xét

_validateCouponCode in Mage_Sales_Model_Quote 

Sẽ là một khởi đầu tốt để gỡ lỗi.

7

Vâng, không có quy tắc chính xác của bạn, thật khó để đưa ra câu trả lời đầy đủ.

Đầu tiên, Mage_Sales_Model_Quote :: _ validateCouponCode() cuộc gọi có một công việc đơn lẻ xóa mã phiếu giảm giá khỏi báo giá nếu mã phiếu thưởng không có trong địa chỉ báo giá. Điều này là do trong quá trình collectTotal gọi mô hình tổng giảm giá sẽ sao chép mã phiếu giảm giá đến địa chỉ NẾU nó hợp lệ và được áp dụng. Vì vậy, thực tế là $ address-> hasCouponCode() trả về null trong trường hợp này chỉ là một chỉ báo cho biết trình xác thực quy tắc từ chối áp dụng mã phiếu giảm giá được cung cấp.

Thứ hai, có hai phương pháp bạn nên theo dõi để tìm hiểu lý do tại sao phiếu giảm giá của bạn không được áp dụng. Có khả năng nó chỉ là một hay khác tùy thuộc vào phiếu giảm giá của bạn, nhưng tôi sẽ chỉ ra cả hai. Mage_SalesRule_Model_Validator :: process()Mage_SalesRule_Model_Validator :: processShippingAmount() là hai nơi sẽ kiểm tra mã phiếu thưởng của bạn và có thể áp dụng nó và sao chép mã vào địa chỉ.

Là một mặt lưu ý, Mage_SalesRule_Model_Validator :: _ maintainAddressCouponCode() là phương pháp có trách nhiệm để sao chép mã coupon từ validator (ai có mã từ quote) đến địa chỉ. Nếu phương pháp này không bao giờ được gọi thì mã phiếu giảm giá của bạn sẽ luôn bị xóa khỏi báo giá.

tl; dr

Bước debug Mage_SalesRule_Model_Validator :: quá trình()Mage_SalesRule_Model_Validator :: processShippingAmount() để gỡ lỗi tại sao coupon code của bạn không hợp lệ.

Các vấn đề liên quan