Mục tiêu tăng giá


9

Tôi có một vấn đề lạ với quy tắc bán hàng Magento Target.

Kịch bản: Magento EE 1.12. Hơn 30 lượt xem cửa hàng trên cùng một ví dụ Magento. 30k + sản ​​phẩm. Hầu hết các sản phẩm có cùng cài đặt trên tất cả các lượt xem của cửa hàng. Tôi đã tạo một quy tắc để hiển thị upells như sau. Các sản phẩm hiện có từ cùng loại với giá 100% trở lên so với sản phẩm hiện tại. Cài đặt để hiển thị upells: 'Chỉ dựa trên quy tắc' (vấn đề tái tạo cho 'Dựa trên quy tắc và được chọn'). Tôi đã lưu quy tắc. reindexed mọi thứ. Mọi đường may đều ổn, xuất hiện (đối với các sản phẩm tôi đã kiểm tra) theo quy định, BUT, Sau một thời gian cho cùng một sản phẩm trên một cửa hàng, các cửa hàng sẽ xuất hiện và trên các cửa hàng khác. Sản phẩm có cùng cài đặt trên tất cả các lượt xem cửa hàng. (và nó sẽ có cùng mức tăng.)

Nếu tôi sửa đổi một cái gì đó trong quy tắc và lưu lại nó, các upells bắt đầu xuất hiện trên tất cả các chế độ xem của cửa hàng nhưng sau một thời gian, sự cố sẽ tái tạo.

Sau khi đào mã, tôi phát hiện ra rằng các upells được tạo bởi quy tắc đích được giữ trong bảng Enterprise_targetrule_index_upsell để tránh phân tích tất cả các quy tắc mỗi lần. Đây là cách nó làm việc. (bảng bị cắt ngắn khi lưu quy tắc) Nếu có bất kỳ 'quy tắc đích' nào trong bảng tôi đã đề cập thì chúng sẽ được truy xuất. Nếu chúng không phải thì các quy tắc được phân tích cú pháp và kết quả được đặt trong bảng chỉ mục. Dưới đây là một số hồ sơ từ bảng đó cho một sản phẩm cụ thể.

+-----------+----------+-------------------+---------------------------------------------------------------------+---------------------+
| entity_id | store_id | customer_group_id | product_ids                                                         | customer_segment_id |
+-----------+----------+-------------------+---------------------------------------------------------------------+---------------------+
|     17372 |        2 |                 0 | 17373,350,583,487,17664,29737,14719,443,445,29502,17666,17667,17668 |                   0 |
|     17372 |        5 |                 0 | 17373,350,583,487,17664,29737,14719,443,445,29502,17666,17667,17668 |                   0 |
|     17372 |       17 |                 0 | 17373,350,583,487,17664,29737,14719,443,445,29502,17666,17667,17668 |                   0 |
|     17372 |       18 |                 0 | 17373,350,583,487,17664,29737,14719,443,445,29502,17666,17667,17668 |                   0 |
|     17372 |       19 |                 0 | 17373,350,583,487,17664,29737,14719,443,445,29502,17666,17667,17668 |                   0 |
|     17372 |       20 |                 0 |                                                                     |                   0 |
|     17372 |       21 |                 0 | 17373,350,583,487,17664,29737,14719,443,445,29502,17666,17667,17668 |                   0 |
|     17372 |       22 |                 0 | 17373,350,583,487,17664,29737,14719,443,445,29502,17666,17667,17668 |                   0 |
|     17372 |       23 |                 0 | 17373,350,583,487,17664,29737,14719,443,445,29502,17666,17667,17668 |                   0 |

Như bạn có thể thấy các upells cho sản phẩm với id 17372 đều giống nhau trên tất cả các lượt xem cửa hàng ngoại trừ store_id 20 trống. Không có gì đặc biệt về cửa hàng 20. Tất cả các sản phẩm liên quan ở đây đều có sẵn trên tất cả các cửa hàng.

Bất kỳ ý tưởng?

Cảm ơn. Marius.


1
croncấu hình của bạn đúng. IIRC các quy tắc được xây dựng lại hàng đêm và không có hoạt động cronsẽ tạo ra hành vi kỳ quặc
Ben Lessani - Sonassi

Cron đang hoạt động và chạy mỗi buổi sáng mà không có vấn đề.
Marius

