Tony Stark Tony Stark - 4 months ago 31
PHP Question

Magento - How to get all orders except the ones with specific status

I am using Magento 1.9.2 and i am working on a custom extension.

Here is what code i use to select all orders with specific status:

<?php $_orders = Mage::getModel('sales/order')->getCollection()->addFieldToFilter('status', 'complete'); ?>


How can i select all orders except the ones with specfic status?

Here is the complete code where i use the code shown above:

<?php echo $this->getMessagesBlock()->getGroupedHtml() ?>
<?php $_orders = Mage::getModel('sales/order')->getCollection()->addFieldToFilter('status', 'complete') ?>
<div class="page-title">
<h1><?php echo $this->__('My Orders') ?></h1>
</div>
<?php echo $this->getChildHtml('info');?>
<?php echo $this->getPagerHtml(); ?>
<?php if($_orders->getSize()): ?>
<table class="data-table orders" id="my-orders-table">
<col width="1" />
<col width="1" />
<col />
<col width="1" />
<col width="1" />
<col width="1" />
<thead>
<tr>
<th class="number"><?php echo $this->__('Order #') ?></th>
<th class="date"><?php echo $this->__('Date') ?></th>
<th class="ship"><?php echo $this->__('Ship To') ?></th>
<th class="total"><span class="nobr"><?php echo $this->__('Order Total') ?></span></th>
<th class="status"><span class="nobr"><?php echo $this->__('Order Status') ?></span></th>
<th class="view">&nbsp;</th>
</tr>
</thead>
<tbody>
<?php $_odd = ''; ?>
<?php foreach ($_orders as $_order): ?>
<tr>
<td class="number"><?php echo $_order->getRealOrderId() ?></td>
<td class="date"><span class="nobr"><?php echo $this->formatDate($_order->getCreatedAtStoreDate()) ?></span></td>
<td class="ship"><?php echo $_order->getShippingAddress() ? $this->escapeHtml($_order->getShippingAddress()->getName()) : '&nbsp;' ?></td>
<td class="total"><?php echo $_order->formatPrice($_order->getGrandTotal()) ?></td>
<td class="status"><em><?php echo $_order->getStatusLabel() ?></em></td>
<td class="a-center view">
<span class="nobr"><a href="<?php echo $this->getViewUrl($_order) ?>"><?php echo $this->__('View Order') ?></a>
<?php /*<span class="separator">|</span><a href="<?php echo $this->getTrackUrl($_order) ?>"><?php echo $this->__('Track Order') ?></a>&nbsp;*/ ?>
<?php if ($this->helper('sales/reorder')->canReorder($_order)) : ?>
<span class="separator">|</span> <a href="<?php echo $this->getReorderUrl($_order) ?>" class="link-reorder"><?php echo $this->__('Reorder') ?></a>
<?php endif ?>
</span>
</td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
<script type="text/javascript">decorateTable('my-orders-table');</script>
<?php echo $this->getPagerHtml(); ?>
<?php else: ?>
<p><?php echo $this->__('You have placed no orders.'); ?></p>
<?php endif ?>


Thanks in advance!

Answer
<?php $_orders = Mage::getModel('sales/order')->getCollection()->addFieldToFilter('status',array('neq' => 'complete')); ?>

Or when you have multiple statuses

<?php $_orders = Mage::getModel('sales/order')->getCollection()->addFieldToFilter('status',array('nin' => array('pending','complete'))); ?>
Comments