Magento 1.9 – Extending Sales/Quote Class

coremagento-1.9moduleoverrides

I want to to extend the core model class Mage_Sales_Model_Quote_Item located in Mage/Sales/Model/Quote/Item.php I created this directory local/Lemerge/Sales/Model/Quote/Item.php

And I created the config.xml file in local/Lemerge/Sales/etc folder

<?xml version="1.0"?>
<config>
<modules>
    <Lemerge_Sales>
        <version>1.0.1</version>
    </Lemerge_Sales>
</modules>
<global>
   <models>
    <sales>
      <rewrite>
        <quote_item>Lemerge_Sales_Model_Quote_Item</quote_item>
      </rewrite>
    </sales>
   </models>
</global>
</config>

In app/etc/modules I created Lemerge_Sales.xml I don't know even if it necessary

<?xml version="1.0"?>
<config>  
<modules>  
    <Lemerge_Sales>  
        <active>true</active>  
        <codepool>local</codepool>  
    </Lemerge_Sales>  
</modules>  
</config> 

Then I override the setProudct() in Item.php

<?php
class Lemerge_Sales_Model_Quote_Item extends Mage_Sales_Model_Quote_Item
{
   public function setProduct($product)
   {
     //code 
   }
}

But it does not work magento is using the core file instead of the overrided file

Best Answer

you are missing the following in your config.xml

         <lemerge_sales>
            <class>Lemerge_Sales_Model</class>
        </lemerge_sales>

correct way:

<global>
   <models>
   <lemerge_sales>
        <class>Lemerge_Sales_Model</class>
    </lemerge_sales>
    <sales>
      <rewrite>
        <quote_item>Lemerge_Sales_Model_Quote_Item</quote_item>
      </rewrite>
    </sales>
   </models>
</global>

Also you are misspelling the coodPool in Lemerge_Sales.xml

<codePool>local</codePool>  

correct way:

<config>  
  <modules>  
   <Lemerge_Sales>  
     <active>true</active>  
     <codePool>local</codePool>  
   </Lemerge_Sales>  
  </modules>  
</config>