recurring.php (5769B)
1 <?php 2 class ModelSaleRecurring extends Model { 3 public function getRecurrings($data) { 4 $sql = "SELECT `or`.order_recurring_id, `or`.order_id, `or`.reference, `or`.`status`, `or`.`date_added`, CONCAT(`o`.firstname, ' ', `o`.lastname) AS customer FROM `" . DB_PREFIX . "order_recurring` `or` LEFT JOIN `" . DB_PREFIX . "order` `o` ON (`or`.order_id = `o`.order_id)"; 5 6 $implode = array(); 7 8 if (!empty($data['filter_order_recurring_id'])) { 9 $implode[] = "or.order_recurring_id = " . (int)$data['filter_order_recurring_id']; 10 } 11 12 if (!empty($data['filter_order_id'])) { 13 $implode[] = "or.order_id = " . (int)$data['filter_order_id']; 14 } 15 16 if (!empty($data['filter_reference'])) { 17 $implode[] = "or.reference LIKE '" . $this->db->escape($data['filter_reference']) . "%'"; 18 } 19 20 if (!empty($data['filter_customer'])) { 21 $implode[] = "CONCAT(o.firstname, ' ', o.lastname) LIKE '" . $this->db->escape($data['filter_customer']) . "%'"; 22 } 23 24 if (!empty($data['filter_status'])) { 25 $implode[] = "or.status = " . (int)$data['filter_status']; 26 } 27 28 if (!empty($data['filter_date_added'])) { 29 $implode[] = "DATE(or.date_added) = DATE('" . $this->db->escape($data['filter_date_added']) . "')"; 30 } 31 32 if ($implode) { 33 $sql .= " WHERE " . implode(" AND ", $implode); 34 } 35 36 $sort_data = array( 37 'or.order_recurring_id', 38 'or.order_id', 39 'or.reference', 40 'customer', 41 'or.status', 42 'or.date_added' 43 ); 44 45 if (isset($data['sort']) && in_array($data['sort'], $sort_data)) { 46 $sql .= " ORDER BY " . $data['sort']; 47 } else { 48 $sql .= " ORDER BY or.order_recurring_id"; 49 } 50 51 if (isset($data['order']) && ($data['order'] == 'DESC')) { 52 $sql .= " DESC"; 53 } else { 54 $sql .= " ASC"; 55 } 56 57 if (isset($data['start']) || isset($data['limit'])) { 58 if ($data['start'] < 0) { 59 $data['start'] = 0; 60 } 61 62 if ($data['limit'] < 1) { 63 $data['limit'] = 20; 64 } 65 66 $sql .= " LIMIT " . (int)$data['start'] . "," . (int)$data['limit']; 67 } 68 69 $query = $this->db->query($sql); 70 71 return $query->rows; 72 } 73 74 public function getRecurring($order_recurring_id) { 75 $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "order_recurring WHERE order_recurring_id = " . (int)$order_recurring_id); 76 77 return $query->row; 78 } 79 80 public function getRecurringTransactions($order_recurring_id) { 81 $transactions = array(); 82 83 $query = $this->db->query("SELECT amount, type, date_added FROM " . DB_PREFIX . "order_recurring_transaction WHERE order_recurring_id = " . (int)$order_recurring_id . " ORDER BY date_added DESC"); 84 85 foreach ($query->rows as $result) { 86 switch ($result['type']) { 87 case 0: 88 $type = $this->language->get('text_transaction_date_added'); 89 break; 90 case 1: 91 $type = $this->language->get('text_transaction_payment'); 92 break; 93 case 2: 94 $type = $this->language->get('text_transaction_outstanding_payment'); 95 break; 96 case 3: 97 $type = $this->language->get('text_transaction_skipped'); 98 break; 99 case 4: 100 $type = $this->language->get('text_transaction_failed'); 101 break; 102 case 5: 103 $type = $this->language->get('text_transaction_cancelled'); 104 break; 105 case 6: 106 $type = $this->language->get('text_transaction_suspended'); 107 break; 108 case 7: 109 $type = $this->language->get('text_transaction_suspended_failed'); 110 break; 111 case 8: 112 $type = $this->language->get('text_transaction_outstanding_failed'); 113 break; 114 case 9: 115 $type = $this->language->get('text_transaction_expired'); 116 break; 117 default: 118 $type = ''; 119 break; 120 } 121 122 $transactions[] = array( 123 'date_added' => $result['date_added'], 124 'amount' => $result['amount'], 125 'type' => $type 126 ); 127 } 128 129 return $transactions; 130 } 131 132 private function getStatus($status) { 133 switch ($status) { 134 case 1: 135 $result = $this->language->get('text_status_inactive'); 136 break; 137 case 2: 138 $result = $this->language->get('text_status_active'); 139 break; 140 case 3: 141 $result = $this->language->get('text_status_suspended'); 142 break; 143 case 4: 144 $result = $this->language->get('text_status_cancelled'); 145 break; 146 case 5: 147 $result = $this->language->get('text_status_expired'); 148 break; 149 case 6: 150 $result = $this->language->get('text_status_pending'); 151 break; 152 default: 153 $result = ''; 154 break; 155 } 156 157 return $result; 158 } 159 160 public function getTotalRecurrings($data) { 161 $sql = "SELECT COUNT(*) AS `total` FROM `" . DB_PREFIX . "order_recurring` `or` LEFT JOIN `" . DB_PREFIX . "order` o ON (`or`.order_id = `o`.order_id)"; 162 163 $implode = array(); 164 165 if (!empty($data['filter_order_recurring_id'])) { 166 $implode[] .= "or.order_recurring_id = " . (int)$data['filter_order_recurring_id']; 167 } 168 169 if (!empty($data['filter_order_id'])) { 170 $implode[] .= "or.order_id = " . (int)$data['filter_order_id']; 171 } 172 173 if (!empty($data['filter_payment_reference'])) { 174 $implode[] .= " or.reference LIKE '" . $this->db->escape($data['filter_reference']) . "%'"; 175 } 176 177 if (!empty($data['filter_customer'])) { 178 $implode[] .= "CONCAT(o.firstname, ' ', o.lastname) LIKE '" . $this->db->escape($data['filter_customer']) . "%'"; 179 } 180 181 if (!empty($data['filter_status'])) { 182 $implode[] .= "or.status = " . (int)$data['filter_status']; 183 } 184 185 if (!empty($data['filter_date_added'])) { 186 $implode[] .= "DATE(or.date_added) = DATE('" . $this->db->escape($data['filter_date_added']) . "')"; 187 } 188 189 if ($implode) { 190 $sql .= " WHERE " . implode(" AND ", $implode); 191 } 192 193 $query = $this->db->query($sql); 194 195 return $query->row['total']; 196 } 197 }