--- /Users/bevan/Sites/bwm.lcl/modules/ecommerce/contrib/ecviews/ecviews.module
+++ ecviews.module
@@ -139,6 +139,30 @@
       ),
     ),
   ); // End ec_transaction_product table
+  $tables['ec_product_tangible'] = array(
+    'name' => 'ec_product_tangible',
+    'join' => array(
+      'left' => array(
+        'table' => 'node',
+        'field' => 'nid'
+      ),
+      'right' => array(
+        'field' => 'nid'
+      ),
+    ),
+    'fields' => array(),
+    'sorts' => array(),
+    'filters' => array(
+      'out_of_stock' => array(
+        'name' => 'Product: Is in stock (or stock is not managed)',
+        'operator' => array('=' => 'Equals'),
+        'list' => 'views_handler_operator_yesno',
+        'list-type' => 'select',
+        'handler' => 'ecviews_views_handler_filter_stock',
+        'cacheable' => 'no'
+      ),
+    ),
+  ); // End ec_product_tangible table
   return $tables;
 }
 
@@ -214,6 +238,25 @@
 }
 
 /**
+ * Filter Nodes based on being out of stock.
+ */
+function ecviews_views_handler_filter_stock($op, $filter, $filterinfo, &$query) {
+  switch ($op) {
+    case 'handler':
+      $query->ensure_table('ec_product_tangible');
+      switch ($filter['value'][0]) {
+        case '0':
+          $query->add_where('ec_product_tangible.manage_stock=1 AND ec_product_tangible.stock<1');
+          break;
+        case '1':
+          $query->add_where('(ec_product_tangible.manage_stock=0 OR (ec_product_tangible.manage_stock=1 AND ec_product_tangible.stock>0  ))');
+          break;
+      }
+      break;
+  }
+}
+
+/**
  * Field handler to give an add to cart link using product_link()
  */
 function views_handler_product_add_to_cart_link($fieldinfo, $fielddata, $value, $data){
