On the other hand, admin should be able to view the comment on the order page.
Adding a custom comment box for each item in the cart is actually very easy. First lets add the textarea field for each item.
In your theme, for the file: template/checkout/cart.phtml
Add the new heading along with other heading for cart items.
In the file: template/checkout/cart/item/default.phtml__('Comments') ?> 
Add a new column
For Older version of Magento it would be:
Doing upto this. shoul show the text area added
The next step is to save the comment in DB, when customer update the cart.
So add a new field ‘itemcomment’ in the tabel ‘sales_flat_quote_item’. (For older version of Magento the table would be ‘sales_quote_item’)
Now we are going to add the code which will do the DB operation. For this we will need to modify the file:
app/code/core/Mage/Checkout/Model/Cart.php (Note: If you are planning to upgrade your Magento setup, copy this file to local & modify.)
Here we need to add some code to the function updateItems(), such a way that the function should now look like below:
 public function updateItems($data)
 {
     Mage::dispatchEvent('checkout_cart_update_items_before', array('cart'=>$this, 'info'=>$data));
     foreach ($data as $itemId => $itemInfo) {
         $item = $this->getQuote()->getItemById($itemId);
         if (!$item) {
             continue;
         }
         if (!empty($itemInfo['remove']) || (isset($itemInfo['qty']) && $itemInfo['qty']=='0')) {
             $this->removeItem($itemId);
             continue;
         }
         $qty = isset($itemInfo['qty']) ? (float) $itemInfo['qty'] : false;
         if ($qty > 0) {
             $item->setQty($qty);
         }
     /* Start: Custom code added for comments */
     if(!empty($itemInfo['comments'])) {
     	$write = Mage::getSingleton('core/resource')->getConnection('core_write');
     	# make the frame_queue active
   		$query = "UPDATE `sales_flat_quote_item` SET itemcomment = '".$itemInfo['comments']."' where item_id = $itemId";
$write->query($query);
     	$item->setItemcomment($itemInfo['comments']);
     }
     /* End: Custom code added for comments */
     }
     Mage::dispatchEvent('checkout_cart_update_items_after', array('cart'=>$this, 'info'=>$data));
     return $this;
 }
Showing the comment in Admin -> View OrderAdd a new function getItemcomment() to the file below:
app/code/core/Mage/Adminhtml/Block/Sales/Order/View/Items.php
If you are on verstion 1.5 or later.. add it to the file below.
app/code/core/Mage/Adminhtml/Block/Sales/Order/View/Items.php
	public function getItemcomment($item) {
		$itemId = $item->getId();
		$write = Mage::getSingleton('core/resource')->getConnection('core_write');
    	$query = "SELECT q.* FROM `sales_flat_order_item` o
	    LEFT JOIN `sales_flat_quote_item` q on o.quote_item_id = q.item_id
	    WHERE o.item_id = $itemId";
		# For older versions of Magento
/*	    $query = "SELECT q.* FROM `sales_order_entity_int` o
	    LEFT JOIN `sales_flat_quote_item` q on o.value = q.entity_id
	    WHERE o.entity_id = $itemId AND o.attribute_id = 343";       */	    
		$res = $write->query($query);
		while ($row = $res->fetch() ) {
			if(key_exists('itemcomment',$row)) {
				echo nl2br($row['itemcomment']);
			}
		}
	}    
To add the comments column to the items edit the .phtml file below:app/design/adminhtml/default/default/template/sales/order/view/items.phtml
Adding header for items to make it look like below:
. .helper('sales')->__('Product') ?> helper('sales')->__('Comments') ?> helper('sales')->__('Item Status') ?> . . . Adding Column with comments. app/design/adminhtml/default/default/template/sales/order/view/items/renderer/default.phtml
Add a column for item comments juts before status columns to make it look a like below.
. .Doing upto this will show the comments column in the item table. It should look like image below.getItemcomment($_item) ?> getStatus() ?> . .
Hope it Helps... Thanks...
Subscribe to: Post Comments (Atom)
 


 
 

No comments:
Post a Comment