I am using Magento 1.9.1 and i am working on a extension which allows you to add more mass update statusses on the orders page.
Here take a look:
So here is my config file:
<?xml version="1.0"?>
<config>
<modules>
<VivasIndustries_MassCustomStatusses>
<version>0.1.0</version>
</VivasIndustries_MassCustomStatusses>
</modules>
<admin>
<routers>
<masscustomstatusses>
<use>admin</use>
<args>
<module>VivasIndustries_MassCustomStatusses</module>
<frontName>masscustomstatusses</frontName>
</args>
</masscustomstatusses>
</routers>
</admin>
<global>
<models>
<masscustomstatusses>
<class>VivasIndustries_MassCustomStatusses_Model</class>
</masscustomstatusses>
</models>
<blocks>
<adminhtml>
<rewrite>
<sales_order_grid>VivasIndustries_MassCustomStatusses_Block_Sales_Order_Grid</sales_order_grid>
</rewrite>
</adminhtml>
</blocks>
<sales>
<order>
<states>
<novichka translate="label">
<label>Nai nova</label>
<statuses>
<novichka default="1"/>
</statuses>
<visible_on_front>1</visible_on_front>
</novichka>
</states>
</order>
</sales>
</global>
</config>
It seems i have problem with the Model part.
Here is what i have in /app/code/local/VivasIndustries/MassCustomStatusses/Model/Order.php
<?php
class VivasIndustries_MassCustomStatusses_Model_Order extends Mage_Sales_Model_Order
{
const STATE_NOVICHKA = 'novichka';
public function novichka()
{
$this->setNovichkaBeforeState($this->getState());
$this->setNovichkaBeforeStatus($this->getStatus());
$this->setState(self::STATE_NOVICHKA, true);
return $this;
}
}
When i place this code:
const STATE_NOVICHKA = 'novichka';
public function novichka()
{
$this->setNovichkaBeforeState($this->getState());
$this->setNovichkaBeforeStatus($this->getStatus());
$this->setState(self::STATE_NOVICHKA, true);
return $this;
}
Here: /app/code/core/Mage/Sales/Model/Order.php Evetything is working fine.
I think i have problem with the Model or maybe not ?
Can you help me out with that?
Here is the error report: http://pastebin.com/fvDJyaVS
Here is what i have in /app/code/local/VivasIndustries/MassCustomStatusses/controllers/IndexController.php:
<?php
class VivasIndustries_MassCustomStatusses_Adminhtml_IndexController extends Mage_Adminhtml_Controller_Action
{
protected function _initAction() {
$this->loadLayout()
->_setActiveMenu('sales/order')
->_addBreadcrumb($this->__('Sales'), $this->__('Sales'))
->_addBreadcrumb($this->__('Orders'), $this->__('Orders'));
return $this;
}
protected function _initOrder()
{
$id = $this->getRequest()->getParam('order_id');
$order = Mage::getModel('sales/order')->load($id);
if (!$order->getId()) {
$this->_getSession()->addError($this->__('This order no longer exists.'));
$this->_redirect('*/*/');
$this->setFlag('', self::FLAG_NO_DISPATCH, true);
return false;
}
Mage::register('sales_order', $order);
Mage::register('current_order', $order);
return $order;
}
public function indexAction() {
$this->_initAction()
->renderLayout();
}
public function deleteAction() {
if($order = $this->_initOrder()) {
try {
$order->delete()->save();
Mage::getSingleton('adminhtml/session')->addSuccess(Mage::helper('adminhtml')->__('Order was successfully deleted'));
$this->_redirectUrl(Mage::helper('adminhtml')->getUrl('adminhtml/sales_order/index'));
} catch (Exception $e) {
Mage::getSingleton('adminhtml/session')->addError($e->getMessage());
$this->_redirect('*/*/edit', array('id' => $this->getRequest()->getParam('order_ids')));
}
}
$this->_redirectUrl(Mage::helper('adminhtml')->getUrl('adminhtml/sales_order/index'));
}
public function massDeleteAction() {
$deleteorderIds = $this->getRequest()->getParam('order_ids');
if(!is_array($deleteorderIds)) {
Mage::getSingleton('adminhtml/session')->addError(Mage::helper('adminhtml')->__('Please select item(s)'));
} else {
try {
foreach ($deleteorderIds as $deleteorderId) {
Mage::getModel('sales/order')->load($deleteorderId)->delete();
}
Mage::getSingleton('adminhtml/session')->addSuccess(
Mage::helper('adminhtml')->__(
'Total of %d record(s) were successfully deleted', count($deleteorderIds)
)
);
} catch (Exception $e) {
Mage::getSingleton('adminhtml/session')->addError($e->getMessage());
}
}
$this->_redirectUrl(Mage::helper('adminhtml')->getUrl('adminhtml/sales_order/index'));
}
public function NewMassAction()
{
$orderIds = $this->getRequest()->getPost('order_ids', array());
$countHoldOrder = 0;
foreach ($orderIds as $orderId) {
$order = Mage::getModel('sales/order')->load($orderId);
if ($order->canHold()) {
$order->novichka()
->save();
$countHoldOrder++;
}
}
$countNonHoldOrder = count($orderIds) - $countHoldOrder;
if ($countNonHoldOrder) {
if ($countHoldOrder) {
$this->_getSession()->addError($this->__('%s order(s) were not put on hold.', $countNonHoldOrder));
} else {
$this->_getSession()->addError($this->__('No order(s) were put on hold.'));
}
}
if ($countHoldOrder) {
$this->_getSession()->addSuccess($this->__('%s order(s) have been put on hold.', $countHoldOrder));
}
$this->_redirect('*/*/');
}
}
Thanks in advance!