2012-05-15 31 views
7

Trong phiên bản mới nhất của Magento (1.7) có tùy chọn đặt giá nhóm khách hàng, tuy nhiên tôi không thể tìm thấy bất kỳ tài liệu nào về cách thực hiện chương trình này. Tôi đã thử đoạn mã sau, nhưng nó không hoạt động. Có ai biết cách đặt giá nhóm khách hàng không?Magento 1.7 - đặt giá nhóm khách hàng theo lập trình

$_product->setCustomerGroupId($_price->getCustomerGroupId()); 
$_product->setGroupPrice($price); 
$_product->save(); 

Trả lời

4

Vâng cuối cùng tôi figured it out, đối với những người đang tìm kiếm các giải pháp: bạn cần phải thực hiện một loạt các dữ liệu bao gồm website_id, cust_group, giá cả và nếu cần xóa. Điều này có sẵn trong bản phát hành Magento mới (v1.7)

$group_prices = array(); if(isset($price_data['delete'])) { 
           $group_prices[] = array(
            "website_id" => Mage::getModel('core/store')->load($price_data['store_id'])->getWebsiteId(), 
            "cust_group" => $price_data['customer_group_id'], 
            "all_groups" => false, 
            "delete" => true 
           ); 
          } else { 
           $group_prices[] = array(
            "website_id" => Mage::getModel('core/store')->load($price_data['store_id'])->getWebsiteId(), 
            "cust_group" => $price_data['customer_group_id'], 
            "all_groups" => false, 
            "price" => $price_data["price"] 
           ); 
          } 
+2

Câu trả lời này không thực sự hữu ích. Nơi nào để bạn vượt qua mảng đó, bởi vì nếu tôi sử dụng một số phương pháp API sản phẩm, nó bỏ qua mảng giá nhóm, trong khi phá hủy mảng giá tầng, được thiết lập tương tự. – feeela

18

Nếu bạn đang sử dụng đối tượng magento (không phải là api), đây là những hành vi tôi đã tìm thấy. Hy vọng rằng ứng dụng có ý nghĩa, bất kể bạn đang thu thập dữ liệu như thế nào.

// get my product 
$product = Mage::getModel('catalog/product')->load(x); 
// the group data is expecting an array of arrays that look like.. 
// array ('website_id'=>y, 'cust_group'=>z, 'price'=>n) 
$groupPricingData = array (
    // for website 2, customer group 2 
    array ('website_id'=>2, 'cust_group'=>2, 'price'=>10), 
    // for all websites, not logged in 
    array ('website_id'=>0, 'cust_group'=>0, 'price'=>15) 
); 
$product->setData('group_price',$groupPricingData); 
$product->save(); 

Trong ví dụ này, nó sẽ thay thế tất cả giá nhóm trước đó cho sản phẩm, như vậy là khôn ngoan.

$product->setData('group_price',array()); 
$product->save(); 

sẽ xóa giá nhóm.

Một hành vi khác mà tôi nhận thấy có liên quan đến việc đặt id cửa hàng trên sản phẩm bạn đang cập nhật sẽ khiến giá nhóm thêm vào. Bằng cách này nếu bạn đang tải lên một nhóm giá cả nhóm cho một cửa hàng cụ thể, bạn không phải lo lắng về việc mất đặt giá nhóm đối với một cửa hàng khác.

// add a pricing to store 4 
$product = Mage::getModel('catalog/product')->setStoreId(4)->load(1234); 
$product->setData('group_price',array (
    array (
     "website_id" => 3, 
     "cust_group" => 4, 
     "price" => 99 
    ))); 
$product->save(); 

// add a pricing to store 1 
$product = Mage::getModel('catalog/product')->setStoreId(1)->load(1234); 
$product->setData('group_price',array (
    array (
     "website_id" => 1, 
     "cust_group" => 2, 
     "price" => 105 
    ))); 
$product->save(); 

// remove group pricing from store 2 
$product = Mage::getModel('catalog/product')->setStoreId(2)->load(1234); 
$product->setData('group_price',array()); 
$product->save(); 

Điều này thuận tiện nếu bạn đang xử lý các đợt định giá nhóm trên một cửa hàng, nhưng không làm ảnh hưởng đến giá nhóm của các cửa hàng khác. Tôi không biết đây có phải là cơ chế đơn giản nhất, nhưng nó đã hoạt động cho đến nay đối với tôi.

+0

thử sử dụng '$ product-> getData ('tier_price');' sau khi tải sản phẩm, sau đó thêm mảng vào sản phẩm của bạn và bạn có thể lưu mà không ghi đè lên các mảng hiện có. Chỉnh sửa: nó có vẻ là 'tier_price' trong EE và' group_price' trong CE – DWils

+1

Đặt giá theo nhóm và đặt giá nhóm là hai tính năng hoàn toàn riêng biệt. Đặt giá theo cấp cho phép các trường hợp "Mua 1 với $ 5/mỗi hoặc 5 cho $ 4/mỗi". Giá nhóm cho phép "Khách hàng thường xuyên trả $ 5 và khách hàng VIP trả $ 4" kịch bản (không phụ thuộc vào số lượng). Giá nhóm được giới thiệu trong CE 1.7 và EE 1.12 và không có sẵn trong các phiên bản cũ hơn. –

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