Binary files commerce_reports.ori/.DS_Store and commerce_reports/.DS_Store differ
Binary files commerce_reports.ori/includes/.DS_Store and commerce_reports/includes/.DS_Store differ
diff -rupN commerce_reports.ori/includes/views/commerce_reports.views_default.customers.inc commerce_reports/includes/views/commerce_reports.views_default.customers.inc
--- commerce_reports.ori/includes/views/commerce_reports.views_default.customers.inc	2014-11-26 16:30:08.000000000 +0800
+++ commerce_reports/includes/views/commerce_reports.views_default.customers.inc	2015-01-12 20:21:40.000000000 +0800
@@ -6,6 +6,21 @@
  */
 
 function _commerce_reports_views_default_customer_views() {
+  /* Set status array for independent Commerce Billy module */
+  if(module_exists('commerce_billy')) {
+    $status = array(
+      'pending' => 'pending',
+      'completed' => 'completed',
+      'invoiced' => 'invoiced'
+    );
+  }
+  else {
+    $status = array(
+      'pending' => 'pending',
+      'completed' => 'completed'
+    );
+  }
+
   /**
    * Commerce reports: Customers
    */
@@ -140,10 +155,7 @@ function _commerce_reports_views_default
   $handler->display->display_options['filters']['status_1']['table'] = 'commerce_order';
   $handler->display->display_options['filters']['status_1']['field'] = 'status';
   $handler->display->display_options['filters']['status_1']['relationship'] = 'uid_commerce_orders';
-  $handler->display->display_options['filters']['status_1']['value'] = array(
-    'pending' => 'pending',
-    'completed' => 'completed',
-  );
+  $handler->display->display_options['filters']['status_1']['value'] = $status;
 
   /* Display: Page */
   $handler = $view->new_display('page', 'Page', 'page');
@@ -163,10 +175,7 @@ function _commerce_reports_views_default
   $handler->display->display_options['filters']['status_1']['table'] = 'commerce_order';
   $handler->display->display_options['filters']['status_1']['field'] = 'status';
   $handler->display->display_options['filters']['status_1']['relationship'] = 'uid_commerce_orders';
-  $handler->display->display_options['filters']['status_1']['value'] = array(
-    'pending' => 'pending',
-    'completed' => 'completed',
-  );
+  $handler->display->display_options['filters']['status_1']['value'] = $status;
   /* Filter criterion: User: Name */
   $handler->display->display_options['filters']['uid']['id'] = 'uid';
   $handler->display->display_options['filters']['uid']['table'] = 'users';
@@ -317,10 +326,7 @@ function _commerce_reports_views_default
     $handler->display->display_options['filters']['status_1']['table'] = 'commerce_order';
     $handler->display->display_options['filters']['status_1']['field'] = 'status';
     $handler->display->display_options['filters']['status_1']['relationship'] = 'uid_commerce_orders';
-    $handler->display->display_options['filters']['status_1']['value'] = array(
-      'pending' => 'pending',
-      'completed' => 'completed',
-    );
+    $handler->display->display_options['filters']['status_1']['value'] = $status;
     /* Filter criterion: User: Name */
     $handler->display->display_options['filters']['uid']['id'] = 'uid';
     $handler->display->display_options['filters']['uid']['table'] = 'users';
@@ -524,10 +530,7 @@ function _commerce_reports_views_default
   $handler->display->display_options['filters']['state']['id'] = 'state';
   $handler->display->display_options['filters']['state']['table'] = 'commerce_order';
   $handler->display->display_options['filters']['state']['field'] = 'state';
-  $handler->display->display_options['filters']['state']['value'] = array(
-    'pending' => 'pending',
-    'completed' => 'completed',
-  );
+  $handler->display->display_options['filters']['state']['value'] = $status;
 
   /* Display: Block */
   $handler = $view->new_display('block', 'Customer Order Statistics', 'customer_statistics');
diff -rupN commerce_reports.ori/includes/views/commerce_reports.views_default.products.inc commerce_reports/includes/views/commerce_reports.views_default.products.inc
--- commerce_reports.ori/includes/views/commerce_reports.views_default.products.inc	2014-11-26 16:30:08.000000000 +0800
+++ commerce_reports/includes/views/commerce_reports.views_default.products.inc	2015-01-12 20:22:57.000000000 +0800
@@ -6,6 +6,21 @@
  */
 
 function _commerce_reports_views_default_products_views() {
+  /* Set status array for independent Commerce Billy module */
+  if(module_exists('commerce_billy')) {
+    $status = array(
+      'pending' => 'pending',
+      'completed' => 'completed',
+      'invoiced' => 'invoiced'
+    );
+  }
+  else {
+    $status = array(
+      'pending' => 'pending',
+      'completed' => 'completed'
+    );
+  }
+
   /**
    * Commerce reports: Products
    */
@@ -144,10 +159,7 @@ function _commerce_reports_views_default
   $handler->display->display_options['filters']['state']['table'] = 'commerce_order';
   $handler->display->display_options['filters']['state']['field'] = 'state';
   $handler->display->display_options['filters']['state']['relationship'] = 'order_id';
-  $handler->display->display_options['filters']['state']['value'] = array(
-    'pending' => 'pending',
-    'completed' => 'completed',
-  );
+  $handler->display->display_options['filters']['state']['value'] = $status;
 
   /* Display: Page */
   $handler = $view->new_display('page', 'Page', 'page');
@@ -168,10 +180,7 @@ function _commerce_reports_views_default
   $handler->display->display_options['filters']['state']['table'] = 'commerce_order';
   $handler->display->display_options['filters']['state']['field'] = 'state';
   $handler->display->display_options['filters']['state']['relationship'] = 'order_id';
-  $handler->display->display_options['filters']['state']['value'] = array(
-    'pending' => 'pending',
-    'completed' => 'completed',
-  );
+  $handler->display->display_options['filters']['state']['value'] = $status;
   /* Filter criterion: Commerce Product: SKU */
   $handler->display->display_options['filters']['sku']['id'] = 'sku';
   $handler->display->display_options['filters']['sku']['table'] = 'commerce_product';
@@ -387,10 +396,7 @@ function _commerce_reports_views_default
     $handler->display->display_options['filters']['state']['table'] = 'commerce_order';
     $handler->display->display_options['filters']['state']['field'] = 'state';
     $handler->display->display_options['filters']['state']['relationship'] = 'order_id';
-    $handler->display->display_options['filters']['state']['value'] = array(
-      'pending' => 'pending',
-      'completed' => 'completed',
-    );
+    $handler->display->display_options['filters']['state']['value'] = $status;
     $handler->display->display_options['filters']['state']['expose']['operator_id'] = 'state_op';
     $handler->display->display_options['filters']['state']['expose']['label'] = 'Order state';
     $handler->display->display_options['filters']['state']['expose']['operator'] = 'state_op';
diff -rupN commerce_reports.ori/includes/views/commerce_reports.views_default.sales.inc commerce_reports/includes/views/commerce_reports.views_default.sales.inc
--- commerce_reports.ori/includes/views/commerce_reports.views_default.sales.inc	2014-11-26 16:30:08.000000000 +0800
+++ commerce_reports/includes/views/commerce_reports.views_default.sales.inc	2015-01-12 20:25:57.000000000 +0800
@@ -6,6 +6,21 @@
  */
 
 function _commerce_reports_views_default_sales_views() {
+  /* Set status array for independent Commerce Billy module */
+  if(module_exists('commerce_billy')) {
+    $status = array(
+      'pending' => 'pending',
+      'completed' => 'completed',
+      'invoiced' => 'invoiced'
+    );
+  }
+  else {
+    $status = array(
+      'pending' => 'pending',
+      'completed' => 'completed'
+    );
+  }
+
   /**
    * Commerce reports: Sales reports
    */
@@ -111,10 +126,7 @@ function _commerce_reports_views_default
   $handler->display->display_options['filters']['state']['id'] = 'state';
   $handler->display->display_options['filters']['state']['table'] = 'commerce_order';
   $handler->display->display_options['filters']['state']['field'] = 'state';
-  $handler->display->display_options['filters']['state']['value'] = array(
-    'pending' => 'pending',
-    'completed' => 'completed',
-  );
+  $handler->display->display_options['filters']['state']['value'] = $status;
   $handler->display->display_options['filters']['state']['exposed'] = TRUE;
   $handler->display->display_options['filters']['state']['expose']['operator_id'] = 'state_op';
   $handler->display->display_options['filters']['state']['expose']['label'] = 'Order statuses';
@@ -229,10 +241,7 @@ function _commerce_reports_views_default
   $handler->display->display_options['filters']['state']['id'] = 'state';
   $handler->display->display_options['filters']['state']['table'] = 'commerce_order';
   $handler->display->display_options['filters']['state']['field'] = 'state';
-  $handler->display->display_options['filters']['state']['value'] = array(
-    'pending' => 'pending',
-    'completed' => 'completed',
-  );
+  $handler->display->display_options['filters']['state']['value'] = $status;
   $handler->display->display_options['filters']['state']['exposed'] = TRUE;
   $handler->display->display_options['filters']['state']['expose']['operator_id'] = 'state_op';
   $handler->display->display_options['filters']['state']['expose']['label'] = 'Order statuses';
@@ -380,10 +389,7 @@ function _commerce_reports_views_default
   $handler->display->display_options['filters']['state']['id'] = 'state';
   $handler->display->display_options['filters']['state']['table'] = 'commerce_order';
   $handler->display->display_options['filters']['state']['field'] = 'state';
-  $handler->display->display_options['filters']['state']['value'] = array(
-    'pending' => 'pending',
-    'completed' => 'completed',
-  );
+  $handler->display->display_options['filters']['state']['value'] = $status;
   $handler->display->display_options['filters']['state']['exposed'] = TRUE;
   $handler->display->display_options['filters']['state']['expose']['operator_id'] = 'state_op';
   $handler->display->display_options['filters']['state']['expose']['label'] = 'Order statuses';
@@ -531,10 +537,7 @@ function _commerce_reports_views_default
   $handler->display->display_options['filters']['state']['id'] = 'state';
   $handler->display->display_options['filters']['state']['table'] = 'commerce_order';
   $handler->display->display_options['filters']['state']['field'] = 'state';
-  $handler->display->display_options['filters']['state']['value'] = array(
-    'pending' => 'pending',
-    'completed' => 'completed',
-  );
+  $handler->display->display_options['filters']['state']['value'] = $status;
   $handler->display->display_options['filters']['state']['exposed'] = TRUE;
   $handler->display->display_options['filters']['state']['expose']['operator_id'] = 'state_op';
   $handler->display->display_options['filters']['state']['expose']['label'] = 'Order statuses';
@@ -682,10 +685,7 @@ function _commerce_reports_views_default
   $handler->display->display_options['filters']['state']['id'] = 'state';
   $handler->display->display_options['filters']['state']['table'] = 'commerce_order';
   $handler->display->display_options['filters']['state']['field'] = 'state';
-  $handler->display->display_options['filters']['state']['value'] = array(
-    'pending' => 'pending',
-    'completed' => 'completed',
-  );
+  $handler->display->display_options['filters']['state']['value'] = $status;
   $handler->display->display_options['filters']['state']['exposed'] = TRUE;
   $handler->display->display_options['filters']['state']['expose']['operator_id'] = 'state_op';
   $handler->display->display_options['filters']['state']['expose']['label'] = 'Order statuses';
@@ -814,10 +814,7 @@ function _commerce_reports_views_default
   $handler->display->display_options['filters']['state']['id'] = 'state';
   $handler->display->display_options['filters']['state']['table'] = 'commerce_order';
   $handler->display->display_options['filters']['state']['field'] = 'state';
-  $handler->display->display_options['filters']['state']['value'] = array(
-    'pending' => 'pending',
-    'completed' => 'completed',
-  );
+  $handler->display->display_options['filters']['state']['value'] = $status;
   $handler->display->display_options['filters']['state']['exposed'] = TRUE;
   $handler->display->display_options['filters']['state']['expose']['operator_id'] = 'state_op';
   $handler->display->display_options['filters']['state']['expose']['label'] = 'Order statuses';
@@ -918,10 +915,7 @@ function _commerce_reports_views_default
   $handler->display->display_options['filters']['state']['id'] = 'state';
   $handler->display->display_options['filters']['state']['table'] = 'commerce_order';
   $handler->display->display_options['filters']['state']['field'] = 'state';
-  $handler->display->display_options['filters']['state']['value'] = array(
-    'pending' => 'pending',
-    'completed' => 'completed',
-  );
+  $handler->display->display_options['filters']['state']['value'] = $status;
   $handler->display->display_options['filters']['state']['exposed'] = TRUE;
   $handler->display->display_options['filters']['state']['expose']['operator_id'] = 'state_op';
   $handler->display->display_options['filters']['state']['expose']['label'] = 'Order statuses';
@@ -1022,10 +1016,7 @@ function _commerce_reports_views_default
   $handler->display->display_options['filters']['state']['id'] = 'state';
   $handler->display->display_options['filters']['state']['table'] = 'commerce_order';
   $handler->display->display_options['filters']['state']['field'] = 'state';
-  $handler->display->display_options['filters']['state']['value'] = array(
-    'pending' => 'pending',
-    'completed' => 'completed',
-  );
+  $handler->display->display_options['filters']['state']['value'] = $status;
   $handler->display->display_options['filters']['state']['exposed'] = TRUE;
   $handler->display->display_options['filters']['state']['expose']['operator_id'] = 'state_op';
   $handler->display->display_options['filters']['state']['expose']['label'] = 'Order statuses';
@@ -1113,10 +1104,7 @@ function _commerce_reports_views_default
     $handler->display->display_options['filters']['state']['id'] = 'state';
     $handler->display->display_options['filters']['state']['table'] = 'commerce_order';
     $handler->display->display_options['filters']['state']['field'] = 'state';
-    $handler->display->display_options['filters']['state']['value'] = array(
-      'pending' => 'pending',
-      'completed' => 'completed',
-    );
+    $handler->display->display_options['filters']['state']['value'] = $status;
     $handler->display->display_options['filters']['state']['exposed'] = TRUE;
     $handler->display->display_options['filters']['state']['expose']['operator_id'] = 'state_op';
     $handler->display->display_options['filters']['state']['expose']['label'] = 'Order statuses';
@@ -1226,10 +1214,7 @@ function _commerce_reports_views_default
     $handler->display->display_options['filters']['state']['id'] = 'state';
     $handler->display->display_options['filters']['state']['table'] = 'commerce_order';
     $handler->display->display_options['filters']['state']['field'] = 'state';
-    $handler->display->display_options['filters']['state']['value'] = array(
-      'pending' => 'pending',
-      'completed' => 'completed',
-    );
+    $handler->display->display_options['filters']['state']['value'] = $status;
     $handler->display->display_options['filters']['state']['exposed'] = TRUE;
     $handler->display->display_options['filters']['state']['expose']['operator_id'] = 'state_op';
     $handler->display->display_options['filters']['state']['expose']['label'] = 'Order statuses';
@@ -1339,10 +1324,7 @@ function _commerce_reports_views_default
     $handler->display->display_options['filters']['state']['id'] = 'state';
     $handler->display->display_options['filters']['state']['table'] = 'commerce_order';
     $handler->display->display_options['filters']['state']['field'] = 'state';
-    $handler->display->display_options['filters']['state']['value'] = array(
-      'pending' => 'pending',
-      'completed' => 'completed',
-    );
+    $handler->display->display_options['filters']['state']['value'] = $status;
     $handler->display->display_options['filters']['state']['exposed'] = TRUE;
     $handler->display->display_options['filters']['state']['expose']['operator_id'] = 'state_op';
     $handler->display->display_options['filters']['state']['expose']['label'] = 'Order statuses';
@@ -1452,10 +1434,7 @@ function _commerce_reports_views_default
     $handler->display->display_options['filters']['state']['id'] = 'state';
     $handler->display->display_options['filters']['state']['table'] = 'commerce_order';
     $handler->display->display_options['filters']['state']['field'] = 'state';
-    $handler->display->display_options['filters']['state']['value'] = array(
-      'pending' => 'pending',
-      'completed' => 'completed',
-    );
+    $handler->display->display_options['filters']['state']['value'] = $status;
     $handler->display->display_options['filters']['state']['exposed'] = TRUE;
     $handler->display->display_options['filters']['state']['expose']['operator_id'] = 'state_op';
     $handler->display->display_options['filters']['state']['expose']['label'] = 'Order statuses';
@@ -1612,10 +1591,7 @@ function _commerce_reports_views_default
   $handler->display->display_options['filters']['state']['id'] = 'state';
   $handler->display->display_options['filters']['state']['table'] = 'commerce_order';
   $handler->display->display_options['filters']['state']['field'] = 'state';
-  $handler->display->display_options['filters']['state']['value'] = array(
-    'pending' => 'pending',
-    'completed' => 'completed',
-  );
+  $handler->display->display_options['filters']['state']['value'] = $status;
 
   /* Display: Today */
   $handler = $view->new_display('block', 'Today', 'today');
@@ -1628,10 +1604,7 @@ function _commerce_reports_views_default
   $handler->display->display_options['filters']['status']['id'] = 'status';
   $handler->display->display_options['filters']['status']['table'] = 'commerce_order';
   $handler->display->display_options['filters']['status']['field'] = 'status';
-  $handler->display->display_options['filters']['status']['value'] = array(
-    'pending' => 'pending',
-    'completed' => 'completed',
-  );
+  $handler->display->display_options['filters']['status']['value'] = $status;
   /* Filter criterion: Date: Date (commerce_order) */
   $handler->display->display_options['filters']['date_filter']['id'] = 'date_filter';
   $handler->display->display_options['filters']['date_filter']['table'] = 'commerce_order';
@@ -1659,10 +1632,7 @@ function _commerce_reports_views_default
   $handler->display->display_options['filters']['state']['id'] = 'state';
   $handler->display->display_options['filters']['state']['table'] = 'commerce_order';
   $handler->display->display_options['filters']['state']['field'] = 'state';
-  $handler->display->display_options['filters']['state']['value'] = array(
-    'pending' => 'pending',
-    'completed' => 'completed',
-  );
+  $handler->display->display_options['filters']['state']['value'] = $status;
   /* Filter criterion: Date: Date (commerce_order) */
   $handler->display->display_options['filters']['date_filter']['id'] = 'date_filter';
   $handler->display->display_options['filters']['date_filter']['table'] = 'commerce_order';
@@ -1691,10 +1661,7 @@ function _commerce_reports_views_default
   $handler->display->display_options['filters']['state']['id'] = 'state';
   $handler->display->display_options['filters']['state']['table'] = 'commerce_order';
   $handler->display->display_options['filters']['state']['field'] = 'state';
-  $handler->display->display_options['filters']['state']['value'] = array(
-    'pending' => 'pending',
-    'completed' => 'completed',
-  );
+  $handler->display->display_options['filters']['state']['value'] = $status;
   /* Filter criterion: Commerce Order: Created date */
   $handler->display->display_options['filters']['created']['id'] = 'created';
   $handler->display->display_options['filters']['created']['table'] = 'commerce_order';
Binary files commerce_reports.ori/modules/.DS_Store and commerce_reports/modules/.DS_Store differ
diff -rupN commerce_reports.ori/modules/geckoboard/commerce_reports_geckoboard.module commerce_reports/modules/geckoboard/commerce_reports_geckoboard.module
--- commerce_reports.ori/modules/geckoboard/commerce_reports_geckoboard.module	2014-11-26 16:30:08.000000000 +0800
+++ commerce_reports/modules/geckoboard/commerce_reports_geckoboard.module	2015-01-10 08:13:51.000000000 +0800
@@ -58,7 +58,7 @@ function commerce_reports_geckoboard_sal
   $basequery = db_select('commerce_line_item', 'li')
     ->fields('li', array('line_item_id'))
     ->condition('li.type', 'product')
-    ->condition('o.status', array('pending', 'processing', 'completed'));
+    ->condition('o.status', array('pending', 'processing', 'completed', 'invoiced'));
   $basequery->addExpression('SUM(quantity)', 'quantity');
   $basequery->join('commerce_order', 'o', 'o.order_id = li.order_id');
 
@@ -90,7 +90,7 @@ function commerce_reports_geckoboard_sal
   $basequery = db_select('commerce_line_item', 'li')
     ->fields('li', array('line_item_id'))
     ->condition('li.type', 'product')
-    ->condition('o.status', array('pending', 'processing', 'completed'));
+    ->condition('o.status', array('pending', 'processing', 'completed', 'invoiced'));
   $basequery->addExpression('SUM(quantity)', 'quantity');
   $basequery->join('commerce_order', 'o', 'o.order_id = li.order_id');
 
@@ -125,7 +125,7 @@ function commerce_reports_geckoboard_sal
   $basequery = db_select('commerce_line_item', 'li')
     ->fields('li', array('line_item_id'))
     ->condition('li.type', 'product')
-    ->condition('o.status', array('pending', 'processing', 'completed'));
+    ->condition('o.status', array('pending', 'processing', 'completed', 'invoiced'));
   $basequery->addExpression('SUM(quantity)', 'quantity');
   $basequery->join('commerce_order', 'o', 'o.order_id = li.order_id');
 
@@ -160,7 +160,7 @@ function commerce_reports_geckoboard_sal
   $basequery = db_select('commerce_line_item', 'li')
     ->fields('li', array('line_item_id'))
     ->condition('li.type', 'product')
-    ->condition('o.status', array('pending', 'processing', 'completed'));
+    ->condition('o.status', array('pending', 'processing', 'completed', 'invoiced'));
   $basequery->addExpression('SUM(quantity)', 'quantity');
   $basequery->join('commerce_order', 'o', 'o.order_id = li.order_id');
 
diff -rupN commerce_reports.ori/modules/patterns/commerce_reports_patterns.batch.inc commerce_reports/modules/patterns/commerce_reports_patterns.batch.inc
--- commerce_reports.ori/modules/patterns/commerce_reports_patterns.batch.inc	2014-11-26 16:30:08.000000000 +0800
+++ commerce_reports/modules/patterns/commerce_reports_patterns.batch.inc	2015-01-12 20:31:48.000000000 +0800
@@ -2,9 +2,10 @@
 
 function commerce_reports_patterns_load($min_support, &$context) {
   if (empty($context['sandbox'])) {
-    $total_transactions = db_query("SELECT COUNT(order_id) FROM {commerce_order} WHERE status IN ('completed', 'pending')")->fetchField();
+
+    $total_transactions = db_query("SELECT COUNT(order_id) FROM {commerce_order} WHERE status IN ('completed', 'pending', 'invoiced')")->fetchField();
     $min_transactions = (int) floor($total_transactions * $min_support);
-    
+
     $context['results'] = array(
       'total_transactions' => $total_transactions,
       'minimum_transactions' => $min_transactions,
@@ -17,20 +18,20 @@ function commerce_reports_patterns_load(
         ),
       ),
     );
-    
+
     $context['sandbox']['products'] = db_query('SELECT sku, COUNT(li.line_item_id) AS occurences FROM {commerce_product} p LEFT JOIN {commerce_line_item} li ON p.sku = li.line_item_label GROUP BY sku HAVING occurences >= :min_occurences ORDER BY occurences DESC', array(':min_occurences' => $min_transactions))->fetchAll();
-    
+
     $context['sandbox']['progress'] = 0;
     $context['sandbox']['max'] = count($context['sandbox']['products']);
-    
+
     if (!$context['sandbox']['max']) {
       drupal_set_message(t('The value of your minimum support is too high to include any of the available transactions.'), 'error');
       return;
     }
   }
-  
+
   $product = $context['sandbox']['products'][$context['sandbox']['progress']];
-  
+
   if ($product) {
     $context['results']['frequent_sets'][1][0]['sets'][] = array(
       'items' => array($product->sku),
@@ -39,7 +40,7 @@ function commerce_reports_patterns_load(
   }
 
   $context['sandbox']['progress'] ++;
-  
+
   if ($context['sandbox']['progress'] < $context['sandbox']['max']) {
     $context['finished'] = $context['sandbox']['progress'] / $context['sandbox']['max'];
   } else {
@@ -52,34 +53,34 @@ function commerce_reports_patterns_load(
 function commerce_reports_patterns_frequent_itemset(&$context) {
   if (empty($context['sandbox'])) {
     $context['sandbox']['set_length'] = 2;
-    
+
     $context['sandbox']['current_partition'] = 0;
     $context['sandbox']['first_itemset'] = 0;
     $context['sandbox']['second_itemset'] = 1;
   }
-  
+
   $length = $context['sandbox']['set_length'];
-  
+
   if (empty($context['results']['frequent_sets'][$length - 1])) {
     return;
   }
   if (empty($context['results']['frequent_sets'][$length])) {
     $context['results']['frequent_sets'][$length] = array();
   }
-  
+
   $prev_partitions =& $context['results']['frequent_sets'][$length - 1];
   $prev_partitions_count = count($prev_partitions);
-  
+
   for ($x = 0; $x < 50; $x ++) {
     if (!empty($prev_partitions[$context['sandbox']['current_partition']])) {
       $partition_itemset_count = count($prev_partitions[$context['sandbox']['current_partition']]['sets']);
     } else {
       $partition_itemset_count = 0;
     }
-    
+
     $a = $context['sandbox']['first_itemset'];
     $b = $context['sandbox']['second_itemset'];
-    
+
     if ($context['sandbox']['second_itemset'] >= $partition_itemset_count) {
       if ($context['sandbox']['first_itemset'] >= $partition_itemset_count) {
         if ($context['sandbox']['current_partition'] >= $prev_partitions_count) {
@@ -90,34 +91,34 @@ function commerce_reports_patterns_frequ
         else {
           $context['sandbox']['current_partition'] ++;
         }
-        
+
         $context['sandbox']['first_itemset'] = 0;
       }
       else {
         $context['sandbox']['first_itemset'] ++;
       }
-      
+
       $context['sandbox']['second_itemset'] = $context['sandbox']['first_itemset'] + 1;
       continue;
     }
     else {
       $context['sandbox']['second_itemset'] ++;
     }
-    
+
     $partition =& $prev_partitions[$context['sandbox']['current_partition']];
     $partition_prefix =& $partition['prefix'];
     $partition_itemset =& $partition['sets'];
-    
+
     $a_set =& $partition_itemset[$a];
     $b_set =& $partition_itemset[$b];
-    
+
     $candidate = array(
       'items' => array_values(array_unique(array_merge($a_set['items'], $b_set['items']))),
       'tidlist' => array_intersect($a_set['tidlist'], $b_set['tidlist']),
     );
-    
+
     $occurences = max(count($candidate['tidlist']), 0);
-    
+
     if ($occurences >= $context['results']['minimum_transactions']) {
       $new_items = array_diff($candidate['items'], $partition_prefix);
       $prefix = array_merge($partition_prefix, array(reset($new_items)));
@@ -125,7 +126,7 @@ function commerce_reports_patterns_frequ
       _commerce_reports_patterns_add_set($context['results']['frequent_sets'][$length], $prefix, $candidate);
     }
   }
-  
+
   if ($count = count($context['results']['frequent_sets'][$length])) {
     $context['finished'] = 0;
     $context['message'] = t('Generated %count frequent item sets with length %length', array('%count' => $count, '%length' => $length));
@@ -136,15 +137,15 @@ function commerce_reports_patterns_frequ
 
 function _commerce_reports_patterns_add_set(&$partitions, $prefix, $set) {
   sort($prefix);
-  
+
   foreach ($partitions as &$partition) {
     if ($partition['prefix'] == $prefix) {
       $partition['sets'][] = $set;
-      
+
       return;
     }
   }
-  
+
   $partitions[] = array(
     'prefix' => $prefix,
     'sets' => array($set),
@@ -156,48 +157,48 @@ function commerce_reports_patterns_assoc
     $context['sandbox']['length'] = 2;
     $context['sandbox']['partition'] = 0;
     $context['sandbox']['set'] = 0;
-    
+
     $context['results']['count'] = 0;
-    
+
     $context['results']['rules'] = array();
-    
+
     db_query('TRUNCATE {commerce_reports_patterns}');
   }
-  
+
   if ($context['sandbox']['set'] > count($context['results']['frequent_sets'][$context['sandbox']['length']][$context['sandbox']['partition']]['sets']) - 1) {
     $context['sandbox']['partition'] ++;
     $context['sandbox']['set'] = 0;
   }
-  
+
   if ($context['sandbox']['partition'] > count($context['results']['frequent_sets'][$context['sandbox']['length']]) - 1) {
     $context['sandbox']['length'] ++;
     $context['sandbox']['partition'] = 0;
   }
-  
+
   if ($context['sandbox']['length'] > count($context['results']['frequent_sets'])) {
     $context['finished'] = 1;
-    
+
     return;
   }
   else {
     $context['finished'] = 0;
   }
-  
+
   $set =& $context['results']['frequent_sets'][$context['sandbox']['length']][$context['sandbox']['partition']]['sets'][$context['sandbox']['set']];
   $items =& $set['items'];
   $set_support_count = count($set['tidlist']);
-  
+
   $count = count($items);
   $members = pow(2, $count);
-  
+
   for ($i = 0; $i < $members; $i ++) {
     $b = sprintf('%0' . $count . 'b', $i);
-    
+
     $rule = new stdClass();
     $rule->size = $count;
     $rule->if_clause = array();
     $rule->then_clause = array();
-    
+
     for ($j = 0; $j < $count; $j++) {
       if ($b{$j} == '1') {
         $rule->if_clause[] = $items[$j];
@@ -206,24 +207,24 @@ function commerce_reports_patterns_assoc
         $rule->then_clause[] = $items[$j];
       }
     }
-    
+
     if (!empty($rule->then_clause) && ($if_count = count($rule->if_clause))) {
       $if_support_count = db_query("SELECT COUNT(*) FROM (SELECT order_id FROM {commerce_line_item} WHERE line_item_label IN (:sku) GROUP BY order_id HAVING COUNT(line_item_id) = :count) cli", array(':sku' => $rule->if_clause, ':count' => $if_count))->fetchField();
-    
+
       if ($if_support_count && (($confidence = ($set_support_count / $if_support_count)) >= $min_confidence)) {
         $rule->confidence = $confidence;
-        
+
         drupal_write_record('commerce_reports_patterns', $rule);
         $context['results']['count'] ++;
       }
     }
-    
+
     // Clear memory after set processing.
     unset($set);
   }
-  
+
   $context['sandbox']['set'] ++;
-  
+
   $context['message'] = t('Found %count association rules', array('%count' => $context['results']['count']));
 }
 
Binary files commerce_reports.ori/modules/tax/.DS_Store and commerce_reports/modules/tax/.DS_Store differ
diff -rupN commerce_reports.ori/modules/tax/commerce_reports_tax.module commerce_reports/modules/tax/commerce_reports_tax.module
--- commerce_reports.ori/modules/tax/commerce_reports_tax.module	2014-11-26 16:30:08.000000000 +0800
+++ commerce_reports/modules/tax/commerce_reports_tax.module	2015-01-12 20:36:18.000000000 +0800
@@ -161,11 +161,21 @@ function commerce_reports_tax_entity_upd
     // @todo: These should reflect states, like the Views. Verify
     //          also, should these be configurable?
 
-    // Check the updated status against pending, processing, completed
-    $order_current_status = in_array($entity->status, array('pending', 'processing', 'completed'));
+    // Check the updated status against pending, processing, completed and invoiced if Billy was installed
+    if(module_exists('commerce_billy')) {
+      $order_current_status = in_array($entity->status, array('pending', 'processing', 'completed', 'invoiced'));
+    }
+    else {
+      $order_current_status = in_array($entity->status, array('pending', 'processing', 'completed'));
+    }
 
     // Check the original status, so we know if we need to remove previous record
-    $order_previous_status = in_array($original->status, array('pending', 'processing', 'completed'));
+    if(module_exists('commerce_billy')) {
+      $order_previous_status = in_array($original->status, array('pending', 'processing', 'completed', 'invoiced'));
+    }
+    else {
+      $order_previous_status = in_array($original->status, array('pending', 'processing', 'completed'));
+    }
 
     // The order changed to a order status we're interested in, but did not
     // previously have a watched status. Create a new record
@@ -197,7 +207,12 @@ function commerce_reports_tax_entity_del
  * Returns the order statuses that should be taken into account.
  */
 function commerce_reports_tax_order_statuses() {
-  return array('pending', 'completed');
+  if (module_exists('commerce_billy')) {
+    return array('pending', 'completed', 'invoiced');
+  }
+  else {
+    return array('pending', 'completed');
+  }
 }
 
 /**
Binary files commerce_reports.ori/modules/tax/includes/.DS_Store and commerce_reports/modules/tax/includes/.DS_Store differ
diff -rupN commerce_reports.ori/modules/tax/includes/views/commerce_reports_tax.views_default.inc commerce_reports/modules/tax/includes/views/commerce_reports_tax.views_default.inc
--- commerce_reports.ori/modules/tax/includes/views/commerce_reports_tax.views_default.inc	2014-11-26 16:30:08.000000000 +0800
+++ commerce_reports/modules/tax/includes/views/commerce_reports_tax.views_default.inc	2015-01-12 20:37:09.000000000 +0800
@@ -12,6 +12,20 @@
  * Implements hook_views_default_views().
  */
 function commerce_reports_tax_views_default_views(){
+  /* Set status array for independent Commerce Billy module */
+  if(module_exists('commerce_billy')) {
+    $status = array(
+      'pending' => 'pending',
+      'completed' => 'completed',
+      'invoiced' => 'invoiced'
+    );
+  }
+  else {
+    $status = array(
+      'pending' => 'pending',
+      'completed' => 'completed'
+    );
+  }
 
   $view = new view();
   $view->name = 'commerce_reports_taxes';
@@ -66,10 +80,7 @@ function commerce_reports_tax_views_defa
   $handler->display->display_options['filters']['state']['table'] = 'commerce_order';
   $handler->display->display_options['filters']['state']['field'] = 'state';
   $handler->display->display_options['filters']['state']['relationship'] = 'order_id';
-  $handler->display->display_options['filters']['state']['value'] = array(
-    'pending' => 'pending',
-    'completed' => 'completed',
-  );
+  $handler->display->display_options['filters']['state']['value'] = $status;
   $handler->display->display_options['filters']['state']['exposed'] = TRUE;
   $handler->display->display_options['filters']['state']['expose']['operator_id'] = 'state_op';
   $handler->display->display_options['filters']['state']['expose']['label'] = 'Order status';
