shop.balmet.com

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

amazon_product.php (5442B)


      1 <?php
      2 class ModelExtensionOpenBayAmazonProduct extends Model {
      3 	public function setStatus($insertion_id, $status_string) {
      4 		$this->db->query("UPDATE `" . DB_PREFIX . "amazon_product` SET `status` = '" . $this->db->escape($status_string) . "' WHERE `insertion_id` = '" . $this->db->escape($insertion_id) . "'");
      5 	}
      6 
      7 	public function getProductRows($insertion_id) {
      8 		return $this->db->query("SELECT * FROM `" . DB_PREFIX . "amazon_product` WHERE `insertion_id` = '" . $this->db->escape($insertion_id) . "'")->rows;
      9 	}
     10 
     11 	public function getProduct($insertion_id) {
     12 		return $this->db->query("SELECT * FROM `" . DB_PREFIX . "amazon_product` WHERE `insertion_id` = '" . $this->db->escape($insertion_id) . "'")->row;
     13 	}
     14 
     15 	public function linkItems(array $data) {
     16 		foreach ($data as $amazon_sku => $product_id) {
     17 			$var_row = $this->db->query("SELECT `var` FROM `" . DB_PREFIX . "amazon_product` WHERE `sku` = '" . $this->db->escape($amazon_sku) . "' AND `product_id` = '" . (int)$product_id . "'")->row;
     18 			$var = isset($var_row['var']) ? $var_row['var'] : '';
     19 			$this->linkProduct($amazon_sku, $product_id, $var);
     20 		}
     21 	}
     22 
     23 	public function insertError($data) {
     24 		$this->db->query("INSERT INTO `" . DB_PREFIX . "amazon_product_error` SET `sku` = '" . $this->db->escape($data['sku']) . "', `error_code` = '" . (int)$data['error_code'] . "', `message` = '" . $this->db->escape($data['message']) . "', `insertion_id` = '" . $this->db->escape($data['insertion_id']) . "'");
     25 
     26 		$this->db->query("UPDATE `" . DB_PREFIX . "amazon_product`SET `status` = 'error' WHERE `sku` = '" . $this->db->escape($data['sku']) . "' AND `insertion_id` = '" . $this->db->escape($data['insertion_id']) . "'");
     27 	}
     28 
     29 	public function deleteErrors($insertion_id) {
     30 		$this->db->query("DELETE FROM `" . DB_PREFIX . "amazon_product_error` WHERE `insertion_id` = '" . $this->db->escape($insertion_id) . "'");
     31 	}
     32 
     33 	public function setSubmitError($insertion_id, $message) {
     34 		$sku_rows = $this->db->query("SELECT `sku` FROM `" . DB_PREFIX . "amazon_product` WHERE `insertion_id` = '" . $this->db->escape($insertion_id) . "'")->rows;
     35 
     36 		foreach ($sku_rows as $sku_row) {
     37 			$data = array(
     38 				'sku' => $sku_row['sku'],
     39 				'error_code' => '0',
     40 				'message' => $message,
     41 				'insertion_id' => $insertion_id
     42 			);
     43 			$this->insertError($data);
     44 		}
     45 	}
     46 
     47 	public function linkProduct($amazon_sku, $product_id, $var = '') {
     48 		$count = $this->db->query("SELECT COUNT(*) as 'count' FROM `" . DB_PREFIX . "amazon_product_link` WHERE `product_id` = '" . (int)$product_id . "' AND `amazon_sku` = '" . $this->db->escape($amazon_sku) . "' AND `var` = '" . $this->db->escape($var) . "' LIMIT 1")->row;
     49 		if ($count['count'] == 0) {
     50 			$this->db->query("INSERT INTO `" . DB_PREFIX . "amazon_product_link` SET `product_id` = '" . (int)$product_id . "', `amazon_sku` = '" . $this->db->escape($amazon_sku) . "', `var` = '" . $this->db->escape($var) . "'");
     51 		}
     52 	}
     53 
     54 	public function getProductQuantity($product_id, $var = '') {
     55 		$result = null;
     56 
     57 		if ($var !== '' && $this->openbay->addonLoad('openstock')) {
     58 			$this->load->model('tool/image');
     59 			$this->load->model('extension/module/openstock');
     60 			$option_stocks = $this->model_extension_module_openstock->getVariants($product_id);
     61 
     62 			$option = null;
     63 			foreach ($option_stocks as $option_iterator) {
     64 				if ($option_iterator['var'] === $var) {
     65 					$option = $option_iterator;
     66 					break;
     67 				}
     68 			}
     69 
     70 			if ($option != null) {
     71 				$result = $option['stock'];
     72 			}
     73 		} else {
     74 			$this->load->model('catalog/product');
     75 			$product_info = $this->model_catalog_product->getProduct($product_id);
     76 
     77 			if (isset($product_info['quantity'])) {
     78 				$result = $product_info['quantity'];
     79 			}
     80 		}
     81 		return $result;
     82 	}
     83 
     84 	public function updateSearch($results) {
     85 		foreach ($results as $result) {
     86 			$results_found = count($result['results']);
     87 
     88 			$data = json_encode($result['results']);
     89 
     90 			$this->db->query("
     91 				UPDATE " . DB_PREFIX . "amazon_product_search
     92 				SET matches = " . (int)$results_found . ",
     93 					`data` = '" . $this->db->escape($data) . "',
     94 					`status` = 'finished'
     95 				WHERE product_id = " . (int)$result['product_id'] . " AND
     96 					  marketplace = '" . $this->db->escape($result['marketplace']) . "'
     97 				LIMIT 1
     98 			");
     99 		}
    100 	}
    101 
    102 	public function addListingReport($data) {
    103 		$sql = "INSERT INTO " . DB_PREFIX . "amazon_listing_report (marketplace, sku, quantity, asin, price) VALUES ";
    104 
    105 		$sql_values = array();
    106 
    107 		foreach ($data as $product) {
    108 			$sql_values[] = " ('" . $this->db->escape($product['marketplace']) . "', '" . $this->db->escape($product['sku']) . "', " . (int)$product['quantity'] . ", '" . $this->db->escape($product['asin']) . "', " . (double)$product['price'] . ") ";
    109 		}
    110 
    111 		$sql .= implode(',', $sql_values);
    112 
    113 		$this->db->query($sql);
    114 	}
    115 
    116 	public function removeListingReportLock($marketplace) {
    117 		$marketplaces = $this->config->get('openbay_amazon_processing_listing_reports');
    118 
    119 		if ($marketplaces && ($key = array_search($marketplace, $marketplaces)) !== false) {
    120 			unset($marketplaces[$key]);
    121 
    122 			$this->config->set('openbay_amazon_processing_listing_reports', $marketplaces);
    123 
    124 			$this->db->query("UPDATE " . DB_PREFIX . "setting SET `value` = '" . $this->db->escape(serialize($marketplaces)) . "', serialized = 1 WHERE `key` = 'openbay_amazon_processing_listing_reports'");
    125 		}
    126 	}
    127 }