Tôi tìm thấy một điều khác. Sau khi lưu quy tắc, bảng 'Enterprise_targetrule_product' chứa tất cả các sản phẩm nhưng sau một thời gian, tất cả chúng đều biến mất ngoại trừ một, không phải lúc nào cũng giống nhau. Miễn là id sản phẩm nằm trong bảng trên, mọi thứ đều hoạt động.
Marius

1
khi lưu một sản phẩm, các quy tắc đích được lập chỉ mục cho sản phẩm đó và cuối cùng nó sẽ thực hiện điều này: (Mage_Rule_Model_Resource_Abauge :: bindRuleToEntity ()) $ adapter-> xóa ($ this-> getTable ($ entityInfo ['Associations_table']) -> quoteInto ($ entityInfo ['rule_id_field']. 'IN (?) AND', $ ruleIds). $ adapter-> quoteInto ($ entityInfo ['entity_id_field']. 'KHÔNG IN (?)', $ entityIds); Điều này sẽ xóa tất cả các sản phẩm khác khỏi danh sách sản phẩm bị ảnh hưởng. Nếu tôi đặt chế độ cho chỉ mục đích thành 'thủ công' thì vấn đề không được tái tạo. Nhưng điều này không giải quyết được. Nó chỉ che giấu nó.
Marius

Bất kỳ lý do cho một ai đó hạ thấp điều này?
FlorinelChis

Câu trả lời:


7

Trong EE 1.13, lỗi này dường như đã được sửa (nhưng EE 1.13 đã biến mất)

Trong Enterprise_TargetRule_Model_Resource_Index::saveProductIndex, phù hợp với vấn đề đã được thay thế bằng (gợi ý: param 4 "false")

$targetRule->bindRuleToEntity($ruleId, $productId, 'product', false);

và, trong Mage_Rule_Model_Resource_Abstract, chức năng bindRuleToEntityđã được thay đổi thành:

public function bindRuleToEntity($ruleIds, $entityIds, $entityType, $deleteOldResults = true)

và dòng $adapter->delete(...)được gói vào

if ($deleteOldResults) {
    $adapter->delete($this->getTable($entityInfo['associations_table']),
           $adapter->quoteInto($entityInfo['rule_id_field']   . ' IN (?) AND ', $ruleIds) .
           $adapter->quoteInto($entityInfo['entity_id_field'] . ' NOT IN (?)',  $entityIds)
    );
 }

Một lỗi khác, shell / indexer.php --reindex targetrule không làm gì cả, vì vậy, bạn không thể reindex qua cron / console, sửa bằng cách thêm vào Enterprise_TargetRule_Model_Index:

public function reindexAll() {
    return $this->_getResource()->cleanIndex();
}

LATER: xem bản vá này https://github.com/magendooro/targetrulefix


Tôi đang ở 1.13.1 và tôi đang có Integrity constraint violation:for key '5B1C775075460366570ABDA2839BC68A'-> khóa này đến từ enterprise_targetrule_index_related... bạn có biết gì nếu nó liên quan đến những thay đổi được đề cập không?
Fra

1

Tôi quyết định thêm những gì tôi tìm thấy như một câu trả lời để câu hỏi này sẽ không được đánh dấu là chưa được trả lời.

khi lưu sản phẩm, các quy tắc đích được lập chỉ mục cho sản phẩm đó và nó kết thúc bằng cách này :( Mage_Rule_Model_Resource_Abstract::bindRuleToEntity())

$adapter->delete($this->getTable($entityInfo['associations_table']), $adapter->quoteInto($entityInfo['rule_id_field'] . ' IN (?) AND ', $ruleIds) . $adapter->quoteInto($entityInfo['entity_id_field'] . ' NOT IN (?)', $entityIds); 

Điều này xóa tất cả các sản phẩm khác khỏi danh sách sản phẩm bị ảnh hưởng. Nếu tôi đặt chế độ cho chỉ mục đích thành 'thủ công' thì vấn đề không phải là sao chép. Nhưng điều này không giải quyết nó. Nó chỉ che giấu nó.

Theo quan điểm của tôi đây là một lỗi Magento EE nghiêm trọng.


Đã chấp nhận câu trả lời giải quyết vấn đề của bạn? Tôi đang gặp vấn đề tương tự trong EE 1.11.1.0
dchayka

Nó đã làm cho tôi ..
Marius
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.