shop.balmet.com

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README

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 }