Magento how to remove order
First of all, removing live orders is not recommended. But if you are sure you want to remove orders (test orders?) then you can do so by custom script below. Get the order increment id(s) of the order you wish to delete from Magento. Remember, once order is deleted you can’t get any related information of that order.
Create a test PHP file in your Magento project root with below code:
require 'app/Mage.php'; | |
Mage::app('admin')->setUseSessionInUrl(false); | |
$orderIncrementIDs = array('100000001','100000002'); //your order increment ids to delete, beware! | |
$rmvd = array(); | |
foreach($orderIncrementIDs as $ordID){ | |
try{ | |
Mage::getModel('sales/order')->loadByIncrementId($ordID)->delete(); | |
$rmvd[] = $ordID; | |
} catch(Exception $e){ | |
echo 'Error: '.$e->getMessage().'<br />'; | |
} | |
} | |
echo "Following Orders Removed!<br />" . implode(", ",$rmvd); |
and run the file to delete the order(s).
Continue reading »
Magento convert quote item to order item
If you have custom product attribute(s), then you may need to convert them to quote item and then to order item in Magento when an order is placed. That helps the order get the product attributes details and saves it in order tables to reference in the backend Manage Orders screen. This allows you to know what values for the product is selected by the customer, so that you can consider it when dispatching the order items.
This is a two way process where first the product attribute converts to quote item, and then quote item (with your product attribute’s value) converts to order item.
To do this you will have to put the below code in your module’s config.xml file:
<global> | |
<!--convert your custom product attribute "myattribute" from quote item to order item--> | |
<fieldsets> | |
<sales_convert_quote_item> | |
<myattribute> | |
<to_order_item>*</to_order_item> | |
</myattribute> | |
</sales_convert_quote_item> | |
</fieldsets> | |
<!--add your custom product attribute "myattribute" to quote item--> | |
<sales> | |
<quote> | |
<item> | |
<product_attributes> | |
<myattribute></myattribute> | |
</product_attributes> | |
</item> | |
</quote> | |
</sales> | |
<!--convert product attribute to quote item through event observer--> | |
<events> | |
<sales_quote_item_set_product> | |
<observers> | |
<mymodule> | |
<class>mymodule/observer</class> | |
<method>convertAttribute</method> | |
</mymodule> | |
</observers> | |
</sales_quote_item_set_product> | |
</events> | |
</global> |
Magento add attribute to order
Adding custom attribute to order in Magento is same as we do for customer and category. The difference is we will use different setup class AND we will not need attribute set, group and attribute input type now. We will create a quick module which will do exactly what we want and nothing more than that. So let’s start our new module.
1.) Create a file at app/etc/modules/ and name it whatever you want. I will name it Namespace_Module.xml
Paste this code in that file:
< ?xml version="1.0"?> | |
<config> | |
<modules> | |
<namespace_module> | |
<active>true</active> | |
<codepool>local</codepool> | |
</namespace_module> | |
</modules> | |
</config> |
2.) Create necessary directories to reach to app/code/local/Namespace/Module/etc/, so that we can create our config.xml there. Paste below code in this config file:
< ?xml version="1.0"?> | |
<config> | |
<modules> | |
<namespace_module> | |
<version>0.0.1</version> | |
</namespace_module> | |
</modules> | |
<global> | |
<resources> | |
<modulename_setup> | |
<setup> | |
<module>Namespace_Module</module> | |
<class>Mage_Sales_Model_Mysql4_Setup</class> | |
</setup> | |
<connection> | |
<use>core_setup</use> | |
</connection> | |
</modulename_setup> | |
<modulename_write> | |
<connection> | |
<use>core_write</use> | |
</connection> | |
</modulename_write> | |
<modulename_read> | |
<connection> | |
<use>core_read</use> | |
</connection> | |
</modulename_read> | |
</resources> | |
</global> | |
</config> |
Magento get all invoices and shipments of an order
Getting all the invoices of an order:
$order = Mage::getModel('sales/order')->load($orderID); | |
if ($order->hasInvoices()) { | |
$invIncrementIDs = array(); | |
foreach ($order->getInvoiceCollection() as $inv) { | |
$invIncrementIDs[] = $inv->getIncrementId(); | |
//other invoice details... | |
} Mage::log($invIncrementIDs); | |
} |
Getting all the shipments of an order:
$order = Mage::getModel('sales/order')->load($orderID); | |
foreach($order->getShipmentsCollection() as $shipment) | |
{ | |
Mage::log($shipment->getData()); //get each shipment data here... | |
} |
Magento join EAV collection with Flat table
Joining tables in Magento when it comes to EAV with Flat table is quite complicated. Consider you want to join sales_flat_order table with customer EAV tables to get Customer’s firstname and lastname, it becomes difficult as customer’s name comes from customer_entity_varchar table.
Below code will join sales order flat table with customer EAV to get customer’s full name in the collection along with all the order details.
$coll = Mage::getModel('sales/order')->getCollection(); | |
$fn = Mage::getModel('eav/entity_attribute')->loadByCode('1', 'firstname'); | |
$ln = Mage::getModel('eav/entity_attribute')->loadByCode('1', 'lastname'); | |
$coll->getSelect() | |
->join(array('ce1' => 'customer_entity_varchar'), 'ce1.entity_id=main_table.customer_id', array('firstname' => 'value')) | |
->where('ce1.attribute_id='.$fn->getAttributeId()) | |
->join(array('ce2' => 'customer_entity_varchar'), 'ce2.entity_id=main_table.customer_id', array('lastname' => 'value')) | |
->where('ce2.attribute_id='.$ln->getAttributeId()) | |
->columns(new Zend_Db_Expr("CONCAT(`ce1`.`value`, ' ',`ce2`.`value`) AS fullname")); | |
print_r($coll->getData()); |
Welcome to my Blog
Certifications
Honor
Recognition
Contributions
Categories
- Apache (2)
- ChatGPT (1)
- Domain name (2)
- eCommerce (2)
- htaccess (1)
- Humor (3)
- Instagram API (1)
- jQuery (4)
- JSON (1)
- Linux (10)
- Magento (142)
- Magento admin (58)
- Magento Certification (5)
- Magento error (13)
- Magento frontend (68)
- Magento Imagine (2)
- Magento Interview (5)
- Magento Master (2)
- Magento2 (10)
- Mobile (1)
- MySQL (7)
- OpenAI (1)
- OroCRM (2)
- Performance (2)
- PHP (8)
- Prototype JS (3)
- Security (4)
- Wordpress (3)
- XML (2)