cancel
Showing results for 
Search instead for 
Did you mean: 

Programmatically Update Custom Option value store wise

   Did you know you can see the translated content as per your choice?

Translation is in progress. Please check again after few minutes.

Programmatically Update Custom Option value store wise

Hi All,

 

Programmatically Update Custom Option Store Wise while any product Add / Edit Using observer.php after save product event

 

i.e.

I have two store in my magento project

 

1/ Wholesaler

2/ Retailer

 

Now, i want to add single product and display it in both store with different price. So, i have used Simple Product with Custom Option. 

 

Product Name : T-Shirt

 

Wholesaler Store

------------------------

Red : 50

Green : 60

Blue : 70

 

Retailer Store

-------------------

Red : 150

Green : 160

Blue : 170

 

Now, if i want to add 10Rs in Wholesaler Store and 20Rs. in Retailer store then how can we proceed on it.

 

Thanks,

Snehal

2 REPLIES 2

Re: Programmatically Update Custom Option value store wise

Have you tried changing the Configuration Scope and editing the inventory for each store? I assume that you're trying to have different inventory levels, if not I completely got lost in your question.

Enterprise Architect

800-207-1221
https://merchantprotocol.com

Magento Extension Developers

Re: Programmatically Update Custom Option value store wise

I Got the Solution for my question "Programmatically Update Custom Option value store wise"

Step - 1 :
    Create module file named Addweb_Customtabs.xml file
        app/etc/module/Addweb_Customtabs.xml
        
        Here is my Addweb_Customtabs.xml file code
        
        <?xml version="1.0"?>
        <config>
            <modules>
               <Addweb_Customtabs>
                  <active>false</active>
                  <codePool>local</codePool>
               </Addweb_Customtabs>
            </modules>
        </config>

Step - 2 :
    Create config.xml file
        app/code/local/Addweb/Customtabs/etc/config.xml
    
        Here is my config.xml file code
    
        <?xml version="1.0"?>
        <config>
            <modules>
               <Addweb_CustomTabs>
                  <version>0.1.0</version>
               </Addweb_CustomTabs>
            </modules>
            <adminhtml>
               <events>
                  <catalog_product_prepare_save>
                     <observers>
                         <Addweb_save_product_data>
                             <type>singleton</type>
                             <class>customtabs/observer</class>
                             <method>saveProductTabData</method>
                         </Addweb_save_product_data>
                     </observers>
                  </catalog_product_prepare_save>
               </events>
            </adminhtml>
        </config>

Step - 3 :
    Create Observer.php file
    app/code/local/Addweb/Customtabs/Model/Observer.php       
    
    Here is my Observer.php file code
    
    public function saveProductTabData(Varien_Event_Observer $observer) {      
        
            $product = $observer->getEvent()->getProduct();
            $websites = Mage::app()->getWebsites();
          foreach ($websites as $_eachWebsite) {
            $_websiteId = $_eachWebsite->getWebsiteId();                 
            $website = Mage::app()->getWebsite($website_id);                 
            $website->getDefaultGroup();
            
            $websiteObj = new Mage_Core_Model_Website();
            $websiteObj->load($_websiteId);

            $storeIds = $websiteObj->getStoreIds();
            if (count($storeIds)) {
                foreach ($storeIds as $storeId) {
                      $store_code = Mage::getModel('core/store')->load($storeId)->getCode();  
                      
                      $priceTable = 'catalog_product_option_type_price';
                    $options = $product->getProductOptions();
                    foreach ($options as $option) {
                        $values = $option->getValues();
                        foreach($values as $value) {
                            switch($object->getTitle()) {
                                case "Red":
                                    $oldPrice = $object->getPrice();
                                    if($storeId == 1) {                // Assuming that Store ID : 1 for Retailer & 2 for Wholesaler
                                        $newPrice = $oldPrice + 10;
                                    }
                                    else if($storeId == 2) {
                                        $newPrice = $oldPrice + 20;
                                    }
                                    break;
                                case "Green":
                                    $oldPrice = $object->getPrice();
                                    if($storeId == 1) {
                                        $newPrice = $oldPrice + 10;
                                    }
                                    else if($storeId == 2) {
                                        $newPrice = $oldPrice + 20;
                                    }
                                    break;
                                case "Blue":
                                    $oldPrice = $object->getPrice();
                                    if($storeId == 1) {
                                        $newPrice = $oldPrice + 10;
                                    }
                                    else if($storeId == 2) {
                                        $newPrice = $oldPrice + 20;
                                    }
                                    break;
                            }
                            
                            $select = $this->_getReadAdapter()->select()
                                    ->from($priceTable, 'option_type_id')
                                    ->where('option_type_id = ?', (int)$object->getId())
                                    ->where('store_id = ?', (int)$storeId);
                                $optionTypeId = $this->_getReadAdapter()->fetchOne($select);

                            if ($optionTypeId) {
                                $bind  = array(
                                    'price'         => $newPrice,
                                    'price_type'    => $priceType
                                );
                                $where = array(
                                    'option_type_id = ?'    => (int)$optionTypeId,
                                    'store_id = ?'          => (int)$storeId
                                );

                                $this->_getWriteAdapter()->update($priceTable, $bind, $where);
                            }
                            else {
                                $bind  = array(
                                    'option_type_id'    => (int)$object->getId(),
                                    'store_id'          => (int)$storeId,
                                    'price'             => $newPrice,
                                    'price_type'        => $priceType
                                );

                                $this->_getWriteAdapter()->insert($priceTable, $bind);
                            }
                        }
                    }
                }
            }
        }
    }