Làm thế nào để có được quy tắc giá danh mục ngày hết hạn?


7

Trên trang danh mục tôi cần hiển thị đề nghị "hết hạn sau N ngày". Ví dụ , có thể dễ dàng đạt được nếu mỗi sản phẩm đã xác định Giá đặc biệt và ngày $this->getProduct()->getSpecialToDate();, nhưng nếu bạn đặt chiết khấu qua Danh mục sản phẩm Quy tắc giá không có thông tin về giảm giá hiện đang áp dụng và các dữ liệu liên quan khác.

Tôi đang đi lang thang làm thế nào tôi có thể nhận thông tin về các quy tắc giảm giá sản phẩm hiện tại được sử dụng như ngày?

Câu trả lời:


2

Tôi đã không thử điều này, nhưng tôi tin rằng nó có thể. Tôi không có mã chính xác, nhưng tôi có thể cung cấp cho bạn mã này sau khi tôi có nhiều thời gian rảnh hơn nếu bạn thực sự cần nó. Thẩm định này là khá đơn giản.

Có một bảng được gọi là catalogrule_productcửa hàng Catalog Price Rulesgiảm giá cho mỗi sản phẩm và nhóm khách hàng. Lưu ý rằng bảng này cần được lập chỉ mục mỗi khi bạn thay đổi Catalog Price Rules. Bạn có thể làm điều này với người lập chỉ mục hoặc bằng cách nhấp vào "Áp dụng quy tắc" trên trang này (việc này có thể mất nhiều thời gian nếu bạn có nhiều sản phẩm).

Đối với một sản phẩm nhất định bạn có trên một danh mục (hoặc bất kỳ), hãy lấy sản phẩm đó entity_idvà tìm kiếm nó catalogrule_product.product_id. Hãy chắc chắn để kiểm tra customer_group_idlà tốt. Khi bạn tìm thấy (các) hàng bạn đang tìm kiếm, (các) hàng này sẽ có dấu thời gian (tính bằng giây) from_timeto_timecho quy tắc được áp dụng ( rule_id) đó.

Nhận nó row_idvà tìm kiếm điều này catalogrulenếu bạn cần thêm thông tin về quy tắc. Mục bạn tìm thấy catalogrulefrom_dateto_date, đó là tất cả những gì bạn cần để tính toán những gì bạn muốn.


1
Tôi nghĩ cách tiếp cận này là tốt, nhưng hãy cẩn thận, tôi đang nghĩ về những gì sẽ xảy ra nếu bạn có hai quy tắc trên cùng một sản phẩm? Có một cột sort_order, tuy nhiên nó được tính toán, có lẽ nó hữu ích?
Fabian Blechschmidt

Có thể có nhiều quy tắc áp dụng cho một sản phẩm nhất định, nhưng Magento chỉ có thể lập chỉ mục quy tắc áp dụng cho một sản phẩm nhất định. Tôi đã không kiểm tra điều này. OP có thể có thể chạy một vài kịch bản thử nghiệm?
nhạcliftsme

0

Đây là mã làm việc cho tôi trong trường hợp này .....

Tạo một chức năng để sắp xếp mọi thứ.

function getCatalogSalePrice($_product)
{
 $productId = $_product->getId();
 $storeId = $_product->getStoreId();
 $websiteId = Mage::app()->getStore($storeId)->getWebsiteId();
 $timeStamp = Mage::app()->getLocale()->storeTimeStamp($storeId);
 $customerGroupId = 1;

 $resource = Mage::getResourceModel('catalogrule/rule');
 $rules = $resource->getRulesFromProduct($timeStamp, $websiteId, $customerGroupId, $productId);
 foreach($rules as $ruleval)
 {
  $catalogRuleID = $ruleval['rule_id']; //If more than one rule
  if($catalogRuleID)
  {
   $catalogRulObj = Mage::getModel('catalogrule/rule')->load($catalogRuleID);
   $conditions_serialized = unserialize($catalogRulObj->getConditionsSerialized());
   $actions_serialized = unserialize($catalogRulObj->getActionsSerialized());
   $ruleToDate = $catalogRulObj->getToDate();
  }
 }
 $now = time(); // or your date as well
 $saleEndDate = strtotime($ruleToDate);
 $datediff = $now - $saleEndDate;
 $datediff = floor($datediff / (60 * 60 * 24));

 if($datediff <= 0)
 {
  if($datediff < 0) {
   $message = abs($datediff). " Days Left";
  }
  else
  {
  $message = "Few Hours Left";
  }
 } 
 return $message;   
}

Chúc mừng nếu nó hoạt động.

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.